aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraidahosa1 <aisosa_idahosa@brown.edu>2024-09-17 13:43:40 -0400
committeraidahosa1 <aisosa_idahosa@brown.edu>2024-09-17 13:43:40 -0400
commit64635a0a0e07a107c4019e366feb2fe5b01c8b04 (patch)
treece6f53c2cd106485a680b17edecf355eed6654f0
parent597ad3716286e9eff29316605514218889690da5 (diff)
ready to pull
-rw-r--r--package-lock.json153
-rw-r--r--src/client/documents/Documents.ts7
-rw-r--r--src/client/views/DocumentButtonBar.tsx54
-rw-r--r--src/client/views/DocumentDecorations.tsx4
-rw-r--r--src/client/views/StyleProvider.tsx3
-rw-r--r--src/client/views/collections/CollectionCardDeckView.scss58
-rw-r--r--src/client/views/collections/CollectionCardDeckView.tsx19
-rw-r--r--src/client/views/global/globalScripts.ts12
-rw-r--r--src/client/views/nodes/IconTagBox.scss20
-rw-r--r--src/client/views/pdf/GPTPopup/GPTPopup.scss12
10 files changed, 145 insertions, 197 deletions
diff --git a/package-lock.json b/package-lock.json
index fabc6d90a..d20aac0c5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -94,7 +94,7 @@
"D": "^1.0.0",
"d3": "^7.8.5",
"depcheck": "^1.4.7",
- "dotenv": "^16.3.1",
+ "dotenv": "^16.4.5",
"eslint-webpack-plugin": "^4.1.0",
"exif": "^0.6.0",
"exifr": "^7.1.3",
@@ -133,6 +133,7 @@
"image-data-uri": "^2.0.1",
"image-size": "^1.0.2",
"image-size-stream": "^1.1.0",
+ "install": "^0.13.0",
"is-plain-obj": "^4.1.0",
"jimp": "^1.0.4",
"jpeg-autorotate": "^9.0.0",
@@ -157,7 +158,7 @@
"node-stream-zip": "^1.15.0",
"nodemailer": "^6.9.7",
"nodemon": "^3.0.2",
- "npm": "^10.2.5",
+ "npm": "^10.8.1",
"openai": "^4.26.0",
"p-limit": "^6.1.0",
"passport": "^0.7.0",
@@ -191,6 +192,7 @@
"react-compound-slider": "^3.4.0",
"react-datepicker": "^7.3.0",
"react-dom": "^18.2.0",
+ "react-draggable": "^4.4.6",
"react-grid-layout": "^1.4.4",
"react-icons": "^5.0.1",
"react-jsx-parser": "^2.0.0",
@@ -249,7 +251,7 @@
"xregexp": "^5.1.1"
},
"devDependencies": {
- "@eslint/js": "^9.1.1",
+ "@eslint/js": "^9.10.0",
"@types/adm-zip": "^0.5.5",
"@types/animejs": "^3.1.12",
"@types/archiver": "^6.0.2",
@@ -298,9 +300,9 @@
"@types/youtube": "^0.1.0",
"chai": "^5.0.0",
"cross-env": "^7.0.3",
- "eslint": "^9.9.0",
- "eslint-plugin-react": "^7.34.1",
- "globals": "^15.1.0",
+ "eslint": "^9.10.0",
+ "eslint-plugin-react": "^7.36.1",
+ "globals": "^15.9.0",
"jsdom": "^25.0.0",
"mocha": "^10.2.0",
"prettier": "^3.1.0",
@@ -309,7 +311,7 @@
"ts-loader": "^9.5.1",
"ts-node": "^10.9.1",
"ts-node-dev": "^2.0.0",
- "typescript-eslint": "^8.2.0",
+ "typescript-eslint": "^8.6.0",
"webpack-dev-server": "^5.0.4"
},
"engines": {
@@ -2698,9 +2700,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.9.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz",
- "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz",
+ "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
@@ -2713,6 +2715,17 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz",
+ "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==",
+ "dependencies": {
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
"node_modules/@ffmpeg/core": {
"version": "0.12.6",
"resolved": "https://registry.npmjs.org/@ffmpeg/core/-/core-0.12.6.tgz",
@@ -10064,16 +10077,16 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz",
- "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz",
+ "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.4.0",
- "@typescript-eslint/type-utils": "8.4.0",
- "@typescript-eslint/utils": "8.4.0",
- "@typescript-eslint/visitor-keys": "8.4.0",
+ "@typescript-eslint/scope-manager": "8.6.0",
+ "@typescript-eslint/type-utils": "8.6.0",
+ "@typescript-eslint/utils": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@@ -10097,15 +10110,15 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz",
- "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz",
+ "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "8.4.0",
- "@typescript-eslint/types": "8.4.0",
- "@typescript-eslint/typescript-estree": "8.4.0",
- "@typescript-eslint/visitor-keys": "8.4.0",
+ "@typescript-eslint/scope-manager": "8.6.0",
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/typescript-estree": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0",
"debug": "^4.3.4"
},
"engines": {
@@ -10125,13 +10138,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz",
- "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz",
+ "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "8.4.0",
- "@typescript-eslint/visitor-keys": "8.4.0"
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -10142,13 +10155,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz",
- "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz",
+ "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.4.0",
- "@typescript-eslint/utils": "8.4.0",
+ "@typescript-eslint/typescript-estree": "8.6.0",
+ "@typescript-eslint/utils": "8.6.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
@@ -10166,9 +10179,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz",
- "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz",
+ "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -10179,13 +10192,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz",
- "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz",
+ "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "8.4.0",
- "@typescript-eslint/visitor-keys": "8.4.0",
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -10234,15 +10247,15 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz",
- "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz",
+ "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.4.0",
- "@typescript-eslint/types": "8.4.0",
- "@typescript-eslint/typescript-estree": "8.4.0"
+ "@typescript-eslint/scope-manager": "8.6.0",
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/typescript-estree": "8.6.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -10256,12 +10269,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz",
- "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz",
+ "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "8.4.0",
+ "@typescript-eslint/types": "8.6.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
@@ -17701,15 +17714,16 @@
}
},
"node_modules/eslint": {
- "version": "9.9.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz",
- "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz",
+ "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.11.0",
"@eslint/config-array": "^0.18.0",
"@eslint/eslintrc": "^3.1.0",
- "@eslint/js": "9.9.1",
+ "@eslint/js": "9.10.0",
+ "@eslint/plugin-kit": "^0.1.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.3.0",
"@nodelib/fs.walk": "^1.2.8",
@@ -17732,7 +17746,6 @@
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
@@ -17759,9 +17772,9 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.35.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz",
- "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==",
+ "version": "7.36.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
+ "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
"dev": true,
"dependencies": {
"array-includes": "^3.1.8",
@@ -20914,6 +20927,14 @@
"inspect-function": "^0.3.1"
}
},
+ "node_modules/install": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz",
+ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/internal-slot": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
@@ -32710,14 +32731,14 @@
"integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ=="
},
"node_modules/typescript-eslint": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz",
- "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz",
+ "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.4.0",
- "@typescript-eslint/parser": "8.4.0",
- "@typescript-eslint/utils": "8.4.0"
+ "@typescript-eslint/eslint-plugin": "8.6.0",
+ "@typescript-eslint/parser": "8.6.0",
+ "@typescript-eslint/utils": "8.6.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts
index 623a5251e..aac15059e 100644
--- a/src/client/documents/Documents.ts
+++ b/src/client/documents/Documents.ts
@@ -488,14 +488,7 @@ export class DocumentOptions {
userColor?: STRt = new StrInfo('color associated with a Dash user (seen in header fields of shared documents)');
cardSort?: STRt = new StrInfo('way cards are sorted in deck view');
- // cardSortForDropDown?: STRt = new StrInfo('needed for dropdown and i dont know why')
- // cardSort_customField?: STRt = new StrInfo('field key used for sorting cards');
- cardSort_activeIcons?: List<string>; //icons each card is tagges with
- // cardSort_visibleSortGroups?: List<string>; // which sorting values are being filtered (shown)
-
- // cardSort_visibleSortGroups?: List<number>; // which sorting values are being filtered (shown)
cardSort_isDesc?: BOOLt = new BoolInfo('whether the cards are sorted ascending or descending');
- // test?: STRt = new StrInfo('testing for filtering')
}
export const DocOptions = new DocumentOptions();
diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx
index ea859a1e5..ccde1de80 100644
--- a/src/client/views/DocumentButtonBar.tsx
+++ b/src/client/views/DocumentButtonBar.tsx
@@ -9,7 +9,7 @@ import * as React from 'react';
import { FaEdit } from 'react-icons/fa';
import { returnFalse, returnTrue, setupMoveUpEvents, simulateMouseClick } from '../../ClientUtils';
import { emptyFunction } from '../../Utils';
-import { Doc, DocListCast } from '../../fields/Doc';
+import { Doc } from '../../fields/Doc';
import { Cast, DocCast } from '../../fields/Types';
import { DocUtils, IsFollowLinkScript } from '../documents/DocUtils';
import { CalendarManager } from '../util/CalendarManager';
@@ -264,6 +264,26 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (
}
@computed
+ get calendarButton() {
+ const targetDoc = this.view0?.Document;
+ return !targetDoc ? null : (
+ <Tooltip title={<div className="dash-calendar-button">Open calendar menu</div>}>
+ <div
+ className="documentButtonBar-icon"
+ style={{ color: 'white' }}
+ onClick={() => {
+ CalendarManager.Instance.open(this.view0, targetDoc);
+ }}>
+ <FontAwesomeIcon className="documentdecorations-icon" icon={faCalendarDays as IconLookup} />
+ </div>
+ </Tooltip>
+ );
+ }
+
+ /**
+ * Allows for both the keywords and the icon tags to be shown using a quasi- multitoggle
+ */
+ @computed
get keywordButton() {
const targetDoc = this.view0?.Document;
@@ -279,21 +299,10 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (
size="sm"
icon={icon}
onClick={e => {
- // console.log('wtfff')
- // name === 'tags' ??
if (name === 'tags'){
- undoable(e => (targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags)), 'show icon tags')
+ (targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags))
} else {
- undoable(e => {
- const showing = DocumentView.Selected().some(dv => dv.layoutDoc._layout_showTags);
- DocumentView.Selected().forEach(dv => {
- dv.layoutDoc._layout_showTags = !showing;
- if (e.shiftKey)
- DocListCast(dv.Document[Doc.LayoutFieldKey(dv.Document) + '_annotations']).forEach(doc => {
- if (doc.face) doc.hidden = showing;
- });
- });
- }, 'show Doc tags')
+ (targetDoc && (targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels))
}
@@ -309,15 +318,23 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (
- return !DocumentView.Selected().length ? null : (
+ return !targetDoc ? null : (
<div className='documentButtonBar-icon'>
<div className="documentButtonBar-pinTypes" style = {{width: '40px'}}>
{metaBtn('tags', 'star')}
{metaBtn("keywords", 'id-card')}
</div>
- <Tooltip title={<div className="dash-keyword-button">Open keyword / icon tag menu</div>}>
- <div className="documentButtonBar-icon" style={{ color: 'white' }}>
+ <Tooltip title={<div className="dash-keyword-button">Open keyword menu</div>}>
+ <div
+ className="documentButtonBar-icon"
+ style={{ color: 'white' }}
+ onClick={() => {
+ // targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags;
+ }}
+ >
+
+
<FontAwesomeIcon className="documentdecorations-icon" icon="tag" />
</div>
</Tooltip>
@@ -495,10 +512,11 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (
{!DocumentView.Selected().some(v => v.allLinks.length) ? null : <div className="documentButtonBar-button">{this.followLinkButton}</div>}
<div className="documentButtonBar-button">{this.pinButton}</div>
<div className="documentButtonBar-button">{this.recordButton}</div>
+ <div className="documentButtonBar-button">{this.calendarButton}</div>
<div className="documentButtonBar-button">{this.keywordButton}</div>
{!Doc.UserDoc().documentLinksButton_fullMenu ? null : <div className="documentButtonBar-button">{this.shareButton}</div>}
<div className="documentButtonBar-button">{this.menuButton}</div>
</div>
);
}
-}
+} \ No newline at end of file
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx
index 45ce681aa..37b1f04e7 100644
--- a/src/client/views/DocumentDecorations.tsx
+++ b/src/client/views/DocumentDecorations.tsx
@@ -773,10 +773,6 @@ export class DocumentDecorations extends ObservableReactComponent<DocumentDecora
const freeformDoc = DocumentView.Selected().some(v => CollectionFreeFormDocumentView.from(v));
- const keyWordTrans = doc[DocData].showLabels ? NumCast(doc[DocData].keywordHeight) : 0
- const tagTrans = doc[DocData].showIconTags ? NumCast(doc[DocData].tagHeight) : 0
-
-
return (
<div className="documentDecorations" style={{ display: this._showNothing && !freeformDoc ? 'none' : undefined }}>
<div
diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx
index cda39b474..54698ab2d 100644
--- a/src/client/views/StyleProvider.tsx
+++ b/src/client/views/StyleProvider.tsx
@@ -367,13 +367,12 @@ export function DefaultStyleProvider(doc: Opt<Doc>, props: Opt<FieldViewProps &
</Tooltip>
);
};
- const tags = () => props?.DocumentView?.() && CollectionFreeFormDocumentView.from(props.DocumentView()) ? <TagsView View={props.DocumentView()}/> : null;
+ const tags = () => props?.DocumentView?.() ? <TagsView Views={[props.DocumentView()]}/> : null;
const iconTags = () => {
if (doc && doc![DocData].showIconTags)
{return (<IconTagBox doc= {doc}></IconTagBox>)}
}
-
return (
<>
{paint()}
diff --git a/src/client/views/collections/CollectionCardDeckView.scss b/src/client/views/collections/CollectionCardDeckView.scss
index 1728f7aee..5ccc3d9a8 100644
--- a/src/client/views/collections/CollectionCardDeckView.scss
+++ b/src/client/views/collections/CollectionCardDeckView.scss
@@ -12,7 +12,6 @@
height: 35px;
border-radius: 50%;
background-color: $dark-gray;
- // border-color: $medium-blue;
margin: 5px; // transform: translateY(-50px);
}
}
@@ -20,7 +19,6 @@
.card-wrapper {
display: grid;
grid-template-columns: repeat(10, 1fr);
- // width: 100%;
transform-origin: top left;
position: absolute;
@@ -31,33 +29,6 @@
transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);
}
-// .card-button-container {
-// display: flex;
-// padding: 3px;
-// // width: 300px;
-// // height:100px;
-// pointer-events: none; /* This ensures the container does not capture hover events */
-
-// background-color: rgb(218, 218, 218); /* Background color of the container */
-// border-radius: 50px; /* Rounds the corners of the container */
-// transform: translateY(25px);
-// // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */
-// align-items: center; /* Centers buttons vertically */
-// justify-content: start; /* Centers buttons horizontally */
-
-// button {
-// pointer-events: auto; /* Re-enable pointer events for the buttons */
-
-// width: 70px;
-// height: 70px;
-// border-radius: 50%;
-// background-color: $dark-gray;
-// // border-color: $medium-blue;
-// margin: 5px; // transform: translateY(-50px);
-// background-color: transparent;
-// }
-// }
-
.no-card-span{
position: relative;
width: fit-content;
@@ -70,28 +41,6 @@
-// button:hover {
-// transform: translateY(-50px);
-// }
-
-// .card-wrapper::after {
-// content: "";
-// width: 100%; /* Forces wrapping */
-// }
-
-// .card-wrapper > .card-item:nth-child(10n)::after {
-// content: "";
-// width: 100%; /* Forces wrapping after every 10th item */
-// }
-
-// .card-row{
-// display: flex;
-// position: absolute;
-// align-items: center;
-// transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);
-
-// }
-
.card-item-inactive,
.card-item-active,
.card-item {
@@ -101,18 +50,11 @@
flex-direction: column;
}
-// .card-item:hover {
-// box-shadow: 0 20px 20px $medium-blue;
-// transform: scale(1.05);
-
-
-// }
.card-item-inactive {
opacity: 0.5;
}
.card-item-active {
- // position: absolute;
z-index: 100;
}
diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx
index 3d9f28a49..bb932b8b2 100644
--- a/src/client/views/collections/CollectionCardDeckView.tsx
+++ b/src/client/views/collections/CollectionCardDeckView.tsx
@@ -1,9 +1,9 @@
import { IReactionDisposer, ObservableMap, action, computed, makeObservable, observable, reaction } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
-import { ClientUtils, DashColor, returnFalse, returnZero } from '../../../ClientUtils';
-import { emptyFunction, numberRange } from '../../../Utils';
-import { Doc, NumListCast, StrListCast } from '../../../fields/Doc';
+import { ClientUtils, returnFalse, returnZero } from '../../../ClientUtils';
+import { emptyFunction } from '../../../Utils';
+import { Doc, StrListCast } from '../../../fields/Doc';
import { DocData } from '../../../fields/DocSymbols';
import { Id } from '../../../fields/FieldSymbols';
import { BoolCast, Cast, DateCast, NumCast, RTFCast, ScriptCast, StrCast } from '../../../fields/Types';
@@ -144,18 +144,7 @@ export class CollectionCardView extends CollectionSubView() {
* custom group
*/
@computed get childDocsWithoutLinks() {
- const regularDocs = this.childDocs.filter(l => l.type !== DocumentType.LINK);
- const activeGroups = StrListCast(this.Document.cardSort_visibleSortGroups);
-
- if (activeGroups.length > 0) {
- return regularDocs.filter(doc => {
- const activeTags = StrListCast(doc.cardSort_activeIcons);
- return activeTags !== undefined && activeTags.some(tag => activeGroups.includes(tag));
- });
- }
-
- // Default return for non-custom cardSort or other cases, filtering out links
- return regularDocs;
+ return this.childDocs.filter(l => l.type !== DocumentType.LINK);
}
/**
diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts
index 53e10d44d..65bd524fe 100644
--- a/src/client/views/global/globalScripts.ts
+++ b/src/client/views/global/globalScripts.ts
@@ -147,7 +147,7 @@ ScriptingGlobals.add(function showFreeform(attr: 'hcenter' | 'vcenter' | 'grid'
}
// prettier-ignore
- const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'chat' | 'up' | 'down' | 'pile' | 'toggle-chat' | 'tag',
+ const map: Map<'flashcards' | 'hcenter' | 'vcenter' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'chat' | 'up' | 'down' | 'pile' | 'toggle-chat' | 'tag',
{
waitForRender?: boolean;
checkResult: (doc: Doc) => boolean;
@@ -169,9 +169,13 @@ ScriptingGlobals.add(function showFreeform(attr: 'hcenter' | 'vcenter' | 'grid'
else (dv.ComponentView as CollectionFreeFormView)?.fitContentOnce();
},
}],
- ['center', {
- checkResult: (doc: Doc) => BoolCast(doc?._stacking_alignCenter, false),
- setDoc: (doc: Doc) => { doc._stacking_alignCenter = !doc._stacking_alignCenter; },
+ ['vcenter', {
+ checkResult: (doc:Doc) => !StrCast(doc?._layout_dontCenter).includes('y'),
+ setDoc: (doc:Doc) => { doc._layout_dontCenter = StrCast(doc.layout_dontCenter).includes('y') ? StrCast(doc.layout_dontCenter).replace(/y/,"") : StrCast(doc.layout_dontCenter) + 'y'; },
+ }],
+ ['hcenter', {
+ checkResult: (doc:Doc) => !StrCast(doc?._layout_dontCenter).includes('x'),
+ setDoc: (doc:Doc) => { doc._layout_dontCenter = StrCast(doc.layout_dontCenter).includes('x') ? StrCast(doc.layout_dontCenter).replace(/x/,"") : 'x'+ StrCast(doc.layout_dontCenter); },
}],
['clusters', {
waitForRender: true, // flags that undo batch should terminate after a re-render giving the script the chance to fire
diff --git a/src/client/views/nodes/IconTagBox.scss b/src/client/views/nodes/IconTagBox.scss
index 8c0f92c90..211a961c1 100644
--- a/src/client/views/nodes/IconTagBox.scss
+++ b/src/client/views/nodes/IconTagBox.scss
@@ -4,27 +4,21 @@
display: flex;
padding: 3px;
position: absolute;
- // width: 300px;
- // height:100px;
- pointer-events: none; /* This ensures the container does not capture hover events */
-
- background-color: rgb(218, 218, 218); /* Background color of the container */
- border-radius: 50px; /* Rounds the corners of the container */
+ pointer-events: none;
+ background-color: rgb(218, 218, 218);
+ border-radius: 50px;
transform: translateY(25px);
- // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */
- align-items: center; /* Centers buttons vertically */
- justify-content: start; /* Centers buttons horizontally */
+ align-items: center;
+ justify-content: start;
button {
- pointer-events: auto; /* Re-enable pointer events for the buttons */
+ pointer-events: auto;
transform: translateY(-7.5px);
-
width: 30px;
height: 30px;
border-radius: 50%;
background-color: $dark-gray;
- // border-color: $medium-blue;
- margin: 5px; // transform: translateY(-50px);
+ margin: 5px;
background-color: transparent;
}
} \ No newline at end of file
diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.scss b/src/client/views/pdf/GPTPopup/GPTPopup.scss
index 1defd1a7f..0247dc10c 100644
--- a/src/client/views/pdf/GPTPopup/GPTPopup.scss
+++ b/src/client/views/pdf/GPTPopup/GPTPopup.scss
@@ -104,9 +104,9 @@ $highlightedText: #82e0ff;
display: flex;
flex-direction: column;
width: 100%;
- max-height: calc(100vh - 80px); /* Height minus the input box and some padding */
+ max-height: calc(100vh - 80px);
overflow-y: auto;
- padding-bottom: 60px; /* Space for the input */
+ padding-bottom: 60px;
}
.chat-bubbles {
@@ -150,15 +150,7 @@ $highlightedText: #82e0ff;
}
- // button {
- // font-size: 9px;
- // padding: 10px;
- // color: #ffffff;
- // width: 100%;
- // background-color: $button;
- // border-radius: 5px;
- // }
.text-btn {
&:hover {