diff options
Diffstat (limited to 'src/client/views/collections')
10 files changed, 94 insertions, 127 deletions
diff --git a/src/client/views/collections/CollectionCarousel3DView.tsx b/src/client/views/collections/CollectionCarousel3DView.tsx index 7617f2a52..27c85533f 100644 --- a/src/client/views/collections/CollectionCarousel3DView.tsx +++ b/src/client/views/collections/CollectionCarousel3DView.tsx @@ -78,7 +78,7 @@ export class CollectionCarousel3DView extends CollectionSubView() { // suppressSetHeight={true} NativeWidth={returnZero} NativeHeight={returnZero} - layout_fitWidth={undefined} + fitWidth={undefined} onDoubleClickScript={this.onChildDoubleClick} renderDepth={this._props.renderDepth + 1} LayoutTemplate={this._props.childLayoutTemplate} diff --git a/src/client/views/collections/CollectionCarouselView.tsx b/src/client/views/collections/CollectionCarouselView.tsx index 9d3657995..45b64d3e6 100644 --- a/src/client/views/collections/CollectionCarouselView.tsx +++ b/src/client/views/collections/CollectionCarouselView.tsx @@ -74,7 +74,7 @@ export class CollectionCarouselView extends CollectionSubView() { {...this._props} NativeWidth={returnZero} NativeHeight={returnZero} - layout_fitWidth={undefined} + fitWidth={undefined} setContentViewBox={undefined} onDoubleClickScript={this.onContentDoubleClick} onClickScript={this.onContentClick} diff --git a/src/client/views/collections/CollectionNoteTakingView.tsx b/src/client/views/collections/CollectionNoteTakingView.tsx index 3f9eed1d6..53211be77 100644 --- a/src/client/views/collections/CollectionNoteTakingView.tsx +++ b/src/client/views/collections/CollectionNoteTakingView.tsx @@ -269,7 +269,7 @@ export class CollectionNoteTakingView extends CollectionSubView() { PanelHeight={height} styleProvider={this.styleProvider} containerViewPath={this.childContainerViewPath} - layout_fitWidth={this._props.childLayoutFitWidth} + fitWidth={this._props.childLayoutFitWidth} isContentActive={emptyFunction} onKey={this.onKeyDown} // TODO: change this from a prop to a parameter passed into a function @@ -282,7 +282,7 @@ export class CollectionNoteTakingView extends CollectionSubView() { dontCenter={this._props.childIgnoreNativeSize ? 'xy' : undefined} dontRegisterView={dataDoc ? true : BoolCast(this.layoutDoc.childDontRegisterViews, this._props.dontRegisterView)} rootSelected={this.rootSelected} - layout_showTitle={this._props.childlayout_showTitle} + showTitle={this._props.childlayout_showTitle} dragAction={StrCast(this.layoutDoc.childDragAction) as dropActionType} onClickScript={this.onChildClickHandler} onDoubleClickScript={this.onChildDoubleClickHandler} @@ -528,7 +528,7 @@ export class CollectionNoteTakingView extends CollectionSubView() { }); refList = () => this._refList; - backgroundColor = () => this._props.DocumentView?.().backgroundColor(); + backgroundColor = () => this.DocumentView?.()?.backgroundColor(); // sectionNoteTaking returns a CollectionNoteTakingViewColumn (which is an individual column) sectionNoteTaking = (heading: SchemaHeaderField | undefined, docList: Doc[]) => ( diff --git a/src/client/views/collections/CollectionStackedTimeline.tsx b/src/client/views/collections/CollectionStackedTimeline.tsx index f9b123bb6..1604920f6 100644 --- a/src/client/views/collections/CollectionStackedTimeline.tsx +++ b/src/client/views/collections/CollectionStackedTimeline.tsx @@ -855,7 +855,7 @@ class StackedTimelineAnchor extends ObservableReactComponent<StackedTimelineAnch isDocumentActive={this._props.isDocumentActive} PanelWidth={width} PanelHeight={height} - layout_fitWidth={returnTrue} + fitWidth={returnTrue} ScreenToLocalTransform={screenXf} pinToPres={emptyFunction} focus={focusFunc} @@ -882,7 +882,7 @@ class StackedTimelineAnchor extends ObservableReactComponent<StackedTimelineAnch return ( <div style={{ pointerEvents: this.noEvents ? 'none' : undefined }}> {inner.view} - {!inner.anchor.view || !inner.anchor.view.IsSelected ? null : ( + {!inner.anchor.view?.IsSelected ? null : ( <> <div key="left" className="collectionStackedTimeline-left-resizer" style={{ pointerEvents: this.noEvents ? 'none' : undefined }} onPointerDown={e => this.onAnchorDown(e, this._props.mark, true)} /> <div key="right" className="collectionStackedTimeline-resizer" style={{ pointerEvents: this.noEvents ? 'none' : undefined }} onPointerDown={e => this.onAnchorDown(e, this._props.mark, false)} /> diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx index 3f12a281e..07aa0f4f0 100644 --- a/src/client/views/collections/CollectionStackingView.tsx +++ b/src/client/views/collections/CollectionStackingView.tsx @@ -336,7 +336,7 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection pointerEvents={this.DocumentView?.()._props.onClickScript?.() ? returnNone : undefined} // if the stack has an onClick, then we don't want the contents to be interactive (see CollectionPileView) styleProvider={this.styleProvider} containerViewPath={this.childContainerViewPath} - layout_fitWidth={this.childFitWidth} + fitWidth={this.childFitWidth} isContentActive={doc.onClick ? this.isChildButtonContentActive : this.isChildContentActive} onKey={this.onKeyDown} DataTransition={trans} @@ -348,7 +348,7 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection dontCenter={this._props.childIgnoreNativeSize ? 'xy' : (StrCast(this.layoutDoc.layout_dontCenter) as any)} dontRegisterView={BoolCast(this.layoutDoc.childDontRegisterViews, this._props.dontRegisterView)} // used to be true if DataDoc existed, but template textboxes won't layout_autoHeight resize if dontRegisterView is set, but they need to. rootSelected={this.rootSelected} - layout_showTitle={this._props.childlayout_showTitle} + showTitle={this._props.childlayout_showTitle} dragAction={(this.layoutDoc.childDragAction ?? this._props.childDragAction) as dropActionType} onClickScript={this.onChildClickHandler} onDoubleClickScript={this.onChildDoubleClickHandler} diff --git a/src/client/views/collections/TreeView.tsx b/src/client/views/collections/TreeView.tsx index 6ea6bbfbd..3a187171a 100644 --- a/src/client/views/collections/TreeView.tsx +++ b/src/client/views/collections/TreeView.tsx @@ -1015,7 +1015,7 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> { } })} Document={this.Document} - layout_fitWidth={returnTrue} + fitWidth={returnTrue} scriptContext={this} hideDecorations hideClickBehaviors @@ -1122,7 +1122,7 @@ export class TreeView extends ObservableReactComponent<TreeViewProps> { this._dref = r; })} Document={this.Document} - layout_fitWidth={this.fitWidthFilter} + fitWidth={this.fitWidthFilter} PanelWidth={this.embeddedPanelWidth} PanelHeight={this.embeddedPanelHeight} LayoutTemplateString={asText ? FormattedTextBox.LayoutString('text') : undefined} diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx index 21a069bd8..74de6524b 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx @@ -183,7 +183,7 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection return this._props.styleProvider?.(this.Document, this._props, StyleProp.BackgroundColor); } @computed get fitWidth() { - return this._props.layout_fitWidth?.(this.Document) ?? this.layoutDoc.layout_fitWidth; + return this._props.fitWidth?.(this.Document) ?? this.layoutDoc.layout_fitWidth; } @computed get nativeDimScaling() { if (this._firstRender || (this._props.isAnnotationOverlay && !this._props.annotationLayerHostsContent)) return 1; @@ -1055,7 +1055,7 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection pinToPres={this._props.pinToPres} whenChildContentsActiveChanged={this._props.whenChildContentsActiveChanged} dragAction={(this.Document.childDragAction ?? this._props.childDragAction) as dropActionType} - layout_showTitle={this._props.childlayout_showTitle} + showTitle={this._props.childlayout_showTitle} dontRegisterView={this._props.dontRegisterView} pointerEvents={this.childPointerEventsFunc} /> diff --git a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx index 647986568..de38d0c56 100644 --- a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx +++ b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx @@ -1,7 +1,7 @@ /* eslint-disable no-restricted-syntax */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Popup, PopupTrigger, Type } from 'browndash-components'; -import { ObservableMap, action, autorun, computed, makeObservable, observable, observe } from 'mobx'; +import { ObservableMap, action, autorun, computed, makeObservable, observable, observe, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { returnEmptyDoclist, returnEmptyString, returnFalse, returnIgnore, returnNever, returnTrue, setupMoveUpEvents, smoothScroll } from '../../../../ClientUtils'; @@ -10,9 +10,8 @@ import { Doc, DocListCast, Field, FieldType, NumListCast, Opt, StrListCast } fro import { DocData } from '../../../../fields/DocSymbols'; import { Id } from '../../../../fields/FieldSymbols'; import { List } from '../../../../fields/List'; -import { listSpec } from '../../../../fields/Schema'; import { ColumnType } from '../../../../fields/SchemaHeaderField'; -import { BoolCast, Cast, NumCast, StrCast } from '../../../../fields/Types'; +import { BoolCast, NumCast, StrCast } from '../../../../fields/Types'; import { DocUtils } from '../../../documents/DocUtils'; import { Docs, DocumentOptions, FInfo } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; @@ -123,11 +122,7 @@ export class CollectionSchemaView extends CollectionSubView() { } @computed get columnKeys() { - return Cast(this.layoutDoc.schema_columnKeys, listSpec('string'), defaultColumnKeys); - } - - @computed get rowKeys() { - return Cast(this.layoutDoc.schema_rowKeys, listSpec('string'), []); + return StrListCast(this.layoutDoc.schema_columnKeys, defaultColumnKeys); } @computed get storedColumnWidths() { @@ -137,7 +132,7 @@ export class CollectionSchemaView extends CollectionSubView() { ); const totalWidth = widths.reduce((sum, width) => sum + width, 0); - //If the total width of all columns is not the width of the schema table minus the width of the row menu, resize them appropriately + // If the total width of all columns is not the width of the schema table minus the width of the row menu, resize them appropriately if (totalWidth !== this.tableWidth - CollectionSchemaView._rowMenuWidth) { return widths.map(w => (w / totalWidth) * (this.tableWidth - CollectionSchemaView._rowMenuWidth)); } @@ -145,8 +140,7 @@ export class CollectionSchemaView extends CollectionSubView() { } @computed get rowHeights() { - const heights = this.childDocs.map(() => this.rowHeightFunc()); - return heights; + return this.childDocs.map(() => this.rowHeightFunc()); } @computed get displayColumnWidths() { @@ -211,9 +205,7 @@ export class CollectionSchemaView extends CollectionSubView() { DocumentView.DeselectView(DocumentView.getFirstDocumentView(curDoc)); this.deselectCell(curDoc); } else { - const shift: boolean = e.shiftKey; - const ctrl: boolean = e.ctrlKey; - this.selectCell(newDoc, this._selectedCol, shift, ctrl); + this.selectCell(newDoc, this._selectedCol, e.shiftKey, e.ctrlKey); this.scrollToDoc(newDoc, {}); } } @@ -232,9 +224,7 @@ export class CollectionSchemaView extends CollectionSubView() { DocumentView.DeselectView(DocumentView.getFirstDocumentView(curDoc)); this.deselectCell(curDoc); } else { - const shift: boolean = e.shiftKey; - const ctrl: boolean = e.ctrlKey; - this.selectCell(newDoc, this._selectedCol, shift, ctrl); + this.selectCell(newDoc, this._selectedCol, e.shiftKey, e.ctrlKey); this.scrollToDoc(newDoc, {}); } } @@ -286,7 +276,7 @@ export class CollectionSchemaView extends CollectionSubView() { this.addNewKey(newKey, defaultVal, false); } - const currKeys = [...this.columnKeys]; + const currKeys = this.columnKeys.slice(); // copy the column key array first, then change it. currKeys[index] = newKey; this.layoutDoc.schema_columnKeys = new List<string>(currKeys); }; @@ -397,7 +387,7 @@ export class CollectionSchemaView extends CollectionSubView() { @undoBatch moveColumn = (fromIndex: number, toIndex: number) => { if (this._selectedCol === fromIndex) this._selectedCol = toIndex; - else if (toIndex === this._selectedCol) this._selectedCol = fromIndex; //keeps selected cell consistent + else if (toIndex === this._selectedCol) this._selectedCol = fromIndex; // keeps selected cell consistent const currKeys = this.columnKeys.slice(); currKeys.splice(toIndex, 0, currKeys.splice(fromIndex, 1)[0]); @@ -442,11 +432,11 @@ export class CollectionSchemaView extends CollectionSubView() { */ @action setRelCursorIndex = (mouseY: number) => { - this._mouseCoordinates.y = mouseY; //updates this.rowDropIndex computed value to overwrite the old cached value + this._mouseCoordinates.y = mouseY; // updates this.rowDropIndex computed value to overwrite the old cached value - let rowHeight = CollectionSchemaView._rowHeight; - let adjInitMouseY = mouseY - rowHeight - 100; //rowHeight: height of the column menu cells | 100: height of the top menu - let yOffset = this._lowestSelectedIndex * rowHeight; + const rowHeight = CollectionSchemaView._rowHeight; + const adjInitMouseY = mouseY - rowHeight - 100; // rowHeight: height of the column menu cells | 100: height of the top menu + const yOffset = this._lowestSelectedIndex * rowHeight; const heights = this._selectedDocs.map(() => this.rowHeightFunc()); let index: number = 0; @@ -460,9 +450,8 @@ export class CollectionSchemaView extends CollectionSubView() { this._relCursorIndex = index; }; - //Uses current mouse position to calculate the indexes of actively dragged docs findRowDropIndex = (mouseY: number) => { - let rowHeight = CollectionSchemaView._rowHeight; + const rowHeight = CollectionSchemaView._rowHeight; let index: number = 0; this.rowHeights.reduce((total, curr, i) => { if (total <= mouseY && total + curr >= mouseY) { @@ -472,39 +461,31 @@ export class CollectionSchemaView extends CollectionSubView() { return total + curr; }, rowHeight); - //fix index if selected rows are dragged out of bounds + // fix index if selected rows are dragged out of bounds let adjIndex = index - this._relCursorIndex; - let maxY = this.rowHeights.reduce((total, curr) => total + curr, 0) + rowHeight; + const maxY = this.rowHeights.reduce((total, curr) => total + curr, 0) + rowHeight; if (mouseY > maxY) adjIndex = this.childDocs.length - 1; else if (adjIndex <= 0) adjIndex = 0; return adjIndex; }; - @action - highlightDraggedColumn = (index: number) => { + highlightDraggedColumn = (index: number) => this._colEles.forEach((colRef, i) => { - let edgeStyle = ''; - if (i === index) edgeStyle = `solid 2px ${Colors.MEDIUM_BLUE}`; - - //border styles of menu cell - colRef.style.borderLeft = edgeStyle; - colRef.style.borderRight = edgeStyle; - colRef.style.borderTop = edgeStyle; - - for (let doc = 0; doc < this.childDocs.length; ++doc) { - if (i === this._selectedCol && this._selectedDocs.includes(this.childDocs[doc])) { - continue; - } else { - this._rowEles.get(this.childDocs[doc]).children[1].children[i].style.borderLeft = edgeStyle; - this._rowEles.get(this.childDocs[doc]).children[1].children[i].style.borderRight = edgeStyle; - if (doc === this.childDocs.length - 1) { - this._rowEles.get(this.childDocs[doc]).children[1].children[i].style.borderBottom = edgeStyle; - } - } - } + const edgeStyle = i === index ? `solid 2px ${Colors.MEDIUM_BLUE}` : ''; + const cellEles = [ + colRef, + ...this.childDocs // + .filter(doc => i !== this._selectedCol || !this._selectedDocs.includes(doc)) + .map(doc => this._rowEles.get(doc).children[1].children[i]), + ]; + cellEles[0].style.borderTop = edgeStyle; + cellEles.forEach(ele => { + ele.style.borderLeft = edgeStyle; + ele.style.borderRight = edgeStyle; + }); + cellEles.slice(-1)[0].style.borderBottom = edgeStyle; }); - }; @action addRowRef = (doc: Doc, ref: HTMLDivElement) => this._rowEles.set(doc, ref); @@ -548,7 +529,7 @@ export class CollectionSchemaView extends CollectionSubView() { if (!shiftKey && !ctrlKey) this.clearSelection(); !this._selectedCells && (this._selectedCells = []); !shiftKey && this._selectedCells && this._selectedCells.push(doc); - let index = this.rowIndex(doc); + const index = this.rowIndex(doc); if (!this) return; const lastSelected = Array.from(this._selectedDocs).lastElement(); @@ -563,13 +544,13 @@ export class CollectionSchemaView extends CollectionSubView() { if (this._lowestSelectedIndex === -1 || index < this._lowestSelectedIndex) this._lowestSelectedIndex = index; - //let selectedIndexes: Array<Number> = this._selectedCells.map(doc => this.rowIndex(doc)); + // let selectedIndexes: Array<Number> = this._selectedCells.map(doc => this.rowIndex(doc)); }; @action deselectCell = (doc: Doc) => { this._selectedCells && (this._selectedCells = this._selectedCells.filter(d => d !== doc)); - if (this.rowIndex(doc) == this._lowestSelectedIndex) this._lowestSelectedIndex = Math.min(...this._selectedDocs.map(doc => this.rowIndex(doc))); + if (this.rowIndex(doc) === this._lowestSelectedIndex) this._lowestSelectedIndex = Math.min(...this._selectedDocs.map(d => this.rowIndex(d))); }; @action @@ -583,8 +564,7 @@ export class CollectionSchemaView extends CollectionSubView() { @computed get rowDropIndex() { const mouseY = this.ScreenToLocalBoxXf().transformPoint(this._mouseCoordinates.x, this._mouseCoordinates.y)[1]; - const index = this.findRowDropIndex(mouseY); - return index; + return this.findRowDropIndex(mouseY); } onInternalDrop = (e: Event, de: DragManager.DropEvent) => { @@ -593,7 +573,7 @@ export class CollectionSchemaView extends CollectionSubView() { e.stopPropagation(); this._colEles.forEach((colRef, i) => { - //style for menu cell + // style for menu cell colRef.style.borderLeft = ''; colRef.style.borderRight = ''; colRef.style.borderTop = ''; @@ -611,7 +591,7 @@ export class CollectionSchemaView extends CollectionSubView() { const draggedDocs = de.complete.docDragData?.draggedDocuments; if (draggedDocs && super.onInternalDrop(e, de) && !this.sortField) { - let map = draggedDocs?.map(doc => this.rowIndex(doc)); + const map = draggedDocs?.map(doc => this.rowIndex(doc)); console.log(map); this.dataDoc[this.fieldKey ?? 'data'] = new List<Doc>([...this.sortedDocs.docs]); this.clearSelection(); @@ -619,16 +599,13 @@ export class CollectionSchemaView extends CollectionSubView() { DocumentView.addViewRenderedCb(doc, dv => dv.select(true)); console.log(doc.x); }); - this._lowestSelectedIndex = Math.min(...draggedDocs?.map(doc => this.rowIndex(doc))); + this._lowestSelectedIndex = Math.min(...(draggedDocs?.map(doc => this.rowIndex(doc)) ?? [])); return true; } return false; }; - onExternalDrop = async (e: React.DragEvent): Promise<void> => { - super.onExternalDrop(e, {}, undoBatch(action(docs => docs.map((doc: Doc) => this.addDocument(doc))))); - }; - + onExternalDrop = (e: React.DragEvent) => super.onExternalDrop(e, {}, docs => docs.map(doc => this.addDocument(doc))); onDividerDown = (e: React.PointerEvent) => setupMoveUpEvents(this, e, this.onDividerMove, emptyFunction, emptyFunction); @action @@ -724,9 +701,9 @@ export class CollectionSchemaView extends CollectionSubView() { case 'Enter': this._menuKeys.length > 0 && this._menuValue.length > 0 ? this.setKey(this._menuKeys[0]) - : action(() => { + : runInAction(() => { this._makeNewField = true; - })(); + }); break; case 'Escape': this.closeColumnMenu(); @@ -746,9 +723,9 @@ export class CollectionSchemaView extends CollectionSubView() { }; setColumnValues = (key: string, value: string) => { - const selectedDocs: Doc[] = new Array(); + const selectedDocs: Doc[] = []; this.childDocs.forEach(doc => { - let docIsSelected = this._selectedCells && !(this._selectedCells?.filter(d => d === doc).length === 0); + const docIsSelected = this._selectedCells && !(this._selectedCells?.filter(d => d === doc).length === 0); if (docIsSelected) { selectedDocs.push(doc); } @@ -763,7 +740,7 @@ export class CollectionSchemaView extends CollectionSubView() { setSelectedColumnValues = (key: string, value: string) => { this.childDocs.forEach(doc => { - let docIsSelected = this._selectedCells && !(this._selectedCells?.filter(d => d === doc).length === 0); + const docIsSelected = this._selectedCells && !(this._selectedCells?.filter(d => d === doc).length === 0); if (docIsSelected) { Doc.SetField(doc, key, value); } @@ -781,7 +758,7 @@ export class CollectionSchemaView extends CollectionSubView() { this._menuKeys = this.documentKeys; } } - + childDocsInclude = (key: string) => { let keyExists: boolean = false; this.childDocs.forEach(doc => {if (Object.keys(doc).includes(key)) keyExists = true;}) @@ -1013,17 +990,11 @@ export class CollectionSchemaView extends CollectionSubView() { } return ( <div key={key} className="schema-filter-option"> - <input + <input // type="checkbox" onPointerDown={e => e.stopPropagation()} onClick={e => e.stopPropagation()} - onChange={action((e: any) => { - if (e.target.checked) { - Doc.setDocFilter(this.Document, columnKey, key, 'check'); - } else { - Doc.setDocFilter(this.Document, columnKey, key, 'remove'); - } - })} + onChange={e => Doc.setDocFilter(this.Document, columnKey, key, e.target.checked ? 'check' : 'remove')} checked={bool} /> <span style={{ paddingLeft: 4 }}>{key}</span> @@ -1056,9 +1027,9 @@ export class CollectionSchemaView extends CollectionSubView() { this._mouseCoordinates = { x: e.clientX, y: e.clientY }; } if (this._colBeingDragged) { - let newIndex = this.findColDropIndex(e.clientX); - if (newIndex != this._draggedColIndex) this.moveColumn(this._draggedColIndex, newIndex ?? this._draggedColIndex); - this._draggedColIndex = newIndex ? newIndex : this._draggedColIndex; + const newIndex = this.findColDropIndex(e.clientX); + if (newIndex !== this._draggedColIndex) this.moveColumn(this._draggedColIndex, newIndex ?? this._draggedColIndex); + this._draggedColIndex = newIndex || this._draggedColIndex; this.highlightDraggedColumn(newIndex ?? this._draggedColIndex); } }; @@ -1095,7 +1066,7 @@ export class CollectionSchemaView extends CollectionSubView() { render() { return ( <div className="collectionSchemaView" ref={(ele: HTMLDivElement | null) => this.createDashEventsTarget(ele)} onDrop={this.onExternalDrop.bind(this)} onPointerMove={e => this.onPointerMove(e)}> - <div ref={this._menuTarget} style={{ background: 'red', top: 0, left: 0, position: 'absolute', zIndex: 10000 }}></div> + <div ref={this._menuTarget} style={{ background: 'red', top: 0, left: 0, position: 'absolute', zIndex: 10000 }} /> <div className="schema-table" style={{ width: `calc(100% - ${this.previewWidth}px)` }} @@ -1206,31 +1177,6 @@ export class CollectionSchemaView extends CollectionSubView() { } } -interface CollectionSchemaViewDocsProps { - schema: CollectionSchemaView; - setRef: (ref: HTMLDivElement | null) => void; - childDocs: () => { docs: Doc[] }; - rowHeight: () => number; -} - -@observer -class CollectionSchemaViewDocs extends React.Component<CollectionSchemaViewDocsProps> { - render() { - return ( - <div className="schema-table-content" ref={this.props.setRef} style={{ height: `calc(100% - ${CollectionSchemaView._newNodeInputHeight + this.props.rowHeight()}px)` }}> - {this.props.childDocs().docs.map((doc: Doc, index: number) => ( - <div key={doc[Id]} className="schema-row-wrapper" style={{ height: this.props.rowHeight() }}> - { - // eslint-disable-next-line no-use-before-define - <CollectionSchemaViewDoc doc={doc} schema={this.props.schema} index={index} rowHeight={this.props.rowHeight} /> - } - </div> - ))} - </div> - ); - } -} - interface CollectionSchemaViewDocProps { schema: CollectionSchemaView; index: number; @@ -1284,8 +1230,29 @@ class CollectionSchemaViewDoc extends ObservableReactComponent<CollectionSchemaV hideTitle hideDocumentButtonBar hideLinkAnchors - layout_fitWidth={returnTrue} + fitWidth={returnTrue} /> ); } } +interface CollectionSchemaViewDocsProps { + schema: CollectionSchemaView; + setRef: (ref: HTMLDivElement | null) => void; + childDocs: () => { docs: Doc[] }; + rowHeight: () => number; +} + +@observer +class CollectionSchemaViewDocs extends React.Component<CollectionSchemaViewDocsProps> { + render() { + return ( + <div className="schema-table-content" ref={this.props.setRef} style={{ height: `calc(100% - ${CollectionSchemaView._newNodeInputHeight + this.props.rowHeight()}px)` }}> + {this.props.childDocs().docs.map((doc: Doc, index: number) => ( + <div key={doc[Id]} className="schema-row-wrapper" style={{ height: this.props.rowHeight() }}> + <CollectionSchemaViewDoc doc={doc} schema={this.props.schema} index={index} rowHeight={this.props.rowHeight} /> + </div> + ))} + </div> + ); + } +} diff --git a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx index 059aa912e..760089ffb 100644 --- a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx +++ b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx @@ -41,7 +41,7 @@ export class SchemaRowBox extends ViewBoxBaseComponent<SchemaRowBoxProps>() { } @computed get schemaDoc() { - return this.DocumentView?.().containerViewPath?.().lastElement()?.Document; + return this.schemaView.Document; } @computed get rowIndex() { @@ -104,12 +104,13 @@ export class SchemaRowBox extends ViewBoxBaseComponent<SchemaRowBoxProps>() { e, returnFalse, emptyFunction, - undoable(e => { - e.stopPropagation(); + undoable(clickEv => { + clickEv.stopPropagation(); Doc.toggleLockedPosition(this.Document); - }, 'Delete Row') //(??) should this be something else? + }, 'toggle document lock') ) - }></IconButton> + } + /> <IconButton tooltip="open preview" icon={<FaExternalLinkAlt />} diff --git a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx index 48c86ac27..b017eb62b 100644 --- a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx +++ b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx @@ -82,7 +82,7 @@ export class SchemaTableCell extends ObservableReactComponent<SchemaTableCellPro doc = DocCast(doc.proto); } const parenCount = Math.max(0, protoCount - 1); - const color = protoCount === 0 || (fieldKey.startsWith('_') && Document[fieldKey] === undefined) ? 'black' : 'blue'; //color of text in cells + const color = protoCount === 0 || (fieldKey.startsWith('_') && Document[fieldKey] === undefined) ? 'black' : 'blue'; // color of text in cells const textDecoration = color !== 'black' && parenCount ? 'underline' : ''; const fieldProps: FieldViewProps = { childFilters: returnEmptyFilter, @@ -116,8 +116,7 @@ export class SchemaTableCell extends ObservableReactComponent<SchemaTableCellPro @computed get selected() { const selectedDocs: Doc[] | undefined = this._props.selectedCells(); - let isSelected = this._props.isRowActive() && selectedDocs?.filter(doc => doc === this._props.Document).length !== 0 && this._props.selectedCol() === this._props.col; - return isSelected; + return this._props.isRowActive() && selectedDocs?.filter(doc => doc === this._props.Document).length !== 0 && this._props.selectedCol() === this._props.col; } @computed get defaultCellContent() { @@ -333,7 +332,7 @@ export class SchemaRTFCell extends ObservableReactComponent<SchemaTableCellProps @computed get selected() { const selected = this._props.selectedCells(); return this._props.isRowActive() && selected && selected?.filter(doc => doc === this._props.Document).length !== 0 && this._props.selectedCol() === this._props.col; - //return this._props.isRowActive() && selected?.[0] === this._props.Document && selected[1] === this._props.col; + // return this._props.isRowActive() && selected?.[0] === this._props.Document && selected[1] === this._props.col; } // if the text box blurs and none of its contents are focused(), then the edit finishes |
