@app-studio/web 0.9.36 → 0.9.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/web.esm.js CHANGED
@@ -7604,7 +7604,12 @@ var cloneColumns = inputColumns => inputColumns.map(column => Object.assign({},
7604
7604
  var useKanbanBoardState = _ref => {
7605
7605
  var {
7606
7606
  columns: initialColumns,
7607
- onChange
7607
+ onChange,
7608
+ onCardMove,
7609
+ onCardCreate: onCardCreateProp,
7610
+ onCardDelete: onCardDeleteProp,
7611
+ onCardTitleChange: onCardTitleChangeProp,
7612
+ onCardDescriptionChange: onCardDescriptionChangeProp
7608
7613
  } = _ref;
7609
7614
  var [columns, setColumns] = useState(initialColumns);
7610
7615
  var [draggedCardId, setDraggedCardId] = useState(null);
@@ -7681,11 +7686,16 @@ var useKanbanBoardState = _ref => {
7681
7686
  cardId
7682
7687
  };
7683
7688
  if (options != null && options.shouldCommit) {
7689
+ var originalSourceColumn = prevColumns.find(c => c.id === sourceColumnId);
7690
+ var originalTargetColumn = prevColumns.find(c => c.id === targetColumnId);
7691
+ if (card && originalSourceColumn && originalTargetColumn) {
7692
+ onCardMove == null || onCardMove(card, originalSourceColumn, originalTargetColumn);
7693
+ }
7684
7694
  onChange == null || onChange(updatedColumns);
7685
7695
  }
7686
7696
  return updatedColumns;
7687
7697
  });
7688
- }, [onChange]);
7698
+ }, [onChange, onCardMove]);
7689
7699
  var handleCardDragStart = useCallback((columnId, cardId, event) => {
7690
7700
  dragStateRef.current = {
7691
7701
  columnId,
@@ -7744,6 +7754,62 @@ var useKanbanBoardState = _ref => {
7744
7754
  shouldCommit: true
7745
7755
  });
7746
7756
  }, [applyMove, getRelativeDropPosition]);
7757
+ var handleCardCreate = useCallback((card, column) => {
7758
+ if (onCardCreateProp) {
7759
+ onCardCreateProp(card, column);
7760
+ return;
7761
+ }
7762
+ setColumns(prevColumns => {
7763
+ var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
7764
+ cards: [...col.cards, card]
7765
+ }) : col);
7766
+ onChange == null || onChange(updatedColumns);
7767
+ return updatedColumns;
7768
+ });
7769
+ }, [onChange, onCardCreateProp]);
7770
+ var handleCardDelete = useCallback((card, column) => {
7771
+ if (onCardDeleteProp) {
7772
+ onCardDeleteProp(card, column);
7773
+ return;
7774
+ }
7775
+ setColumns(prevColumns => {
7776
+ var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
7777
+ cards: col.cards.filter(c => c.id !== card.id)
7778
+ }) : col);
7779
+ onChange == null || onChange(updatedColumns);
7780
+ return updatedColumns;
7781
+ });
7782
+ }, [onChange, onCardDeleteProp]);
7783
+ var handleCardTitleChange = useCallback((card, column, newTitle) => {
7784
+ if (onCardTitleChangeProp) {
7785
+ onCardTitleChangeProp(card, column, newTitle);
7786
+ return;
7787
+ }
7788
+ setColumns(prevColumns => {
7789
+ var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
7790
+ cards: col.cards.map(c => c.id === card.id ? Object.assign({}, c, {
7791
+ title: newTitle
7792
+ }) : c)
7793
+ }) : col);
7794
+ onChange == null || onChange(updatedColumns);
7795
+ return updatedColumns;
7796
+ });
7797
+ }, [onChange, onCardTitleChangeProp]);
7798
+ var handleCardDescriptionChange = useCallback((card, column, newDescription) => {
7799
+ if (onCardDescriptionChangeProp) {
7800
+ onCardDescriptionChangeProp(card, column, newDescription);
7801
+ return;
7802
+ }
7803
+ setColumns(prevColumns => {
7804
+ var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
7805
+ cards: col.cards.map(c => c.id === card.id ? Object.assign({}, c, {
7806
+ description: newDescription
7807
+ }) : c)
7808
+ }) : col);
7809
+ onChange == null || onChange(updatedColumns);
7810
+ return updatedColumns;
7811
+ });
7812
+ }, [onChange, onCardDescriptionChangeProp]);
7747
7813
  return {
7748
7814
  columns,
7749
7815
  draggedCardId,
@@ -7753,7 +7819,11 @@ var useKanbanBoardState = _ref => {
7753
7819
  onColumnDragOver: handleColumnDragOver,
7754
7820
  onCardDragOver: handleCardDragOver,
7755
7821
  onColumnDrop: handleColumnDrop,
7756
- onCardDrop: handleCardDrop
7822
+ onCardDrop: handleCardDrop,
7823
+ onCardCreate: handleCardCreate,
7824
+ onCardDelete: handleCardDelete,
7825
+ onCardTitleChange: handleCardTitleChange,
7826
+ onCardDescriptionChange: handleCardDescriptionChange
7757
7827
  };
7758
7828
  };
7759
7829
 
@@ -7771,18 +7841,94 @@ var KanbanBoardView = _ref => {
7771
7841
  onColumnDragOver,
7772
7842
  onCardDragOver,
7773
7843
  onColumnDrop,
7774
- onCardDrop
7844
+ onCardDrop,
7845
+ onCardCreate,
7846
+ onCardDelete,
7847
+ onCardTitleChange,
7848
+ onCardDescriptionChange
7775
7849
  } = _ref;
7776
- var renderDefaultCard = React.useCallback(card => (/*#__PURE__*/React.createElement(Vertical, Object.assign({
7850
+ var [editingCardId, setEditingCardId] = React.useState(null);
7851
+ var [editingDescriptionCardId, setEditingDescriptionCardId] = React.useState(null);
7852
+ var [editedTitle, setEditedTitle] = React.useState('');
7853
+ var [editedDescription, setEditedDescription] = React.useState('');
7854
+ var handleTitleClick = React.useCallback(card => {
7855
+ setEditingCardId(card.id);
7856
+ setEditedTitle(card.title);
7857
+ }, []);
7858
+ var handleDescriptionClick = React.useCallback(card => {
7859
+ setEditingDescriptionCardId(card.id);
7860
+ setEditedDescription(card.description || '');
7861
+ }, []);
7862
+ var handleTitleChange = React.useCallback(event => {
7863
+ setEditedTitle(event.target.value);
7864
+ }, []);
7865
+ var handleDescriptionChange = React.useCallback(event => {
7866
+ setEditedDescription(event.target.value);
7867
+ }, []);
7868
+ var handleTitleBlur = React.useCallback((card, column) => {
7869
+ if (editingCardId === card.id) {
7870
+ onCardTitleChange == null || onCardTitleChange(card, column, editedTitle);
7871
+ setEditingCardId(null);
7872
+ }
7873
+ }, [editingCardId, editedTitle, onCardTitleChange]);
7874
+ var handleDescriptionBlur = React.useCallback((card, column) => {
7875
+ if (editingDescriptionCardId === card.id) {
7876
+ onCardDescriptionChange == null || onCardDescriptionChange(card, column, editedDescription);
7877
+ setEditingDescriptionCardId(null);
7878
+ }
7879
+ }, [editingDescriptionCardId, editedDescription, onCardDescriptionChange]);
7880
+ var handleTitleKeyDown = React.useCallback((event, card, column) => {
7881
+ if (event.key === 'Enter') {
7882
+ handleTitleBlur(card, column);
7883
+ }
7884
+ }, [handleTitleBlur]);
7885
+ var handleDescriptionKeyDown = React.useCallback((event, card, column) => {
7886
+ if (event.key === 'Enter' && !event.shiftKey) {
7887
+ event.preventDefault();
7888
+ handleDescriptionBlur(card, column);
7889
+ }
7890
+ }, [handleDescriptionBlur]);
7891
+ var renderDefaultCard = React.useCallback((card, column) => (/*#__PURE__*/React.createElement(Vertical, Object.assign({
7777
7892
  gap: 4,
7778
7893
  alignItems: "flex-start"
7779
- }, views == null ? void 0 : views.cardContent), /*#__PURE__*/React.createElement(Text, {
7894
+ }, views == null ? void 0 : views.cardContent), editingCardId === card.id ? (/*#__PURE__*/React.createElement("input", {
7895
+ type: "text",
7896
+ value: editedTitle,
7897
+ onChange: handleTitleChange,
7898
+ onBlur: () => handleTitleBlur(card, column),
7899
+ onKeyDown: event => handleTitleKeyDown(event, card, column),
7900
+ autoFocus: true,
7901
+ style: {
7902
+ border: '1px solid #d0d5dd',
7903
+ borderRadius: '4px',
7904
+ padding: '4px 8px',
7905
+ fontSize: '14px',
7906
+ fontWeight: '600',
7907
+ width: '100%'
7908
+ }
7909
+ })) : (/*#__PURE__*/React.createElement(Text, {
7780
7910
  weight: "semiBold",
7781
- size: "sm"
7782
- }, card.title), card.description && (/*#__PURE__*/React.createElement(Text, {
7783
7911
  size: "sm",
7784
- color: "#475467"
7785
- }, card.description)))), [views == null ? void 0 : views.cardContent]);
7912
+ onClick: () => handleTitleClick(card)
7913
+ }, card.title)), card.description && (editingDescriptionCardId === card.id ? (/*#__PURE__*/React.createElement("textarea", {
7914
+ value: editedDescription,
7915
+ onChange: handleDescriptionChange,
7916
+ onBlur: () => handleDescriptionBlur(card, column),
7917
+ onKeyDown: event => handleDescriptionKeyDown(event, card, column),
7918
+ autoFocus: true,
7919
+ style: {
7920
+ border: '1px solid #d0d5dd',
7921
+ borderRadius: '4px',
7922
+ padding: '4px 8px',
7923
+ fontSize: '14px',
7924
+ width: '100%',
7925
+ minHeight: '60px'
7926
+ }
7927
+ })) : (/*#__PURE__*/React.createElement(Text, {
7928
+ size: "sm",
7929
+ color: "#475467",
7930
+ onClick: () => handleDescriptionClick(card)
7931
+ }, card.description))))), [views == null ? void 0 : views.cardContent, editingCardId, editedTitle, editingDescriptionCardId, editedDescription, handleTitleBlur, handleTitleChange, handleTitleClick, handleTitleKeyDown, handleDescriptionBlur, handleDescriptionChange, handleDescriptionClick, handleDescriptionKeyDown]);
7786
7932
  return /*#__PURE__*/React.createElement(View, Object.assign({
7787
7933
  display: "flex",
7788
7934
  alignItems: "flex-start",
@@ -7806,27 +7952,21 @@ var KanbanBoardView = _ref => {
7806
7952
  }, views == null ? void 0 : views.columnHeader), renderColumnHeader ? renderColumnHeader(column) : (/*#__PURE__*/React.createElement(Text, Object.assign({
7807
7953
  weight: "semiBold",
7808
7954
  size: "md"
7809
- }, views == null ? void 0 : views.columnTitle), column.title))), /*#__PURE__*/React.createElement(Vertical, Object.assign({
7955
+ }, views == null ? void 0 : views.columnTitle), column.title)), /*#__PURE__*/React.createElement(View, {
7956
+ onClick: () => onCardCreate == null ? void 0 : onCardCreate({
7957
+ id: "new-card-" + Date.now(),
7958
+ title: 'Nouvelle carte'
7959
+ }, column)
7960
+ }, /*#__PURE__*/React.createElement(PlusIcon, {
7961
+ widthHeight: 16
7962
+ }))), /*#__PURE__*/React.createElement(Vertical, Object.assign({
7810
7963
  gap: 12,
7811
7964
  minHeight: 40,
7812
7965
  onDragOver: event => onColumnDragOver(column.id, event),
7813
7966
  onDrop: event => onColumnDrop(column.id, event),
7814
7967
  opacity: draggedCardId && hoveredColumnId === column.id ? 0.9 : undefined,
7815
7968
  transition: "all 0.15s ease-in-out"
7816
- }, views == null ? void 0 : views.columnBody), column.cards.length === 0 && (/*#__PURE__*/React.createElement(View, Object.assign({
7817
- padding: 12,
7818
- borderWidth: "1px",
7819
- borderStyle: "dashed",
7820
- borderColor: "#d0d5dd",
7821
- borderRadius: 8,
7822
- backgroundColor: "rgba(255, 255, 255, 0.6)",
7823
- textAlign: "center",
7824
- color: "#667085",
7825
- fontSize: "14px"
7826
- }, views == null ? void 0 : views.emptyState), renderEmptyState ? renderEmptyState(column) : (/*#__PURE__*/React.createElement(Text, {
7827
- size: "sm",
7828
- color: "#667085"
7829
- }, "Drop cards here")))), column.cards.map(card => (/*#__PURE__*/React.createElement(View, {
7969
+ }, views == null ? void 0 : views.columnBody), column.cards.map(card => (/*#__PURE__*/React.createElement(View, {
7830
7970
  key: card.id,
7831
7971
  position: "relative"
7832
7972
  }, /*#__PURE__*/React.createElement(View, Object.assign({
@@ -7846,7 +7986,35 @@ var KanbanBoardView = _ref => {
7846
7986
  event.stopPropagation();
7847
7987
  onCardDrop(column.id, card.id, event);
7848
7988
  }
7849
- }, views == null ? void 0 : views.card), renderCard ? renderCard(card, column) : renderDefaultCard(card)))))), column.footer && (/*#__PURE__*/React.createElement(View, Object.assign({}, views == null ? void 0 : views.columnFooter), column.footer))))));
7989
+ }, views == null ? void 0 : views.card), /*#__PURE__*/React.createElement(View, {
7990
+ display: "flex",
7991
+ justifyContent: "space-between",
7992
+ alignItems: "flex-start"
7993
+ }, /*#__PURE__*/React.createElement(View, {
7994
+ flexGrow: 1
7995
+ }, renderCard ? renderCard(card, column) : renderDefaultCard(card, column)), /*#__PURE__*/React.createElement(View, {
7996
+ onClick: () => onCardDelete == null ? void 0 : onCardDelete(card, column)
7997
+ }, /*#__PURE__*/React.createElement(TrashIcon, {
7998
+ widthHeight: 16
7999
+ }))))))), /*#__PURE__*/React.createElement(View, Object.assign({
8000
+ padding: 12,
8001
+ borderWidth: "1px",
8002
+ borderStyle: "dashed",
8003
+ borderColor: "#d0d5dd",
8004
+ borderRadius: 8,
8005
+ backgroundColor: "rgba(255, 255, 255, 0.6)",
8006
+ textAlign: "center",
8007
+ color: "#667085",
8008
+ fontSize: "14px"
8009
+ }, views == null ? void 0 : views.emptyState, {
8010
+ onClick: () => onCardCreate == null ? void 0 : onCardCreate({
8011
+ id: "new-card-" + Date.now(),
8012
+ title: 'Nouvelle carte'
8013
+ }, column)
8014
+ }), renderEmptyState ? renderEmptyState(column) : (/*#__PURE__*/React.createElement(Text, {
8015
+ size: "sm",
8016
+ color: "#667085"
8017
+ }, "Create a new card")))), column.footer && (/*#__PURE__*/React.createElement(View, Object.assign({}, views == null ? void 0 : views.columnFooter), column.footer))))));
7850
8018
  };
7851
8019
 
7852
8020
  var KanbanBoardComponent = props => {
@@ -8273,11 +8441,111 @@ var iconButtonStyles = {
8273
8441
  border: 'none'
8274
8442
  };
8275
8443
 
8276
- var ResizeHandle = _ref => {
8444
+ var EventContent = _ref => {
8445
+ var {
8446
+ event,
8447
+ onTitleChange,
8448
+ onDescriptionChange,
8449
+ onEventDelete
8450
+ } = _ref;
8451
+ var [isEditingTitle, setIsEditingTitle] = useState(false);
8452
+ var [editedTitle, setEditedTitle] = useState(event.title);
8453
+ var [isEditingDescription, setIsEditingDescription] = useState(false);
8454
+ var [editedDescription, setEditedDescription] = useState(event.description || '');
8455
+ var handleTitleClick = useCallback(() => {
8456
+ setIsEditingTitle(true);
8457
+ setEditedTitle(event.title);
8458
+ }, [event.title]);
8459
+ var handleDescriptionClick = useCallback(() => {
8460
+ setIsEditingDescription(true);
8461
+ setEditedDescription(event.description || '');
8462
+ }, [event.description]);
8463
+ var handleTitleChange = useCallback(e => {
8464
+ setEditedTitle(e.target.value);
8465
+ }, []);
8466
+ var handleDescriptionChange = useCallback(e => {
8467
+ setEditedDescription(e.target.value);
8468
+ }, []);
8469
+ var handleTitleBlur = useCallback(() => {
8470
+ if (isEditingTitle) {
8471
+ onTitleChange(event, editedTitle);
8472
+ setIsEditingTitle(false);
8473
+ }
8474
+ }, [isEditingTitle, onTitleChange, event, editedTitle]);
8475
+ var handleDescriptionBlur = useCallback(() => {
8476
+ if (isEditingDescription) {
8477
+ onDescriptionChange(event, editedDescription);
8478
+ setIsEditingDescription(false);
8479
+ }
8480
+ }, [isEditingDescription, onDescriptionChange, event, editedDescription]);
8481
+ var handleTitleKeyDown = useCallback(e => {
8482
+ if (e.key === 'Enter') {
8483
+ handleTitleBlur();
8484
+ }
8485
+ }, [handleTitleBlur]);
8486
+ var handleDescriptionKeyDown = useCallback(e => {
8487
+ if (e.key === 'Enter' && !e.shiftKey) {
8488
+ e.preventDefault();
8489
+ handleDescriptionBlur();
8490
+ }
8491
+ }, [handleDescriptionBlur]);
8492
+ return /*#__PURE__*/React.createElement(Horizontal, {
8493
+ overflow: "hidden",
8494
+ textOverflow: "ellipsis",
8495
+ whiteSpace: "nowrap",
8496
+ width: "100%",
8497
+ justifyContent: "space-between"
8498
+ }, isEditingTitle ? (/*#__PURE__*/React.createElement("input", {
8499
+ type: "text",
8500
+ value: editedTitle,
8501
+ onChange: handleTitleChange,
8502
+ onBlur: handleTitleBlur,
8503
+ onKeyDown: handleTitleKeyDown,
8504
+ autoFocus: true,
8505
+ style: {
8506
+ border: '1px solid #d0d5dd',
8507
+ borderRadius: '4px',
8508
+ padding: '2px 4px',
8509
+ fontSize: '11px',
8510
+ fontWeight: '500',
8511
+ width: '100%'
8512
+ }
8513
+ })) : (/*#__PURE__*/React.createElement(Text$1, {
8514
+ fontSize: 11,
8515
+ fontWeight: 500,
8516
+ onClick: handleTitleClick
8517
+ }, event.title)), event.description && (isEditingDescription ? (/*#__PURE__*/React.createElement("textarea", {
8518
+ value: editedDescription,
8519
+ onChange: handleDescriptionChange,
8520
+ onBlur: handleDescriptionBlur,
8521
+ onKeyDown: handleDescriptionKeyDown,
8522
+ autoFocus: true,
8523
+ style: {
8524
+ border: '1px solid #d0d5dd',
8525
+ borderRadius: '4px',
8526
+ padding: '2px 4px',
8527
+ fontSize: '11px',
8528
+ width: '100%',
8529
+ minHeight: '40px',
8530
+ marginTop: '4px'
8531
+ }
8532
+ })) : (/*#__PURE__*/React.createElement(Text$1, {
8533
+ fontSize: 11,
8534
+ color: "color.gray.600",
8535
+ onClick: handleDescriptionClick
8536
+ }, event.description))), /*#__PURE__*/React.createElement(Center, {
8537
+ onClick: () => onEventDelete(event),
8538
+ cursor: "pointer",
8539
+ marginLeft: 4
8540
+ }, /*#__PURE__*/React.createElement(TrashIcon, {
8541
+ widthHeight: 12
8542
+ })));
8543
+ };
8544
+ var ResizeHandle = _ref2 => {
8277
8545
  var {
8278
8546
  direction,
8279
8547
  onMouseDown
8280
- } = _ref;
8548
+ } = _ref2;
8281
8549
  var [isHovered, setIsHovered] = useState(false);
8282
8550
  return /*#__PURE__*/React.createElement(View, Object.assign({
8283
8551
  position: "absolute",
@@ -8302,7 +8570,7 @@ var ResizeHandle = _ref => {
8302
8570
  var MONTH_EVENT_ROW_HEIGHT = 22;
8303
8571
  var MONTH_EVENT_ROW_GAP = 4;
8304
8572
  var MONTH_EVENT_TOP_OFFSET = 32;
8305
- var Calendar = _ref2 => {
8573
+ var Calendar = _ref3 => {
8306
8574
  var {
8307
8575
  initialDate = new Date(),
8308
8576
  initialView = 'month',
@@ -8314,11 +8582,14 @@ var Calendar = _ref2 => {
8314
8582
  onDateChange,
8315
8583
  onViewChange,
8316
8584
  onEventAdd,
8585
+ onEventTitleChange,
8586
+ onEventDescriptionChange,
8587
+ onEventDelete,
8317
8588
  views = {},
8318
8589
  width = '100%',
8319
8590
  maxWidth = 1200,
8320
8591
  weekStartsOn = 0
8321
- } = _ref2;
8592
+ } = _ref3;
8322
8593
  var {
8323
8594
  getColor
8324
8595
  } = useTheme();
@@ -8345,6 +8616,31 @@ var Calendar = _ref2 => {
8345
8616
  React.useEffect(() => {
8346
8617
  setLocalEvents(events);
8347
8618
  }, [events]);
8619
+ var handleEventTitleChange = useCallback((event, newTitle) => {
8620
+ if (onEventTitleChange) {
8621
+ onEventTitleChange(event, newTitle);
8622
+ return;
8623
+ }
8624
+ setLocalEvents(prevEvents => prevEvents.map(ev => ev.id === event.id ? Object.assign({}, ev, {
8625
+ title: newTitle
8626
+ }) : ev));
8627
+ }, [onEventTitleChange]);
8628
+ var handleEventDescriptionChange = useCallback((event, newDescription) => {
8629
+ if (onEventDescriptionChange) {
8630
+ onEventDescriptionChange(event, newDescription);
8631
+ return;
8632
+ }
8633
+ setLocalEvents(prevEvents => prevEvents.map(ev => ev.id === event.id ? Object.assign({}, ev, {
8634
+ description: newDescription
8635
+ }) : ev));
8636
+ }, [onEventDescriptionChange]);
8637
+ var handleEventDelete = useCallback(event => {
8638
+ if (onEventDelete) {
8639
+ onEventDelete(event);
8640
+ return;
8641
+ }
8642
+ setLocalEvents(prevEvents => prevEvents.filter(ev => ev.id !== event.id));
8643
+ }, [onEventDelete]);
8348
8644
  // Get the month start for current date
8349
8645
  var currentMonth = useMemo(() => getFirstDayOfMonth(currentDate), [currentDate]);
8350
8646
  // Generate calendar dates based on view
@@ -8705,12 +9001,12 @@ var Calendar = _ref2 => {
8705
9001
  top: event.segmentRow * (MONTH_EVENT_ROW_HEIGHT + MONTH_EVENT_ROW_GAP) + "px",
8706
9002
  onMouseDown: e => handleEventMouseDown(e, event),
8707
9003
  title: event.title
8708
- }, views.event), /*#__PURE__*/React.createElement(View, {
8709
- overflow: "hidden",
8710
- textOverflow: "ellipsis",
8711
- whiteSpace: "nowrap",
8712
- width: "100%"
8713
- }, event.title), showLeftHandle && (/*#__PURE__*/React.createElement(ResizeHandle, {
9004
+ }, views.event), /*#__PURE__*/React.createElement(EventContent, {
9005
+ event: event,
9006
+ onTitleChange: handleEventTitleChange,
9007
+ onDescriptionChange: handleEventDescriptionChange,
9008
+ onEventDelete: handleEventDelete
9009
+ }), showLeftHandle && (/*#__PURE__*/React.createElement(ResizeHandle, {
8714
9010
  direction: "left",
8715
9011
  onMouseDown: e => handleResizeStart(e, event, 'left')
8716
9012
  })), showRightHandle && (/*#__PURE__*/React.createElement(ResizeHandle, {
@@ -8771,12 +9067,12 @@ var Calendar = _ref2 => {
8771
9067
  userSelect: "none",
8772
9068
  onMouseDown: e => handleEventMouseDown(e, event),
8773
9069
  title: event.title
8774
- }, views.event), /*#__PURE__*/React.createElement(View, {
8775
- overflow: "hidden",
8776
- textOverflow: "ellipsis",
8777
- whiteSpace: "nowrap",
8778
- width: "100%"
8779
- }, event.title), /*#__PURE__*/React.createElement(ResizeHandle, {
9070
+ }, views.event), /*#__PURE__*/React.createElement(EventContent, {
9071
+ event: event,
9072
+ onTitleChange: handleEventTitleChange,
9073
+ onDescriptionChange: handleEventDescriptionChange,
9074
+ onEventDelete: handleEventDelete
9075
+ }), /*#__PURE__*/React.createElement(ResizeHandle, {
8780
9076
  direction: "left",
8781
9077
  onMouseDown: e => handleResizeStart(e, event, 'left')
8782
9078
  }), /*#__PURE__*/React.createElement(ResizeHandle, {
@@ -8823,7 +9119,7 @@ var Calendar = _ref2 => {
8823
9119
  }, views.timeSlot), dayEvents.filter(event => {
8824
9120
  // Simple check if event starts in this hour
8825
9121
  if (event.start.includes('T')) {
8826
- var eventHour = parseInt(event.start.split('T')[1].split(':')[0]);
9122
+ var eventHour = parseInt(event.start.split('T').split(':'));
8827
9123
  return eventHour === hour;
8828
9124
  }
8829
9125
  return false;
@@ -8836,7 +9132,12 @@ var Calendar = _ref2 => {
8836
9132
  borderLeftColor: colorConfig.border,
8837
9133
  color: colorConfig.text,
8838
9134
  marginBottom: 4
8839
- }, views.event), event.title);
9135
+ }, views.event), /*#__PURE__*/React.createElement(EventContent, {
9136
+ event: event,
9137
+ onTitleChange: handleEventTitleChange,
9138
+ onDescriptionChange: handleEventDescriptionChange,
9139
+ onEventDelete: handleEventDelete
9140
+ }));
8840
9141
  })));
8841
9142
  }));
8842
9143
  };