Skip to content

Commit b9c02f6

Browse files
committed
INT-1160: Handle focus on insert
1 parent 7e39493 commit b9c02f6

File tree

6 files changed

+22
-16
lines changed

6 files changed

+22
-16
lines changed

src/internal-packages/crud/lib/component/document-list.jsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ const LIST_CLASS = 'document-list';
2525
*/
2626
const SCROLL_EVENT = 'scroll';
2727

28-
/**
29-
* Base empty doc for insert dialog.
30-
*/
31-
const EMPTY_DOC = { '': '' };
32-
3328
/**
3429
* Component for the entire document list.
3530
*/
@@ -148,7 +143,7 @@ class DocumentList extends React.Component {
148143
* Handle opening of the insert dialog.
149144
*/
150145
handleOpenInsert() {
151-
Actions.openInsertDocumentDialog(EMPTY_DOC);
146+
Actions.openInsertDocumentDialog({ _id: new ObjectID(), '': '' }, false);
152147
}
153148

154149
/**

src/internal-packages/crud/lib/component/document.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ class Document extends React.Component {
224224
* Handle cloning of the document.
225225
*/
226226
handleClone() {
227-
Actions.openInsertDocumentDialog(this.doc);
227+
Actions.openInsertDocumentDialog(this.doc, true);
228228
}
229229

230230
/**
@@ -234,6 +234,9 @@ class Document extends React.Component {
234234
this.setState({ deleting: true });
235235
}
236236

237+
/**
238+
* Handles canceling a delete.
239+
*/
237240
handleCancelDelete() {
238241
this.setState({ deleting: false });
239242
}

src/internal-packages/crud/lib/component/editable-element.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class EditableElement extends React.Component {
116116
<li className={this.style()}>
117117
<div className='line-number'></div>
118118
{this.renderAction()}
119-
<EditableKey element={this.element} />
119+
<EditableKey element={this.element} insertIndex={this.props.insertIndex} />
120120
:
121121
{this.renderValue()}
122122
<Types element={this.element} />

src/internal-packages/crud/lib/component/editable-key.jsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ class EditableKey extends React.Component {
3939
*/
4040
componentDidMount() {
4141
if (this.element.isAdded()) {
42-
if (!this.isEditable() && this._node) {
42+
if (this.props.insertIndex) {
43+
// Focus for inserting new documents.
44+
if (this.props.insertIndex === 1 && this.element.currentKey === '') {
45+
this._node.focus();
46+
}
47+
} else if (!this.isEditable() && this._node) {
4348
this._node.focus();
4449
}
4550
}

src/internal-packages/crud/lib/component/insert-document.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ class InsertDocument extends React.Component {
6868
* @returns {Array} The editable elements.
6969
*/
7070
renderElements() {
71-
var elements = _.map(this.doc.elements, (element) => {
71+
var elements = _.map(this.doc.elements, (element, index) => {
7272
return (
73-
<EditableElement key={element.uuid} element={element} />
73+
<EditableElement key={element.uuid} element={element} insertIndex={index} />
7474
);
7575
});
7676
var lastComponent = elements[elements.length - 1];

src/internal-packages/crud/lib/store/open-insert-document-dialog-store.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@ const OpenInsertDocumentDialogStore = Reflux.createStore({
2020
* Open the insert document dialog.
2121
*
2222
* @param {Object} doc - The document to open the dialog with.
23+
* @param {Booelan} clone - If the operation is a clone.
2324
*/
24-
openInsertDocumentDialog: function(doc) {
25+
openInsertDocumentDialog: function(doc, clone) {
2526
var hadronDoc = new HadronDocument(doc, true);
26-
// We need to remove the _id or we will get an duplicate key error on
27-
// insert, and we currently do not allow editing of the _id field.
28-
if (hadronDoc.elements[0].currentKey === '_id') {
29-
hadronDoc.elements.shift();
27+
if (clone) {
28+
// We need to remove the _id or we will get an duplicate key error on
29+
// insert, and we currently do not allow editing of the _id field.
30+
if (hadronDoc.elements[0].currentKey === '_id') {
31+
hadronDoc.elements.shift();
32+
}
3033
}
3134
this.trigger(hadronDoc);
3235
}

0 commit comments

Comments
 (0)