akfatimeline 1.0.0 → 1.0.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.
- package/.babelrc +4 -0
- package/dist/Timeline.js +1 -0
- package/package.json +19 -1
package/.babelrc
ADDED
package/dist/Timeline.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("react")):"function"==typeof define&&define.amd?define(["react"],n):"object"==typeof exports?exports.AkfaTimeline=n(require("react")):e.AkfaTimeline=n(e.react)}(this,(e=>(()=>{"use strict";var n={27:(e,n,t)=>{t.d(n,{A:()=>i});var r=t(601),o=t.n(r),a=t(314),l=t.n(a)()(o());l.push([e.id,'/* src/components/Timeline/Timeline.css */\n\n/* \n Temel: "sales sayfası" temasıyla uyumlu renkler, \n light vs. dark tanımları \n*/\n\n:root {\n /* Light Tema Varsayılan Renkler */\n --background-color: #f5f5f2; /* Açık tema arka plan */\n --text-color: #666; /* Açık tema yazı rengi */\n --border-color: #bbb; /* Daha yumuşak border */\n\n /* Header */\n --header-background-color: #f5f5f2; /* Üst header, tablo header */\n --header-text-color: #666;\n\n /* Resources */\n --resource-background-color: #f5f5f2; \n --resource-text-color: #666;\n --group-header-background-color: #dadada;\n\n /* Timeline */\n --timeline-header-background-color: #f5f5f2;\n --timeline-cell-border-color: #ccc;\n --timeline-event-background-color: #fff;\n --timeline-event-border-color: #666;\n --timeline-event-text-color: #666;\n\n /* Scrollbar */\n --scrollbar-thumb-background: #aaa;\n --scrollbar-thumb-hover-background: #888;\n\n --resource-width: 150px;\n --cell-height: 40px;\n --header-height: 60px;\n --time-slot-height: 20px;\n --container-height: 480px;\n\n --timeline-new-event-background-color: #ff5722;\n --timeline-new-event-text-color: #fff;\n\n --timeline-event-background-color: #ff7f50; \n --timeline-event-text-color: #fff;\n --timeline-event-border-color: #fff;\n\n --timeline-cell-selected-bg: rgba(25,118,210,0.2);\n\n user-select: none; /* Metin seçimini engelle */\n}\n\n/* Koyu Tema */\n.dark-mode {\n /* Koyu tema */\n --background-color: #16202a; /* Koyu tema arka plan */\n --text-color: #ddd; /* Koyu tema yazı rengi */\n --border-color: #444;\n\n --header-background-color: #16202a;\n --header-text-color: #bbb;\n\n --resource-background-color: #16202a;\n --resource-text-color: #bbb;\n --group-header-background-color: #0d141b;\n\n --timeline-header-background-color: #16202a;\n --timeline-cell-border-color: #444;\n --timeline-event-background-color: #2a2a2a;\n --timeline-event-border-color: #222;\n --timeline-event-text-color: #ddd;\n\n --scrollbar-thumb-background: #555;\n --scrollbar-thumb-hover-background: #888;\n\n --timeline-new-event-background-color: #a83e20;\n --timeline-new-event-text-color: #eee;\n\n --timeline-event-background-color: #a83e20;\n --timeline-event-text-color: #fff;\n --timeline-event-border-color: #222;\n\n --timeline-cell-selected-bg: rgba(76,175,80,0.2);\n}\n\n/* Genel Timeline Konteyner */\n.timeline-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n border: 1px solid var(--border-color);\n border-radius: 8px;\n overflow: hidden;\n box-sizing: border-box;\n background-color: var(--background-color);\n color: var(--text-color);\n}\n\n/* Master Header */\n.timeline-master-header {\n width: 100%;\n background-color: var(--header-background-color);\n color: var(--header-text-color);\n border-bottom: 1px solid var(--border-color);\n z-index: 10;\n padding: 10px;\n box-sizing: border-box;\n}\n\n/* Timeline Body */\n.timeline-body {\n display: flex;\n flex: 1;\n}\n\n/* Sol Kısım: Resources */\n.timeline-resources-container {\n width: var(--resource-width);\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--border-color);\n position: sticky;\n left: 0;\n top: var(--header-height);\n z-index: 2;\n background-color: var(--resource-background-color);\n overflow-y: auto;\n}\n\n/* Resources Header */\n.resources-header {\n background-color: var(--header-background-color);\n color: var(--resource-text-color);\n text-align: center;\n width: var(--resource-width);\n font-weight: bold;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: calc(var(--header-height) * 2); /* Üst üste iki header yüksekliği */\n border-right: 1px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* Grup Başlığı Hücreleri */\n.group-header-row {\n display: flex;\n height: var(--cell-height);\n background-color: var(--group-header-background-color);\n color: var(--resource-text-color);\n font-weight: bold;\n}\n\n.group-header-cell {\n flex: 1;\n border: 1px solid var(--border-color);\n text-align: center;\n background-color: var(--group-header-background-color);\n color: var(--resource-text-color);\n height: var(--cell-height);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Resource Grupları */\n.resource-group {\n display: flex;\n flex-direction: column;\n}\n\n/* Resource Grup Header */\n.resource-group-header {\n background-color: var(--group-header-background-color);\n color: var(--resource-text-color);\n font-weight: bold;\n height: var(--cell-height);\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 0px;\n cursor: pointer;\n border: 1px solid var(--border-color);\n}\n\n/* Resource Hücreleri */\n.resource-cell {\n padding: 0;\n text-align: left;\n background-color: var(--resource-background-color);\n color: var(--resource-text-color);\n height: var(--cell-height);\n display: flex;\n align-items: center;\n border: 0.3px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* Sağ Kısım: Timeline */\n.timeline-scrollable-container {\n flex: 1;\n overflow-x: auto;\n overflow-y: hidden;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n/* Header ve Content Wrapper */\n.timeline-header-content-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n/* Timeline Header */\n.timeline-header {\n display: flex;\n background-color: var(--timeline-header-background-color);\n color: var(--header-text-color);\n position: sticky;\n top: 0;\n z-index: 2;\n height: var(--header-height);\n overflow: hidden;\n box-sizing: border-box;\n}\n\n/* Timeline Content */\n.timeline-content {\n display: flex;\n flex-direction: column;\n}\n\n/* Grup Container */\n.group-container {\n display: flex;\n flex-direction: column;\n}\n\n/* Resource Satırları */\n.resource-row {\n display: flex;\n box-sizing: border-box;\n position: relative;\n height: var(--cell-height);\n border: 1px solid var(--border-color);\n margin-top: -1px;\n overflow: hidden;\n}\n\n/* Timeline Hücreleri */\n.timeline-cell {\n flex: 1;\n border: 1px solid var(--timeline-cell-border-color);\n height: 100%;\n box-sizing: border-box;\n}\n\n/* Hücre Seçili Durumu */\n.timeline-cell.selected {\n background-color: rgba(25, 118, 210, 0.2); /* satır içi/hover */\n}\n\n/* Event Stilleri */\n.event {\n position: absolute;\n background-color: var(--timeline-event-background-color);\n color: var(--timeline-event-text-color);\n font-size: 12px;\n padding: 2px 5px;\n border-radius: 4px;\n text-align: left;\n display: flex;\n flex-direction: column;\n justify-content: center;\n box-sizing: border-box;\n z-index: 10;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border: 1px solid var(--timeline-event-border-color);\n cursor: pointer;\n}\n\n/* Event Time Stili */\n.event-time {\n font-size: 10px;\n margin-top: 2px;\n}\n\n/* Scrollbar için */\n.timeline-scrollable-container::-webkit-scrollbar {\n height: 10px;\n}\n\n.timeline-scrollable-container::-webkit-scrollbar-thumb {\n background: var(--scrollbar-thumb-background);\n border-radius: 5px;\n}\n\n.timeline-scrollable-container::-webkit-scrollbar-thumb:hover {\n background: var(--scrollbar-thumb-hover-background);\n}\n\n.resources-header {\n background-color: var(--header-background-color);\n color: var(--resource-text-color);\n text-align: center;\n width: var(--resource-width);\n font-weight: bold;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 80px;\n border-right: 1px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* TimelineHeader Container */\n.timeline-header-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n/* Ay + Yıl satırı */\n.timeline-header-month-row {\n display: flex;\n background-color: var(--header-background-color);\n color: var(--header-text-color);\n font-weight: bold;\n font-size: 16px;\n height: 40px;\n line-height: 40px;\n border-bottom: 1px solid var(--border-color);\n}\n\n/* Ay + Yıl hücreleri */\n.timeline-header-month-cell {\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n /* border-right => dynamic, inline style if needed */\n box-sizing: border-box;\n}\n\n/* Günlük Hücreler (tarih satırı) */\n.timeline-header-day-row {\n display: flex;\n background-color: var(--timeline-header-background-color);\n color: var(--header-text-color);\n /* border-bottom: 1px solid var(--border-color); if needed */\n}\n\n/* Günlük hücre (her gün) */\n.timeline-header-day-cell {\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n box-sizing: border-box;\n}\n\n\n/* src/components/Timeline/Timeline.css */\n/* Ekleme: MasterHeader stili */\n\n/* Kapsayıcı */\n.master-header-container {\n display: flex;\n align-items: center;\n padding: 10px;\n\n background-color: var(--header-background-color);\n color: var(--header-text-color);\n\n /* eğer border vs. istersen\n border-bottom: 1px solid var(--border-color);\n */\n}\n\n/* Butonlar */\n.master-header-btn {\n background-color: transparent;\n color: var(--header-text-color);\n border: 1px solid var(--border-color);\n border-radius: 4px;\n padding: 6px 12px;\n margin-right: 10px;\n cursor: pointer;\n font-size: 14px;\n transition: background-color 0.2s ease, color 0.2s ease;\n}\n\n.master-header-btn:hover {\n background-color: rgba(25, 118, 210, 0.2); /* Light tema hover */\n}\n\n.dark-mode .master-header-btn:hover {\n background-color: rgba(76, 175, 80, 0.2); /* Koyu tema hover */\n}\n\n.master-header-btn:focus {\n outline: none;\n}\n\n/* Select */\n.master-header-select {\n margin-left: 10px;\n background-color: transparent;\n color: var(--header-text-color);\n border: 1px solid var(--border-color);\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 14px;\n cursor: pointer;\n}\n\n.master-header-select:focus {\n outline: none;\n}\n\n\n/* Container */\n.timeline-content-container {\n position: relative;\n width: 100%;\n height: auto; /* or as needed */\n display: flex;\n flex-direction: column;\n}\n\n/* Group container */\n.timeline-group-container {\n margin-bottom: 0px;\n display: flex;\n flex-direction: column;\n}\n\n/* Group header row */\n.timeline-group-header-row {\n display: flex;\n margin-top: -0.08rem;\n}\n\n.timeline-group-header-cell {\n flex: 1;\n height: 2.58rem;\n background-color: var(--group-header-background-color);\n border: 1px solid var(--border-color);\n \n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Resource row */\n.timeline-resource-row {\n display: flex;\n position: relative;\n height: var(--cell-height, 40px);\n border: 1px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* Each day cell */\n.timeline-cell {\n flex: 1;\n height: 100%;\n position: relative;\n border-left: 1px solid var(--border-color);\n border-right: 1px solid var(--border-color);\n box-sizing: border-box;\n cursor: pointer;\n}\n\n/* "selected" day cell */\n.timeline-cell.selected {\n background-color: var(--timeline-cell-selected-bg, rgba(25,118,210,0.2));\n}\n\n/* Event */\n.timeline-event {\n position: absolute;\n background-color: var(--timeline-event-background-color, #0093ce);\n color: var(--timeline-event-text-color, #fff);\n font-size: 14px;\n padding: 5px;\n border-radius: 20px;\n box-sizing: border-box;\n z-index: 10;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border: 1px solid var(--timeline-event-border-color, #fff);\n top: 5px; /* or a variable offset if you want */\n /* "left" and "width" are inline from JS */\n}\n\n/* Extend handle */\n.timeline-event-extend-handle {\n position: absolute;\n right: 0;\n top: 0;\n width: 10px;\n height: 100%;\n background-color: rgba(0,0,0,0.2);\n cursor: col-resize;\n z-index: 20;\n}\n\n/* Temp event (while creating) */\n.timeline-temp-event {\n position: absolute;\n background-color: var(--timeline-new-event-background-color, #0093ce);\n color: var(--timeline-new-event-text-color, #fff);\n opacity: 0.7;\n border-radius: 20px;\n z-index: 9;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n /* "left"/"width" from JS: " ...calculatePosition(tempEvent, dates)" */\n top: 5px;\n}\n',""]);const i=l},314:e=>{e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t="",r=void 0!==n[5];return n[4]&&(t+="@supports (".concat(n[4],") {")),n[2]&&(t+="@media ".concat(n[2]," {")),r&&(t+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),t+=e(n),r&&(t+="}"),n[2]&&(t+="}"),n[4]&&(t+="}"),t})).join("")},n.i=function(e,t,r,o,a){"string"==typeof e&&(e=[[null,e,void 0]]);var l={};if(r)for(var i=0;i<this.length;i++){var c=this[i][0];null!=c&&(l[c]=!0)}for(var d=0;d<e.length;d++){var s=[].concat(e[d]);r&&l[s[0]]||(void 0!==a&&(void 0===s[5]||(s[1]="@layer".concat(s[5].length>0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=a),t&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=t):s[2]=t),o&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=o):s[4]="".concat(o)),n.push(s))}},n}},601:e=>{e.exports=function(e){return e[1]}},72:e=>{var n=[];function t(e){for(var t=-1,r=0;r<n.length;r++)if(n[r].identifier===e){t=r;break}return t}function r(e,r){for(var a={},l=[],i=0;i<e.length;i++){var c=e[i],d=r.base?c[0]+r.base:c[0],s=a[d]||0,u="".concat(d," ").concat(s);a[d]=s+1;var p=t(u),f={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==p)n[p].references++,n[p].updater(f);else{var m=o(f,r);r.byIndex=i,n.splice(i,0,{identifier:u,updater:m,references:1})}l.push(u)}return l}function o(e,n){var t=n.domAPI(n);return t.update(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap&&n.supports===e.supports&&n.layer===e.layer)return;t.update(e=n)}else t.remove()}}e.exports=function(e,o){var a=r(e=e||[],o=o||{});return function(e){e=e||[];for(var l=0;l<a.length;l++){var i=t(a[l]);n[i].references--}for(var c=r(e,o),d=0;d<a.length;d++){var s=t(a[d]);0===n[s].references&&(n[s].updater(),n.splice(s,1))}a=c}}},659:e=>{var n={};e.exports=function(e,t){var r=function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}},540:e=>{e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},56:(e,n,t)=>{e.exports=function(e){var n=t.nc;n&&e.setAttribute("nonce",n)}},825:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=e.insertStyleElement(e);return{update:function(t){!function(e,n,t){var r="";t.supports&&(r+="@supports (".concat(t.supports,") {")),t.media&&(r+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(r+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),r+=t.css,o&&(r+="}"),t.media&&(r+="}"),t.supports&&(r+="}");var a=t.sourceMap;a&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),n.styleTagTransform(r,e,n.options)}(n,e,t)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)}}}},113:e=>{e.exports=function(e,n){if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}},155:n=>{n.exports=e}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={id:e,exports:{}};return n[e](a,a.exports,r),a.exports}r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nc=void 0;var o={};r.r(o),r.d(o,{default:()=>X});var a=r(155),l=r.n(a),i=r(72),c=r.n(i),d=r(825),s=r.n(d),u=r(659),p=r.n(u),f=r(56),m=r.n(f),g=r(540),b=r.n(g),v=r(113),h=r.n(v),x=r(27),y={};y.styleTagTransform=h(),y.setAttributes=m(),y.insert=p().bind(null,"head"),y.domAPI=s(),y.insertStyleElement=b(),c()(x.A,y),x.A&&x.A.locals&&x.A.locals;const w=e=>{let{onToday:n,onAdvance:t,onRetreat:r,onMonthAdvance:o,onMonthRetreat:a,dayRange:i,setDayRange:c,isDarkMode:d,toggleDarkMode:s}=e;return l().createElement("div",{className:"master-header-container"},l().createElement("button",{className:"master-header-btn",onClick:n},"Today"),l().createElement("button",{className:"master-header-btn",onClick:a},"1 Ay Geri"),l().createElement("button",{className:"master-header-btn",onClick:r},"5 Gün Geri"),l().createElement("button",{className:"master-header-btn",onClick:t},"5 Gün İleri"),l().createElement("button",{className:"master-header-btn",onClick:o},"1 Ay İleri"),l().createElement("select",{className:"master-header-select",value:i,onChange:e=>c(parseInt(e.target.value))},l().createElement("option",{value:30},"30 Gün"),l().createElement("option",{value:60},"60 Gün"),l().createElement("option",{value:90},"90 Gün")),l().createElement("button",{className:"master-header-btn",onClick:s},d?"Light Mode":"Dark Mode"))},D=e=>{let{content:n}=e;return l().createElement("div",{className:"resources-header"},n)},E=e=>{let{groupedResources:n=[],collapsedGroups:t={},toggleGroupCollapse:r,resourceSettings:o={showIdAsName:!1,isGrouped:!0,isCollapsible:!0}}=e;const{showIdAsName:a,isGrouped:i,isCollapsible:c}=o;return l().createElement("div",{className:"timeline-resources"},i?n.map(((e,n)=>l().createElement("div",{key:n,className:"resource-group"},l().createElement("div",{className:"resource-group-header",onClick:()=>c&&r(e.groupName)},e.groupName," ",c&&(t[e.groupName]?"▲":"▼")),!t[e.groupName]&&e.resources.map(((e,n)=>l().createElement("div",{key:n,className:"resource-cell"},a?e.id:e.name||e.id)))))):n.flatMap((e=>e.resources)).map(((e,n)=>l().createElement("div",{key:n,className:"resource-cell"},a?e.id:e.name||e.id))))},k=e=>{let{dates:n,monthHeaders:t}=e;return l().createElement("div",{className:"timeline-header-container"},l().createElement("div",{className:"timeline-header-month-row"},t.map(((e,n)=>l().createElement("div",{key:n,className:"timeline-header-month-cell",style:{flex:e.endIndex-e.startIndex+1,borderRight:n<t.length-1?"1px solid var(--border-color)":"none"}},e.monthName," ",e.year)))),l().createElement("div",{className:"timeline-header-day-row"},n.map(((e,t)=>l().createElement("div",{key:t,className:"timeline-header-day-cell",style:{flex:1,borderRight:t<n.length-1?"1px solid var(--border-color)":"none"}},e.display)))))},S=e=>{if(e instanceof Date)return e;if("string"==typeof e){const[n,t,r]=e.split("/").map(Number);return new Date(r,t-1,n)}return"object"==typeof e&&e.fullDate instanceof Date?new Date(e.fullDate.getTime()+6e4*e.fullDate.getTimezoneOffset()):(console.error("parseDate received invalid input:",e),new Date)};function O(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function j(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?O(Object(t),!0).forEach((function(n){I(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):O(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function I(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const P=e=>{let{todayIndex:n,totalDays:t}=e;return n<0||n>=t?(console.log("Indicator not visible: Out of bounds"),null):(console.log("todayIndex:",n),console.log("totalDays:",t),l().createElement("div",{style:{position:"absolute",top:0,left:"calc(".concat((n+.5)/t," * 100%)"),width:"2px",height:"100%",backgroundColor:"transparent",zIndex:5,borderStyle:"dashed",borderWidth:"0 0 0 2px",borderColor:"red"}}))};function C(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function T(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?C(Object(t),!0).forEach((function(n){N(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):C(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function N(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function M(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function z(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?M(Object(t),!0).forEach((function(n){R(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):M(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function R(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const A=e=>{let{groupedResources:n,dates:t,collapsedGroups:r,events:o,setEvents:i,onEventClick:c,todayIndex:d,indicatorOn:s,resourceSettings:u,setDropInfo:p,eventsDragOn:f=!0,eventsExtendOn:m=!0,createNewEventOn:g=!0,onDragInfo:b,onExtendInfo:v,onCreateEventInfo:h,onEventRightClick:x}=e;const y=(0,a.useRef)(null),{isDragging:w,dragStart:D,dragEnd:E}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const[n,t]=(0,a.useState)(!1),[r,o]=(0,a.useState)(null),[l,i]=(0,a.useState)(null),[c,d]=(0,a.useState)(e),s=()=>{t(!1),o(null),i(null)};return{events:c,isDragging:n,dragStart:r,dragEnd:l,startDrag:(e,n)=>{t(!0),o({resourceId:e,date:n}),i({resourceId:e,date:n})},updateDrag:(e,t)=>{n&&i({resourceId:e,date:t})},endDrag:e=>{if(!n||!r||!l)return;if(r.resourceId!==l.resourceId)return void s();const t=e.findIndex((e=>S(e.fullDate).toDateString()===S(r.date.fullDate).toDateString())),o=e.findIndex((e=>S(e.fullDate).toDateString()===S(l.date.fullDate).toDateString()));if(-1===t||-1===o)return void s();const a=Math.min(t,o),i=Math.max(t,o),c=e[a].fullDate,u=e[i].fullDate,p={id:Date.now(),title:"Yeni Etkinlik",resourceId:r.resourceId,startDate:c,endDate:u,color:"#ff7f50"};d((e=>[...e,p])),s()},setEvents:d}}(o,i),{handleDragStart:k,handleDragOver:O,handleDrop:I,handleDragEnd:C}=((e,n,t)=>{const[r,o]=(0,a.useState)(null),[l,i]=(0,a.useState)(0),[c,d]=(0,a.useState)(null);return{handleDragStart:(n,t)=>{if("extend"===c)return;n.stopPropagation();const r=n.target.getBoundingClientRect(),a=n.clientX-r.left;o(t),i(a),d("drag");const l=e.find((e=>e.id===t));l&&(console.log("Dragging Event Start:",l.startDate),console.log("Dragging Event End:",l.endDate))},handleExtendStart:(e,n)=>{e.stopPropagation(),o(n),d("extend")},handleDragOver:e=>{e.preventDefault()},handleDrop:(a,s,u)=>{if(a.preventDefault(),"drag"===c&&r){const o=e.find((e=>e.id===r));if(o){const e=o.endDate-o.startDate,i=a.target.offsetWidth||30,c=Math.floor(l/i),d=new Date(u.getTime()-24*c*60*60*1e3),p=new Date(d.getTime()+e);console.log("New Start Date:",d),console.log("New End Date:",p),n((e=>e.map((e=>e.id===r?j(j({},e),{},{resourceId:s,startDate:d,endDate:p}):e)))),t&&t({id:r,newResourceId:s,newStartDate:d,newEndDate:p})}}o(null),i(0),d(null)},handleExtend:(e,t,a)=>{"extend"===c&&r===t&&(n((e=>e.map((e=>e.id===t?j(j({},e),{},{endDate:a}):e)))),console.log("Extended Event ID:",t,"New End Date:",a),o(null),d(null))},handleDragEnd:()=>{o(null),i(0),d(null)}}})(o,i,p),{extendEvent:N}=((e,n)=>({extendEvent:(0,a.useCallback)(((e,t)=>{n((n=>n.map((n=>n.id===e?T(T({},n),{},{endDate:t}):n))))}),[n])}))(0,i),[M,R]=(0,a.useState)(null),[A,G]=(0,a.useState)(null),[H,L]=(0,a.useState)(null),[B,X]=(0,a.useState)(null),[K,V]=(0,a.useState)(!1),[W,Y]=(0,a.useState)(null),[F,J]=(0,a.useState)(null),[_,q]=(0,a.useState)({top:0,left:0}),U=t.length;(0,a.useEffect)((()=>{if(!g)return;if(!K)return;if("extend"===M)return void console.log(">>> 'extend' mode, skip new event creation");const e=e=>{if(!K||!W)return;const n=document.elementFromPoint(e.clientX,e.clientY),t=(null==n?void 0:n.offsetWidth)||30,r=W.startX||e.clientX,o=e.clientX-r,a=Math.max(1,Math.floor(o/t)),l=new Date(W.startDate.getTime());l.setDate(l.getDate()+a),Y(z(z({},W),{},{endDate:l,startX:r,title:"".concat(a," Gece")}))},n=()=>{K&&W&&(i([...o,W]),h&&h(W)),Y(null),V(!1)};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n)}}),[g,K,M,W,o,h,i]),(0,a.useEffect)((()=>{if("extend"===M){const e=e=>(e=>{if("extend"!==M||!A)return;if(!m)return;const n=e.clientX-(null!=B?B:0),t=Math.floor(n/30),r=new Date((null!=H?H:new Date).getTime());r.setDate(r.getDate()+t),console.log(">>> Extending ID:",A.id,"=>",r),i((e=>e.map((e=>e.id===A.id?z(z({},e),{},{endDate:r}):e))))})(e),n=()=>(()=>{if(console.log(">>> Extend finished ID:",null==A?void 0:A.id),v&&A){const e=o.find((e=>e.id===A.id));e&&v({eventId:A.id,newEndDate:e.endDate})}R(null),G(null),L(null),X(null)})();return document.addEventListener("mousemove",e),document.addEventListener("mouseup",n),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n)}}}),[M,A,m,H,B]);const $=(e,n)=>{if(!D||!E)return!1;if(e!==D.resourceId)return!1;const r=t.findIndex((e=>S(e.fullDate).getTime()===S(D.date).getTime())),o=t.findIndex((e=>S(e.fullDate).getTime()===S(E.date).getTime())),a=t.findIndex((e=>S(e.fullDate).getTime()===S(n.fullDate).getTime()));return-1!==r&&-1!==o&&-1!==a&&a>=Math.min(r,o)&&a<=Math.max(r,o)},Q=(e,n)=>{const t=S(e.startDate),r=S(e.endDate),o=n.findIndex((e=>S(e.fullDate).toDateString()===t.toDateString())),a=n.findIndex((e=>S(e.fullDate).toDateString()===r.toDateString())),l=n.length;if(o<0&&a<0)return{isVisible:!1,left:0,width:0,isPartialStart:!1,isPartialEnd:!1};if(o>=l&&a>=l)return{isVisible:!1,left:0,width:0,isPartialStart:!1,isPartialEnd:!1};const i=o<0,c=a>=l,d=(Math.max(o,0)+(i?0:.5))/l*100,s=(Math.min(a,l-1)+(c?1:.5))/l*100-d;return{isVisible:!0,left:"".concat(d,"%"),width:"".concat(s,"%"),isPartialStart:i,isPartialEnd:c}};return l().createElement("div",{ref:y,className:"timeline-content-container"},s&&l().createElement(P,{todayIndex:d,totalDays:U}),n.map(((e,n)=>l().createElement("div",{key:n,className:"timeline-group-container"},u.isGrouped&&l().createElement("div",{className:"timeline-group-header-row"},t.map(((e,t)=>l().createElement("div",{key:"group-header-".concat(n,"-").concat(t),className:"timeline-group-header-cell"})))),!r[e.groupName]&&e.resources.map(((e,r)=>{const a=o.filter((n=>n.resourceId===e.id));return l().createElement("div",{key:e.id,className:"timeline-resource-row"},a.map((e=>{const{isVisible:n,left:r,width:o,isPartialStart:a,isPartialEnd:i}=Q(e,t);return n?l().createElement("div",{key:e.id,className:"timeline-event",draggable:"extend"!==M&&f,onDragStart:n=>{"extend"!==M?((e,n)=>{f?k(e,n):e.preventDefault()})(n,e.id):n.preventDefault()},onDragEnd:e=>{"extend"!==M?(e=>{f?C():e.preventDefault()})(e):e.preventDefault()},onContextMenu:n=>((e,n)=>{n.preventDefault(),x&&x(e,n)})(e,n),onClick:n=>((e,n)=>{n.stopPropagation(),c&&c(e,n);const t=n.currentTarget;if(t){const n=t.getBoundingClientRect();q({top:n.top+window.scrollY,left:n.left+n.width/2+window.scrollX}),J(e)}})(e,n),style:{left:r,width:o,top:"5px",borderTopLeftRadius:a?"0px":"20px",borderBottomLeftRadius:a?"0px":"20px",borderTopRightRadius:i?"0px":"20px",borderBottomRightRadius:i?"0px":"20px",cursor:"extend"===M?"col-resize":"grab"}},e.title,m&&l().createElement("div",{className:"timeline-event-extend-handle",onMouseDown:n=>{n.stopPropagation(),((e,n)=>{m&&(e.stopPropagation(),console.log(">>> Extend start ID:",n.id),R("extend"),G(n),L(n.endDate),X(e.clientX))})(n,e)}})):null})),W&&W.resourceId===e.id&&l().createElement("div",{className:"timeline-temp-event",style:z(z({},Q(W,t)),{},{top:"5px"})},W.title),t.map(((t,o)=>l().createElement("div",{key:"cell-".concat(n,"-").concat(r,"-").concat(o),className:"timeline-cell ".concat($(e.id,t)?"selected":""),"data-date":JSON.stringify(t),"data-resource-id":e.id,onMouseDown:()=>((e,n)=>{if(!g)return;const t=S(n.fullDate),r={id:Date.now(),title:"1 Gece",startDate:t,endDate:new Date(t.getTime()+864e5),resourceId:e,color:""};Y(r),V(!0)})(e.id,t),onDragOver:e=>O(e),onDrop:n=>I(n,e.id,S(t.fullDate))}))))}))))),F&&l().createElement("div",{style:{position:"absolute",top:_.top,left:_.left,backgroundColor:"#333",color:"#fff",padding:"5px",borderRadius:"4px",zIndex:999}},l().createElement("button",{onClick:()=>{J(null)}},"X"),F.title))},G=e=>{let{event:n,position:t={top:0,left:0},onClose:r,onEdit:o,onDelete:a}=e;if(!n)return null;const{top:i,left:c}=t,d=(e=>{switch(e){case"Confirmed":return"#4caf50";case"Pending":return"#ff9800";case"Cancelled":return"#f44336";case"Completed":return"#2196f3";default:return"#9e9e9e"}})(n.status);return l().createElement("div",{style:{position:"absolute",top:i-30,left:c+70,transform:"translateX(-50%)",backgroundColor:"#ffffff",color:"#333333",borderRadius:"10px",boxShadow:"0 8px 16px rgba(0, 0, 0, 0.2)",fontSize:"16px",zIndex:1e3,pointerEvents:"auto",whiteSpace:"normal",maxWidth:"400px",width:"100%",transition:"opacity 0.3s ease, transform 0.3s ease"}},r&&l().createElement("button",{onClick:r,style:{position:"absolute",top:"10px",right:"15px",background:"transparent",border:"none",color:"#aaa",fontSize:"24px",cursor:"pointer",transition:"color 0.2s"},"aria-label":"Kapat",onMouseOver:e=>e.target.style.color="#000",onMouseOut:e=>e.target.style.color="#aaa"},"×"),l().createElement("div",{style:{backgroundColor:d,color:"#ffffff",padding:"15px 20px",borderTopLeftRadius:"10px",borderTopRightRadius:"10px",display:"flex",flexDirection:"column",gap:"5px"}},l().createElement("div",{style:{fontWeight:"bold",fontSize:"18px"}},n.title),l().createElement("div",{style:{fontSize:"14px"}},"Rezervasyon ID: ",n.reservationId)),l().createElement("div",{style:{padding:"20px",display:"flex",flexDirection:"column",gap:"15px"}},Array.isArray(n.guestNames)&&l().createElement("div",null,l().createElement("strong",null,"Misafirler:")," ",n.guestNames.join(", ")),l().createElement("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"10px"}},l().createElement("div",null,l().createElement("strong",null,"Giriş:")," ",new Date(n.startDate).toLocaleDateString()),l().createElement("div",null,l().createElement("strong",null,"Çıkış:")," ",new Date(n.endDate).toLocaleDateString())),(void 0!==n.totalAmount||void 0!==n.amountPaid)&&l().createElement("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"10px"}},void 0!==n.amountPaid&&l().createElement("div",null,l().createElement("strong",null,"Ödenen Miktar:")," $",n.amountPaid.toFixed(2)),void 0!==n.totalAmount&&l().createElement("div",null,l().createElement("strong",null,"Toplam Borç:")," $",n.totalAmount.toFixed(2))),n.status&&l().createElement("div",null,l().createElement("strong",null,"Durum:")," ",n.status),n.note&&l().createElement("div",null,l().createElement("strong",null,"Not:")," ",n.note)),l().createElement("div",{style:{padding:"15px 20px",borderTop:"1px solid #ddd",display:"flex",justifyContent:"flex-end",gap:"10px",borderBottomLeftRadius:"10px",borderBottomRightRadius:"10px"}},o&&l().createElement("button",{onClick:()=>o(n),style:{padding:"8px 16px",backgroundColor:"#2196f3",color:"#ffffff",border:"none",borderRadius:"4px",cursor:"pointer",fontSize:"14px",display:"flex",alignItems:"center",gap:"5px",transition:"background-color 0.2s"},onMouseOver:e=>e.target.style.backgroundColor="#1976d2",onMouseOut:e=>e.target.style.backgroundColor="#2196f3"},l().createElement("span",{role:"img","aria-label":"Düzenle"},"✏️"),"Düzenle"),a&&l().createElement("button",{onClick:()=>a(n.id),style:{padding:"8px 16px",backgroundColor:"#f44336",color:"#ffffff",border:"none",borderRadius:"4px",cursor:"pointer",fontSize:"14px",display:"flex",alignItems:"center",gap:"5px",transition:"background-color 0.2s"},onMouseOver:e=>e.target.style.backgroundColor="#d32f2f",onMouseOut:e=>e.target.style.backgroundColor="#f44336"},l().createElement("span",{role:"img","aria-label":"Sil"},"🗑️"),"Sil")))};function H(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function L(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?H(Object(t),!0).forEach((function(n){B(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):H(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function B(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const X=e=>{let{resources:n,programDate:t=null,events:r=[],resourceSettings:o={showIdAsName:!1,isGrouped:!0,isCollapsible:!0},indicatorOn:i=!1,dropInfo:c,setDropInfo:d,masterHeaderView:s=!0,resourceHeaderContent:u="Akfa Timeline",eventsDragOn:p=!0,eventsExtendOn:f=!0,createNewEventOn:m=!0,onDragInfo:g,onExtendInfo:b,onCreateEventInfo:v,onEventClick:h,onEventRightClick:x,horizontalScrollOn:y=!1}=e;const S=(()=>{const e=["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],n=["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],t=[],r=[];for(let o=2020;o<=2030;o++)for(let a=1;a<=12;a++){const l=new Date(o,a,0).getDate(),i=t.length;for(let n=1;n<=l;n++){const r=new Date(o,a-1,n),l=e[r.getDay()];t.push({fullDate:r,display:"".concat(n," ").concat(l)})}const c=t.length-1;r.push({monthName:n[a-1],year:o,startIndex:i,endIndex:c,totalDays:c-i+1})}return{dates:t,monthHeaders:r}})(),{dates:O,monthHeaders:j}=S,[I,P]=(0,a.useState)({}),[C,T]=(0,a.useState)((()=>{const e=t?new Date(t):new Date;return e.setDate(e.getDate()-3),e})),[N,M]=(0,a.useState)(r),[z,R]=(0,a.useState)(null),[H,B]=(0,a.useState)({top:0,left:0}),[X,K]=(0,a.useState)(30),[V,W]=(0,a.useState)(!1),Y=56.95*X,F=O.findIndex((e=>e.fullDate>=C)),J=F+X,_=-1!==F?O.slice(F,Math.min(J,O.length)):[],q=t?new Date(t):new Date,U=_.findIndex((e=>new Date(e.fullDate).toDateString()===q.toDateString())),$=_.length,Q=e=>{P((n=>L(L({},n),{},{[e]:!n[e]})))};(0,a.useEffect)((()=>{document.body.classList.toggle("dark-mode",V)}),[V]);const Z=j.map((e=>{const n=Math.max(e.startIndex,F),t=Math.min(e.endIndex,J-1);return L(L({},e),{},{startIndex:n,endIndex:t})})).filter((e=>e.startIndex<=e.endIndex));return l().createElement("div",{className:"timeline-container ".concat(V?"dark-mode":"")},s&&l().createElement("div",{className:"timeline-master-header"},l().createElement(w,{onToday:()=>{const e=t?new Date(t):new Date;e.setDate(e.getDate()-3),T(e)},onAdvance:()=>T((e=>new Date(e.getTime()+432e6))),onRetreat:()=>T((e=>new Date(e.getTime()-432e6))),onMonthAdvance:()=>T((e=>{const n=new Date(e);return n.setMonth(n.getMonth()+1),n})),onMonthRetreat:()=>T((e=>{const n=new Date(e);return n.setMonth(n.getMonth()-1),n})),dayRange:X,setDayRange:K,isDarkMode:V,toggleDarkMode:()=>{W((e=>!e))}})),l().createElement("div",{className:"timeline-body"},l().createElement("div",{className:"timeline-resources-container"},l().createElement(D,{content:u}),l().createElement(E,{groupedResources:n,toggleGroupCollapse:Q,collapsedGroups:I,resourceSettings:o})),l().createElement("div",{className:"timeline-scrollable-container",style:{overflowX:y?"auto":"hidden"}},l().createElement("div",{className:"timeline-header-content-wrapper",style:{width:y?"".concat(Y,"px"):"100%"}},l().createElement(k,{dates:_,monthHeaders:Z}),l().createElement(A,{groupedResources:n,dates:_,collapsedGroups:I,events:N,setEvents:M,onEventClick:(e,n)=>{h&&h(e,n);const t=n.currentTarget;if(t){const n=t.getBoundingClientRect();B({top:n.top+window.scrollY,left:n.left+n.width/2+window.scrollX}),R(e)}},todayIndex:U,totalDays:$,indicatorOn:i,resourceSettings:o,toggleGroupCollapse:Q,setDropInfo:d,eventsDragOn:p,eventsExtendOn:f,createNewEventOn:m,onDragInfo:g,onExtendInfo:b,onCreateEventInfo:v,onEventRightClick:x}),z&&l().createElement(G,{event:z,position:H,onClose:()=>{R(null)},onDelete:e=>M((n=>n.filter((n=>n.id!==e))))})))))};return o})()));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akfatimeline",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "A customizable timeline component for React applications",
|
|
5
5
|
"main": "dist/Timeline.js",
|
|
6
6
|
"module": "dist/Timeline.js",
|
|
@@ -46,5 +46,23 @@
|
|
|
46
46
|
"last 1 firefox version",
|
|
47
47
|
"last 1 safari version"
|
|
48
48
|
]
|
|
49
|
+
},
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "https://github.com/AKFAPLUS/akfatimeline.git"
|
|
53
|
+
},
|
|
54
|
+
"bugs": {
|
|
55
|
+
"url": "https://github.com/AKFAPLUS/akfatimeline/issues"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/AKFAPLUS/akfatimeline#readme",
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@babel/core": "^7.26.0",
|
|
60
|
+
"@babel/preset-env": "^7.26.0",
|
|
61
|
+
"@babel/preset-react": "^7.26.3",
|
|
62
|
+
"babel-loader": "^9.2.1",
|
|
63
|
+
"css-loader": "^7.1.2",
|
|
64
|
+
"style-loader": "^4.0.0",
|
|
65
|
+
"webpack": "^5.97.1",
|
|
66
|
+
"webpack-cli": "^6.0.1"
|
|
49
67
|
}
|
|
50
68
|
}
|