@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/components/Calendar/Calendar/Calendar.props.d.ts +8 -0
- package/dist/components/KanbanBoard/KanbanBoard/KanbanBoard.props.d.ts +5 -0
- package/dist/components/KanbanBoard/KanbanBoard/KanbanBoard.state.d.ts +7 -3
- package/dist/web.cjs.development.js +345 -44
- package/dist/web.cjs.development.js.map +1 -1
- package/dist/web.cjs.production.min.js +1 -1
- package/dist/web.cjs.production.min.js.map +1 -1
- package/dist/web.esm.js +345 -44
- package/dist/web.esm.js.map +1 -1
- package/dist/web.umd.development.js +345 -44
- package/dist/web.umd.development.js.map +1 -1
- package/dist/web.umd.production.min.js +1 -1
- package/dist/web.umd.production.min.js.map +1 -1
- package/docs/components/Calendar.mdx +3 -0
- package/docs/components/KanbanBoard.mdx +4 -0
- package/package.json +1 -1
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
|
|
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(
|
|
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
|
-
|
|
7785
|
-
}, card.
|
|
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))
|
|
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.
|
|
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),
|
|
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
|
|
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
|
-
} =
|
|
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 =
|
|
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
|
-
} =
|
|
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(
|
|
8709
|
-
|
|
8710
|
-
|
|
8711
|
-
|
|
8712
|
-
|
|
8713
|
-
}
|
|
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(
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
}
|
|
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')
|
|
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),
|
|
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
|
};
|