@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
|
@@ -7569,7 +7569,12 @@
|
|
|
7569
7569
|
var useKanbanBoardState = _ref => {
|
|
7570
7570
|
var {
|
|
7571
7571
|
columns: initialColumns,
|
|
7572
|
-
onChange
|
|
7572
|
+
onChange,
|
|
7573
|
+
onCardMove,
|
|
7574
|
+
onCardCreate: onCardCreateProp,
|
|
7575
|
+
onCardDelete: onCardDeleteProp,
|
|
7576
|
+
onCardTitleChange: onCardTitleChangeProp,
|
|
7577
|
+
onCardDescriptionChange: onCardDescriptionChangeProp
|
|
7573
7578
|
} = _ref;
|
|
7574
7579
|
var [columns, setColumns] = React.useState(initialColumns);
|
|
7575
7580
|
var [draggedCardId, setDraggedCardId] = React.useState(null);
|
|
@@ -7646,11 +7651,16 @@
|
|
|
7646
7651
|
cardId
|
|
7647
7652
|
};
|
|
7648
7653
|
if (options != null && options.shouldCommit) {
|
|
7654
|
+
var originalSourceColumn = prevColumns.find(c => c.id === sourceColumnId);
|
|
7655
|
+
var originalTargetColumn = prevColumns.find(c => c.id === targetColumnId);
|
|
7656
|
+
if (card && originalSourceColumn && originalTargetColumn) {
|
|
7657
|
+
onCardMove == null || onCardMove(card, originalSourceColumn, originalTargetColumn);
|
|
7658
|
+
}
|
|
7649
7659
|
onChange == null || onChange(updatedColumns);
|
|
7650
7660
|
}
|
|
7651
7661
|
return updatedColumns;
|
|
7652
7662
|
});
|
|
7653
|
-
}, [onChange]);
|
|
7663
|
+
}, [onChange, onCardMove]);
|
|
7654
7664
|
var handleCardDragStart = React.useCallback((columnId, cardId, event) => {
|
|
7655
7665
|
dragStateRef.current = {
|
|
7656
7666
|
columnId,
|
|
@@ -7709,6 +7719,62 @@
|
|
|
7709
7719
|
shouldCommit: true
|
|
7710
7720
|
});
|
|
7711
7721
|
}, [applyMove, getRelativeDropPosition]);
|
|
7722
|
+
var handleCardCreate = React.useCallback((card, column) => {
|
|
7723
|
+
if (onCardCreateProp) {
|
|
7724
|
+
onCardCreateProp(card, column);
|
|
7725
|
+
return;
|
|
7726
|
+
}
|
|
7727
|
+
setColumns(prevColumns => {
|
|
7728
|
+
var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
|
|
7729
|
+
cards: [...col.cards, card]
|
|
7730
|
+
}) : col);
|
|
7731
|
+
onChange == null || onChange(updatedColumns);
|
|
7732
|
+
return updatedColumns;
|
|
7733
|
+
});
|
|
7734
|
+
}, [onChange, onCardCreateProp]);
|
|
7735
|
+
var handleCardDelete = React.useCallback((card, column) => {
|
|
7736
|
+
if (onCardDeleteProp) {
|
|
7737
|
+
onCardDeleteProp(card, column);
|
|
7738
|
+
return;
|
|
7739
|
+
}
|
|
7740
|
+
setColumns(prevColumns => {
|
|
7741
|
+
var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
|
|
7742
|
+
cards: col.cards.filter(c => c.id !== card.id)
|
|
7743
|
+
}) : col);
|
|
7744
|
+
onChange == null || onChange(updatedColumns);
|
|
7745
|
+
return updatedColumns;
|
|
7746
|
+
});
|
|
7747
|
+
}, [onChange, onCardDeleteProp]);
|
|
7748
|
+
var handleCardTitleChange = React.useCallback((card, column, newTitle) => {
|
|
7749
|
+
if (onCardTitleChangeProp) {
|
|
7750
|
+
onCardTitleChangeProp(card, column, newTitle);
|
|
7751
|
+
return;
|
|
7752
|
+
}
|
|
7753
|
+
setColumns(prevColumns => {
|
|
7754
|
+
var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
|
|
7755
|
+
cards: col.cards.map(c => c.id === card.id ? Object.assign({}, c, {
|
|
7756
|
+
title: newTitle
|
|
7757
|
+
}) : c)
|
|
7758
|
+
}) : col);
|
|
7759
|
+
onChange == null || onChange(updatedColumns);
|
|
7760
|
+
return updatedColumns;
|
|
7761
|
+
});
|
|
7762
|
+
}, [onChange, onCardTitleChangeProp]);
|
|
7763
|
+
var handleCardDescriptionChange = React.useCallback((card, column, newDescription) => {
|
|
7764
|
+
if (onCardDescriptionChangeProp) {
|
|
7765
|
+
onCardDescriptionChangeProp(card, column, newDescription);
|
|
7766
|
+
return;
|
|
7767
|
+
}
|
|
7768
|
+
setColumns(prevColumns => {
|
|
7769
|
+
var updatedColumns = prevColumns.map(col => col.id === column.id ? Object.assign({}, col, {
|
|
7770
|
+
cards: col.cards.map(c => c.id === card.id ? Object.assign({}, c, {
|
|
7771
|
+
description: newDescription
|
|
7772
|
+
}) : c)
|
|
7773
|
+
}) : col);
|
|
7774
|
+
onChange == null || onChange(updatedColumns);
|
|
7775
|
+
return updatedColumns;
|
|
7776
|
+
});
|
|
7777
|
+
}, [onChange, onCardDescriptionChangeProp]);
|
|
7712
7778
|
return {
|
|
7713
7779
|
columns,
|
|
7714
7780
|
draggedCardId,
|
|
@@ -7718,7 +7784,11 @@
|
|
|
7718
7784
|
onColumnDragOver: handleColumnDragOver,
|
|
7719
7785
|
onCardDragOver: handleCardDragOver,
|
|
7720
7786
|
onColumnDrop: handleColumnDrop,
|
|
7721
|
-
onCardDrop: handleCardDrop
|
|
7787
|
+
onCardDrop: handleCardDrop,
|
|
7788
|
+
onCardCreate: handleCardCreate,
|
|
7789
|
+
onCardDelete: handleCardDelete,
|
|
7790
|
+
onCardTitleChange: handleCardTitleChange,
|
|
7791
|
+
onCardDescriptionChange: handleCardDescriptionChange
|
|
7722
7792
|
};
|
|
7723
7793
|
};
|
|
7724
7794
|
|
|
@@ -7736,18 +7806,94 @@
|
|
|
7736
7806
|
onColumnDragOver,
|
|
7737
7807
|
onCardDragOver,
|
|
7738
7808
|
onColumnDrop,
|
|
7739
|
-
onCardDrop
|
|
7809
|
+
onCardDrop,
|
|
7810
|
+
onCardCreate,
|
|
7811
|
+
onCardDelete,
|
|
7812
|
+
onCardTitleChange,
|
|
7813
|
+
onCardDescriptionChange
|
|
7740
7814
|
} = _ref;
|
|
7741
|
-
var
|
|
7815
|
+
var [editingCardId, setEditingCardId] = React__default.useState(null);
|
|
7816
|
+
var [editingDescriptionCardId, setEditingDescriptionCardId] = React__default.useState(null);
|
|
7817
|
+
var [editedTitle, setEditedTitle] = React__default.useState('');
|
|
7818
|
+
var [editedDescription, setEditedDescription] = React__default.useState('');
|
|
7819
|
+
var handleTitleClick = React__default.useCallback(card => {
|
|
7820
|
+
setEditingCardId(card.id);
|
|
7821
|
+
setEditedTitle(card.title);
|
|
7822
|
+
}, []);
|
|
7823
|
+
var handleDescriptionClick = React__default.useCallback(card => {
|
|
7824
|
+
setEditingDescriptionCardId(card.id);
|
|
7825
|
+
setEditedDescription(card.description || '');
|
|
7826
|
+
}, []);
|
|
7827
|
+
var handleTitleChange = React__default.useCallback(event => {
|
|
7828
|
+
setEditedTitle(event.target.value);
|
|
7829
|
+
}, []);
|
|
7830
|
+
var handleDescriptionChange = React__default.useCallback(event => {
|
|
7831
|
+
setEditedDescription(event.target.value);
|
|
7832
|
+
}, []);
|
|
7833
|
+
var handleTitleBlur = React__default.useCallback((card, column) => {
|
|
7834
|
+
if (editingCardId === card.id) {
|
|
7835
|
+
onCardTitleChange == null || onCardTitleChange(card, column, editedTitle);
|
|
7836
|
+
setEditingCardId(null);
|
|
7837
|
+
}
|
|
7838
|
+
}, [editingCardId, editedTitle, onCardTitleChange]);
|
|
7839
|
+
var handleDescriptionBlur = React__default.useCallback((card, column) => {
|
|
7840
|
+
if (editingDescriptionCardId === card.id) {
|
|
7841
|
+
onCardDescriptionChange == null || onCardDescriptionChange(card, column, editedDescription);
|
|
7842
|
+
setEditingDescriptionCardId(null);
|
|
7843
|
+
}
|
|
7844
|
+
}, [editingDescriptionCardId, editedDescription, onCardDescriptionChange]);
|
|
7845
|
+
var handleTitleKeyDown = React__default.useCallback((event, card, column) => {
|
|
7846
|
+
if (event.key === 'Enter') {
|
|
7847
|
+
handleTitleBlur(card, column);
|
|
7848
|
+
}
|
|
7849
|
+
}, [handleTitleBlur]);
|
|
7850
|
+
var handleDescriptionKeyDown = React__default.useCallback((event, card, column) => {
|
|
7851
|
+
if (event.key === 'Enter' && !event.shiftKey) {
|
|
7852
|
+
event.preventDefault();
|
|
7853
|
+
handleDescriptionBlur(card, column);
|
|
7854
|
+
}
|
|
7855
|
+
}, [handleDescriptionBlur]);
|
|
7856
|
+
var renderDefaultCard = React__default.useCallback((card, column) => (/*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
7742
7857
|
gap: 4,
|
|
7743
7858
|
alignItems: "flex-start"
|
|
7744
|
-
}, views == null ? void 0 : views.cardContent), /*#__PURE__*/React__default.createElement(
|
|
7859
|
+
}, views == null ? void 0 : views.cardContent), editingCardId === card.id ? (/*#__PURE__*/React__default.createElement("input", {
|
|
7860
|
+
type: "text",
|
|
7861
|
+
value: editedTitle,
|
|
7862
|
+
onChange: handleTitleChange,
|
|
7863
|
+
onBlur: () => handleTitleBlur(card, column),
|
|
7864
|
+
onKeyDown: event => handleTitleKeyDown(event, card, column),
|
|
7865
|
+
autoFocus: true,
|
|
7866
|
+
style: {
|
|
7867
|
+
border: '1px solid #d0d5dd',
|
|
7868
|
+
borderRadius: '4px',
|
|
7869
|
+
padding: '4px 8px',
|
|
7870
|
+
fontSize: '14px',
|
|
7871
|
+
fontWeight: '600',
|
|
7872
|
+
width: '100%'
|
|
7873
|
+
}
|
|
7874
|
+
})) : (/*#__PURE__*/React__default.createElement(Text, {
|
|
7745
7875
|
weight: "semiBold",
|
|
7746
|
-
size: "sm"
|
|
7747
|
-
}, card.title), card.description && (/*#__PURE__*/React__default.createElement(Text, {
|
|
7748
7876
|
size: "sm",
|
|
7749
|
-
|
|
7750
|
-
}, card.
|
|
7877
|
+
onClick: () => handleTitleClick(card)
|
|
7878
|
+
}, card.title)), card.description && (editingDescriptionCardId === card.id ? (/*#__PURE__*/React__default.createElement("textarea", {
|
|
7879
|
+
value: editedDescription,
|
|
7880
|
+
onChange: handleDescriptionChange,
|
|
7881
|
+
onBlur: () => handleDescriptionBlur(card, column),
|
|
7882
|
+
onKeyDown: event => handleDescriptionKeyDown(event, card, column),
|
|
7883
|
+
autoFocus: true,
|
|
7884
|
+
style: {
|
|
7885
|
+
border: '1px solid #d0d5dd',
|
|
7886
|
+
borderRadius: '4px',
|
|
7887
|
+
padding: '4px 8px',
|
|
7888
|
+
fontSize: '14px',
|
|
7889
|
+
width: '100%',
|
|
7890
|
+
minHeight: '60px'
|
|
7891
|
+
}
|
|
7892
|
+
})) : (/*#__PURE__*/React__default.createElement(Text, {
|
|
7893
|
+
size: "sm",
|
|
7894
|
+
color: "#475467",
|
|
7895
|
+
onClick: () => handleDescriptionClick(card)
|
|
7896
|
+
}, card.description))))), [views == null ? void 0 : views.cardContent, editingCardId, editedTitle, editingDescriptionCardId, editedDescription, handleTitleBlur, handleTitleChange, handleTitleClick, handleTitleKeyDown, handleDescriptionBlur, handleDescriptionChange, handleDescriptionClick, handleDescriptionKeyDown]);
|
|
7751
7897
|
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
7752
7898
|
display: "flex",
|
|
7753
7899
|
alignItems: "flex-start",
|
|
@@ -7771,27 +7917,21 @@
|
|
|
7771
7917
|
}, views == null ? void 0 : views.columnHeader), renderColumnHeader ? renderColumnHeader(column) : (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
7772
7918
|
weight: "semiBold",
|
|
7773
7919
|
size: "md"
|
|
7774
|
-
}, views == null ? void 0 : views.columnTitle), column.title))
|
|
7920
|
+
}, views == null ? void 0 : views.columnTitle), column.title)), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
7921
|
+
onClick: () => onCardCreate == null ? void 0 : onCardCreate({
|
|
7922
|
+
id: "new-card-" + Date.now(),
|
|
7923
|
+
title: 'Nouvelle carte'
|
|
7924
|
+
}, column)
|
|
7925
|
+
}, /*#__PURE__*/React__default.createElement(PlusIcon, {
|
|
7926
|
+
widthHeight: 16
|
|
7927
|
+
}))), /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
7775
7928
|
gap: 12,
|
|
7776
7929
|
minHeight: 40,
|
|
7777
7930
|
onDragOver: event => onColumnDragOver(column.id, event),
|
|
7778
7931
|
onDrop: event => onColumnDrop(column.id, event),
|
|
7779
7932
|
opacity: draggedCardId && hoveredColumnId === column.id ? 0.9 : undefined,
|
|
7780
7933
|
transition: "all 0.15s ease-in-out"
|
|
7781
|
-
}, views == null ? void 0 : views.columnBody), column.cards.
|
|
7782
|
-
padding: 12,
|
|
7783
|
-
borderWidth: "1px",
|
|
7784
|
-
borderStyle: "dashed",
|
|
7785
|
-
borderColor: "#d0d5dd",
|
|
7786
|
-
borderRadius: 8,
|
|
7787
|
-
backgroundColor: "rgba(255, 255, 255, 0.6)",
|
|
7788
|
-
textAlign: "center",
|
|
7789
|
-
color: "#667085",
|
|
7790
|
-
fontSize: "14px"
|
|
7791
|
-
}, views == null ? void 0 : views.emptyState), renderEmptyState ? renderEmptyState(column) : (/*#__PURE__*/React__default.createElement(Text, {
|
|
7792
|
-
size: "sm",
|
|
7793
|
-
color: "#667085"
|
|
7794
|
-
}, "Drop cards here")))), column.cards.map(card => (/*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
7934
|
+
}, views == null ? void 0 : views.columnBody), column.cards.map(card => (/*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
7795
7935
|
key: card.id,
|
|
7796
7936
|
position: "relative"
|
|
7797
7937
|
}, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
@@ -7811,7 +7951,35 @@
|
|
|
7811
7951
|
event.stopPropagation();
|
|
7812
7952
|
onCardDrop(column.id, card.id, event);
|
|
7813
7953
|
}
|
|
7814
|
-
}, views == null ? void 0 : views.card),
|
|
7954
|
+
}, views == null ? void 0 : views.card), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
7955
|
+
display: "flex",
|
|
7956
|
+
justifyContent: "space-between",
|
|
7957
|
+
alignItems: "flex-start"
|
|
7958
|
+
}, /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
7959
|
+
flexGrow: 1
|
|
7960
|
+
}, renderCard ? renderCard(card, column) : renderDefaultCard(card, column)), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
7961
|
+
onClick: () => onCardDelete == null ? void 0 : onCardDelete(card, column)
|
|
7962
|
+
}, /*#__PURE__*/React__default.createElement(TrashIcon, {
|
|
7963
|
+
widthHeight: 16
|
|
7964
|
+
}))))))), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
7965
|
+
padding: 12,
|
|
7966
|
+
borderWidth: "1px",
|
|
7967
|
+
borderStyle: "dashed",
|
|
7968
|
+
borderColor: "#d0d5dd",
|
|
7969
|
+
borderRadius: 8,
|
|
7970
|
+
backgroundColor: "rgba(255, 255, 255, 0.6)",
|
|
7971
|
+
textAlign: "center",
|
|
7972
|
+
color: "#667085",
|
|
7973
|
+
fontSize: "14px"
|
|
7974
|
+
}, views == null ? void 0 : views.emptyState, {
|
|
7975
|
+
onClick: () => onCardCreate == null ? void 0 : onCardCreate({
|
|
7976
|
+
id: "new-card-" + Date.now(),
|
|
7977
|
+
title: 'Nouvelle carte'
|
|
7978
|
+
}, column)
|
|
7979
|
+
}), renderEmptyState ? renderEmptyState(column) : (/*#__PURE__*/React__default.createElement(Text, {
|
|
7980
|
+
size: "sm",
|
|
7981
|
+
color: "#667085"
|
|
7982
|
+
}, "Create a new card")))), column.footer && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, views == null ? void 0 : views.columnFooter), column.footer))))));
|
|
7815
7983
|
};
|
|
7816
7984
|
|
|
7817
7985
|
var KanbanBoardComponent = props => {
|
|
@@ -8238,11 +8406,111 @@
|
|
|
8238
8406
|
border: 'none'
|
|
8239
8407
|
};
|
|
8240
8408
|
|
|
8241
|
-
var
|
|
8409
|
+
var EventContent = _ref => {
|
|
8410
|
+
var {
|
|
8411
|
+
event,
|
|
8412
|
+
onTitleChange,
|
|
8413
|
+
onDescriptionChange,
|
|
8414
|
+
onEventDelete
|
|
8415
|
+
} = _ref;
|
|
8416
|
+
var [isEditingTitle, setIsEditingTitle] = React.useState(false);
|
|
8417
|
+
var [editedTitle, setEditedTitle] = React.useState(event.title);
|
|
8418
|
+
var [isEditingDescription, setIsEditingDescription] = React.useState(false);
|
|
8419
|
+
var [editedDescription, setEditedDescription] = React.useState(event.description || '');
|
|
8420
|
+
var handleTitleClick = React.useCallback(() => {
|
|
8421
|
+
setIsEditingTitle(true);
|
|
8422
|
+
setEditedTitle(event.title);
|
|
8423
|
+
}, [event.title]);
|
|
8424
|
+
var handleDescriptionClick = React.useCallback(() => {
|
|
8425
|
+
setIsEditingDescription(true);
|
|
8426
|
+
setEditedDescription(event.description || '');
|
|
8427
|
+
}, [event.description]);
|
|
8428
|
+
var handleTitleChange = React.useCallback(e => {
|
|
8429
|
+
setEditedTitle(e.target.value);
|
|
8430
|
+
}, []);
|
|
8431
|
+
var handleDescriptionChange = React.useCallback(e => {
|
|
8432
|
+
setEditedDescription(e.target.value);
|
|
8433
|
+
}, []);
|
|
8434
|
+
var handleTitleBlur = React.useCallback(() => {
|
|
8435
|
+
if (isEditingTitle) {
|
|
8436
|
+
onTitleChange(event, editedTitle);
|
|
8437
|
+
setIsEditingTitle(false);
|
|
8438
|
+
}
|
|
8439
|
+
}, [isEditingTitle, onTitleChange, event, editedTitle]);
|
|
8440
|
+
var handleDescriptionBlur = React.useCallback(() => {
|
|
8441
|
+
if (isEditingDescription) {
|
|
8442
|
+
onDescriptionChange(event, editedDescription);
|
|
8443
|
+
setIsEditingDescription(false);
|
|
8444
|
+
}
|
|
8445
|
+
}, [isEditingDescription, onDescriptionChange, event, editedDescription]);
|
|
8446
|
+
var handleTitleKeyDown = React.useCallback(e => {
|
|
8447
|
+
if (e.key === 'Enter') {
|
|
8448
|
+
handleTitleBlur();
|
|
8449
|
+
}
|
|
8450
|
+
}, [handleTitleBlur]);
|
|
8451
|
+
var handleDescriptionKeyDown = React.useCallback(e => {
|
|
8452
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
8453
|
+
e.preventDefault();
|
|
8454
|
+
handleDescriptionBlur();
|
|
8455
|
+
}
|
|
8456
|
+
}, [handleDescriptionBlur]);
|
|
8457
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Horizontal, {
|
|
8458
|
+
overflow: "hidden",
|
|
8459
|
+
textOverflow: "ellipsis",
|
|
8460
|
+
whiteSpace: "nowrap",
|
|
8461
|
+
width: "100%",
|
|
8462
|
+
justifyContent: "space-between"
|
|
8463
|
+
}, isEditingTitle ? (/*#__PURE__*/React__default.createElement("input", {
|
|
8464
|
+
type: "text",
|
|
8465
|
+
value: editedTitle,
|
|
8466
|
+
onChange: handleTitleChange,
|
|
8467
|
+
onBlur: handleTitleBlur,
|
|
8468
|
+
onKeyDown: handleTitleKeyDown,
|
|
8469
|
+
autoFocus: true,
|
|
8470
|
+
style: {
|
|
8471
|
+
border: '1px solid #d0d5dd',
|
|
8472
|
+
borderRadius: '4px',
|
|
8473
|
+
padding: '2px 4px',
|
|
8474
|
+
fontSize: '11px',
|
|
8475
|
+
fontWeight: '500',
|
|
8476
|
+
width: '100%'
|
|
8477
|
+
}
|
|
8478
|
+
})) : (/*#__PURE__*/React__default.createElement(appStudio.Text, {
|
|
8479
|
+
fontSize: 11,
|
|
8480
|
+
fontWeight: 500,
|
|
8481
|
+
onClick: handleTitleClick
|
|
8482
|
+
}, event.title)), event.description && (isEditingDescription ? (/*#__PURE__*/React__default.createElement("textarea", {
|
|
8483
|
+
value: editedDescription,
|
|
8484
|
+
onChange: handleDescriptionChange,
|
|
8485
|
+
onBlur: handleDescriptionBlur,
|
|
8486
|
+
onKeyDown: handleDescriptionKeyDown,
|
|
8487
|
+
autoFocus: true,
|
|
8488
|
+
style: {
|
|
8489
|
+
border: '1px solid #d0d5dd',
|
|
8490
|
+
borderRadius: '4px',
|
|
8491
|
+
padding: '2px 4px',
|
|
8492
|
+
fontSize: '11px',
|
|
8493
|
+
width: '100%',
|
|
8494
|
+
minHeight: '40px',
|
|
8495
|
+
marginTop: '4px'
|
|
8496
|
+
}
|
|
8497
|
+
})) : (/*#__PURE__*/React__default.createElement(appStudio.Text, {
|
|
8498
|
+
fontSize: 11,
|
|
8499
|
+
color: "color.gray.600",
|
|
8500
|
+
onClick: handleDescriptionClick
|
|
8501
|
+
}, event.description))), /*#__PURE__*/React__default.createElement(appStudio.Center, {
|
|
8502
|
+
onClick: () => onEventDelete(event),
|
|
8503
|
+
cursor: "pointer",
|
|
8504
|
+
marginLeft: 4
|
|
8505
|
+
}, /*#__PURE__*/React__default.createElement(TrashIcon, {
|
|
8506
|
+
widthHeight: 12
|
|
8507
|
+
})));
|
|
8508
|
+
};
|
|
8509
|
+
var ResizeHandle = _ref2 => {
|
|
8242
8510
|
var {
|
|
8243
8511
|
direction,
|
|
8244
8512
|
onMouseDown
|
|
8245
|
-
} =
|
|
8513
|
+
} = _ref2;
|
|
8246
8514
|
var [isHovered, setIsHovered] = React.useState(false);
|
|
8247
8515
|
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8248
8516
|
position: "absolute",
|
|
@@ -8267,7 +8535,7 @@
|
|
|
8267
8535
|
var MONTH_EVENT_ROW_HEIGHT = 22;
|
|
8268
8536
|
var MONTH_EVENT_ROW_GAP = 4;
|
|
8269
8537
|
var MONTH_EVENT_TOP_OFFSET = 32;
|
|
8270
|
-
var Calendar =
|
|
8538
|
+
var Calendar = _ref3 => {
|
|
8271
8539
|
var {
|
|
8272
8540
|
initialDate = new Date(),
|
|
8273
8541
|
initialView = 'month',
|
|
@@ -8279,11 +8547,14 @@
|
|
|
8279
8547
|
onDateChange,
|
|
8280
8548
|
onViewChange,
|
|
8281
8549
|
onEventAdd,
|
|
8550
|
+
onEventTitleChange,
|
|
8551
|
+
onEventDescriptionChange,
|
|
8552
|
+
onEventDelete,
|
|
8282
8553
|
views = {},
|
|
8283
8554
|
width = '100%',
|
|
8284
8555
|
maxWidth = 1200,
|
|
8285
8556
|
weekStartsOn = 0
|
|
8286
|
-
} =
|
|
8557
|
+
} = _ref3;
|
|
8287
8558
|
var {
|
|
8288
8559
|
getColor
|
|
8289
8560
|
} = appStudio.useTheme();
|
|
@@ -8310,6 +8581,31 @@
|
|
|
8310
8581
|
React__default.useEffect(() => {
|
|
8311
8582
|
setLocalEvents(events);
|
|
8312
8583
|
}, [events]);
|
|
8584
|
+
var handleEventTitleChange = React.useCallback((event, newTitle) => {
|
|
8585
|
+
if (onEventTitleChange) {
|
|
8586
|
+
onEventTitleChange(event, newTitle);
|
|
8587
|
+
return;
|
|
8588
|
+
}
|
|
8589
|
+
setLocalEvents(prevEvents => prevEvents.map(ev => ev.id === event.id ? Object.assign({}, ev, {
|
|
8590
|
+
title: newTitle
|
|
8591
|
+
}) : ev));
|
|
8592
|
+
}, [onEventTitleChange]);
|
|
8593
|
+
var handleEventDescriptionChange = React.useCallback((event, newDescription) => {
|
|
8594
|
+
if (onEventDescriptionChange) {
|
|
8595
|
+
onEventDescriptionChange(event, newDescription);
|
|
8596
|
+
return;
|
|
8597
|
+
}
|
|
8598
|
+
setLocalEvents(prevEvents => prevEvents.map(ev => ev.id === event.id ? Object.assign({}, ev, {
|
|
8599
|
+
description: newDescription
|
|
8600
|
+
}) : ev));
|
|
8601
|
+
}, [onEventDescriptionChange]);
|
|
8602
|
+
var handleEventDelete = React.useCallback(event => {
|
|
8603
|
+
if (onEventDelete) {
|
|
8604
|
+
onEventDelete(event);
|
|
8605
|
+
return;
|
|
8606
|
+
}
|
|
8607
|
+
setLocalEvents(prevEvents => prevEvents.filter(ev => ev.id !== event.id));
|
|
8608
|
+
}, [onEventDelete]);
|
|
8313
8609
|
// Get the month start for current date
|
|
8314
8610
|
var currentMonth = React.useMemo(() => getFirstDayOfMonth(currentDate), [currentDate]);
|
|
8315
8611
|
// Generate calendar dates based on view
|
|
@@ -8670,12 +8966,12 @@
|
|
|
8670
8966
|
top: event.segmentRow * (MONTH_EVENT_ROW_HEIGHT + MONTH_EVENT_ROW_GAP) + "px",
|
|
8671
8967
|
onMouseDown: e => handleEventMouseDown(e, event),
|
|
8672
8968
|
title: event.title
|
|
8673
|
-
}, views.event), /*#__PURE__*/React__default.createElement(
|
|
8674
|
-
|
|
8675
|
-
|
|
8676
|
-
|
|
8677
|
-
|
|
8678
|
-
}
|
|
8969
|
+
}, views.event), /*#__PURE__*/React__default.createElement(EventContent, {
|
|
8970
|
+
event: event,
|
|
8971
|
+
onTitleChange: handleEventTitleChange,
|
|
8972
|
+
onDescriptionChange: handleEventDescriptionChange,
|
|
8973
|
+
onEventDelete: handleEventDelete
|
|
8974
|
+
}), showLeftHandle && (/*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8679
8975
|
direction: "left",
|
|
8680
8976
|
onMouseDown: e => handleResizeStart(e, event, 'left')
|
|
8681
8977
|
})), showRightHandle && (/*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
@@ -8736,12 +9032,12 @@
|
|
|
8736
9032
|
userSelect: "none",
|
|
8737
9033
|
onMouseDown: e => handleEventMouseDown(e, event),
|
|
8738
9034
|
title: event.title
|
|
8739
|
-
}, views.event), /*#__PURE__*/React__default.createElement(
|
|
8740
|
-
|
|
8741
|
-
|
|
8742
|
-
|
|
8743
|
-
|
|
8744
|
-
}
|
|
9035
|
+
}, views.event), /*#__PURE__*/React__default.createElement(EventContent, {
|
|
9036
|
+
event: event,
|
|
9037
|
+
onTitleChange: handleEventTitleChange,
|
|
9038
|
+
onDescriptionChange: handleEventDescriptionChange,
|
|
9039
|
+
onEventDelete: handleEventDelete
|
|
9040
|
+
}), /*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8745
9041
|
direction: "left",
|
|
8746
9042
|
onMouseDown: e => handleResizeStart(e, event, 'left')
|
|
8747
9043
|
}), /*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
@@ -8788,7 +9084,7 @@
|
|
|
8788
9084
|
}, views.timeSlot), dayEvents.filter(event => {
|
|
8789
9085
|
// Simple check if event starts in this hour
|
|
8790
9086
|
if (event.start.includes('T')) {
|
|
8791
|
-
var eventHour = parseInt(event.start.split('T')
|
|
9087
|
+
var eventHour = parseInt(event.start.split('T').split(':'));
|
|
8792
9088
|
return eventHour === hour;
|
|
8793
9089
|
}
|
|
8794
9090
|
return false;
|
|
@@ -8801,7 +9097,12 @@
|
|
|
8801
9097
|
borderLeftColor: colorConfig.border,
|
|
8802
9098
|
color: colorConfig.text,
|
|
8803
9099
|
marginBottom: 4
|
|
8804
|
-
}, views.event),
|
|
9100
|
+
}, views.event), /*#__PURE__*/React__default.createElement(EventContent, {
|
|
9101
|
+
event: event,
|
|
9102
|
+
onTitleChange: handleEventTitleChange,
|
|
9103
|
+
onDescriptionChange: handleEventDescriptionChange,
|
|
9104
|
+
onEventDelete: handleEventDelete
|
|
9105
|
+
}));
|
|
8805
9106
|
})));
|
|
8806
9107
|
}));
|
|
8807
9108
|
};
|