solid-panes 4.2.6 → 4.4.1-test.0
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/README.md +45 -1
- package/dist/0314353e28ce6e5539af.svg +9 -0
- package/dist/04567ff683933c35c465.png +0 -0
- package/dist/10163fd9b5a0e00d63a0.png +0 -0
- package/dist/1234dcb2eec2e45f252b.png +0 -0
- package/dist/20899934157df4db56cb.png +0 -0
- package/dist/33760bf79f097f449da5.png +0 -0
- package/dist/4cceba29ab33b1ddd9bb.svg +6 -0
- package/dist/578d2b6ed32e7624164e.png +0 -0
- package/dist/5f62a5b2b7e99b9640c7.png +0 -0
- package/dist/6525766ecd288ec60129.png +0 -0
- package/dist/7800be6f6c4b5b0f4f20.png +0 -0
- package/dist/7b7538c6f6b317968009.svg +9 -0
- package/dist/92d03142abe6efc0b42d.svg +6 -0
- package/dist/976473cf5fe24d657d4b.png +0 -0
- package/dist/RDFXMLPane.css +70 -0
- package/dist/RDFXMLPane.d.ts +13 -0
- package/dist/RDFXMLPane.d.ts.map +1 -0
- package/dist/RDFXMLPane.js +46 -4
- package/dist/bda84f59e7216675a208.png +0 -0
- package/dist/cd68e8f3990ba8b2139e.png +0 -0
- package/dist/dashboard/basicPreferences.d.ts.map +1 -1
- package/dist/dashboard/basicPreferences.js +1 -0
- package/dist/dashboard/dashboardPane.d.ts.map +1 -1
- package/dist/dashboard/dashboardPane.js +9 -3
- package/dist/dashboard/homepage.d.ts +1 -1
- package/dist/dashboard/homepage.d.ts.map +1 -1
- package/dist/dashboard/homepage.js +5 -35
- package/dist/dataContentPane.css +271 -0
- package/dist/dataContentPane.d.ts +14 -0
- package/dist/dataContentPane.d.ts.map +1 -0
- package/dist/dataContentPane.js +68 -101
- package/dist/defaultPane.css +97 -0
- package/dist/defaultPane.d.ts +14 -0
- package/dist/defaultPane.d.ts.map +1 -0
- package/dist/defaultPane.js +9 -2
- package/dist/e7074a7e2cb69e51cfd3.png +0 -0
- package/dist/f3772696fb7ee53c23d8.png +0 -0
- package/dist/form/formPane.css +120 -0
- package/dist/form/pane.d.ts +4 -0
- package/dist/form/pane.d.ts.map +1 -0
- package/dist/form/pane.js +120 -54
- package/dist/home/homePane.d.ts.map +1 -1
- package/dist/home/homePane.js +2 -0
- package/dist/humanReadablePane.css +129 -0
- package/dist/humanReadablePane.d.ts +13 -0
- package/dist/humanReadablePane.d.ts.map +1 -0
- package/dist/humanReadablePane.js +53 -16
- package/dist/icons/clock.svg +7 -0
- package/dist/icons/comment.svg +6 -0
- package/dist/icons/dashboard.svg +9 -0
- package/dist/icons/downArrow.svg +6 -0
- package/dist/icons/folder.svg +6 -0
- package/dist/icons/friends.svg +9 -0
- package/dist/icons/help.svg +8 -0
- package/dist/icons/iconHelper.d.ts +2 -0
- package/dist/icons/iconHelper.d.ts.map +1 -0
- package/dist/icons/iconHelper.js +23 -0
- package/dist/icons/menu.svg +8 -0
- package/dist/icons/person.svg +6 -0
- package/dist/icons/personInCircle.svg +8 -0
- package/dist/icons/sharing.svg +10 -0
- package/dist/icons/signOut.svg +8 -0
- package/dist/icons/signUp.svg +9 -0
- package/dist/icons/star.svg +3 -0
- package/dist/imagePane.css +4 -0
- package/dist/imagePane.d.ts +12 -0
- package/dist/imagePane.d.ts.map +1 -0
- package/dist/imagePane.js +19 -21
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -4
- package/dist/internal/internalPane.css +14 -0
- package/dist/internal/internalPane.d.ts +1 -0
- package/dist/internal/internalPane.d.ts.map +1 -1
- package/dist/internal/internalPane.js +6 -6
- package/dist/mainPage/footer.d.ts +14 -2
- package/dist/mainPage/footer.d.ts.map +1 -1
- package/dist/mainPage/footer.js +21 -13
- package/dist/mainPage/header.d.ts +16 -1
- package/dist/mainPage/header.d.ts.map +1 -1
- package/dist/mainPage/header.js +179 -61
- package/dist/mainPage/index.d.ts +16 -1
- package/dist/mainPage/index.d.ts.map +1 -1
- package/dist/mainPage/index.js +61 -7
- package/dist/mainPage/menu.css +243 -0
- package/dist/mainPage/menu.d.ts +7 -0
- package/dist/mainPage/menu.d.ts.map +1 -0
- package/dist/mainPage/menu.js +436 -0
- package/dist/n3Pane.css +49 -0
- package/dist/n3Pane.d.ts +13 -0
- package/dist/n3Pane.d.ts.map +1 -0
- package/dist/n3Pane.js +36 -4
- package/dist/outline/context.d.ts +2 -2
- package/dist/outline/context.d.ts.map +1 -1
- package/dist/outline/context.js +5 -2
- package/dist/outline/manager.css +12 -14
- package/dist/outline/manager.js +172 -82
- package/dist/outline/userInput.js +6 -3
- package/dist/pad/padPane.css +40 -0
- package/dist/pad/padPane.d.ts +1 -0
- package/dist/pad/padPane.d.ts.map +1 -1
- package/dist/pad/padPane.js +33 -22
- package/dist/playlist/playlistPane.js +2 -6
- package/dist/profileUtils/ownerProfile.d.ts +5 -0
- package/dist/profileUtils/ownerProfile.d.ts.map +1 -0
- package/dist/profileUtils/ownerProfile.js +84 -0
- package/dist/registerPanes.js +12 -12
- package/dist/schedule/schedulePane.css +294 -0
- package/dist/schedule/schedulePane.d.ts +23 -0
- package/dist/schedule/schedulePane.d.ts.map +1 -0
- package/dist/schedule/schedulePane.js +161 -61
- package/dist/slideshow/slideshowPane.js +1 -1
- package/dist/social/editProfileDetails.d.ts +19 -0
- package/dist/social/editProfileDetails.d.ts.map +1 -0
- package/dist/social/editProfileDetails.js +362 -0
- package/dist/social/icons.d.ts +7 -0
- package/dist/social/icons.d.ts.map +1 -0
- package/dist/social/icons.js +95 -0
- package/dist/social/socialPane.css +1464 -0
- package/dist/social/socialPane.d.ts +30 -0
- package/dist/social/socialPane.d.ts.map +1 -0
- package/dist/social/socialPane.js +651 -0
- package/dist/social/socialSections.d.ts +77 -0
- package/dist/social/socialSections.d.ts.map +1 -0
- package/dist/social/socialSections.js +393 -0
- package/dist/social/spinner.d.ts +3 -0
- package/dist/social/spinner.d.ts.map +1 -0
- package/dist/social/spinner.js +13 -0
- package/dist/social/triage.d.ts +17 -0
- package/dist/social/triage.d.ts.map +1 -0
- package/dist/social/triage.js +79 -0
- package/dist/solid-panes.js +49544 -18164
- package/dist/solid-panes.js.map +1 -1
- package/dist/solid-panes.min.js +3884 -240
- package/dist/solid-panes.min.js.map +1 -1
- package/dist/{style → styles}/tabbedtab.css +0 -281
- package/dist/styles/utilities.css +5 -0
- package/dist/tabbed/tabbedPane.d.ts.map +1 -1
- package/dist/tabbed/tabbedPane.js +2 -0
- package/dist/versionInfo.js +14 -14
- package/package.json +37 -31
- package/dist/socialPane.js +0 -430
package/dist/mainPage/footer.js
CHANGED
|
@@ -4,18 +4,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createFooter = createFooter;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* links in the footer
|
|
10
|
-
*/
|
|
11
|
-
const SOLID_PROJECT_URL = 'https://solidproject.org';
|
|
12
|
-
const SOLID_PROJECT_NAME = 'solidproject.org';
|
|
7
|
+
require("solid-ui/components/footer");
|
|
13
8
|
function createFooter(store) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
let footer = document.querySelector('solid-ui-footer');
|
|
10
|
+
if (!footer) {
|
|
11
|
+
footer = document.createElement('solid-ui-footer');
|
|
12
|
+
footer.className = 'menu-footer';
|
|
13
|
+
footer.style.position = 'static';
|
|
14
|
+
footer.style.width = '100%';
|
|
15
|
+
const navMenu = document.getElementById('NavMenu');
|
|
16
|
+
if (navMenu) {
|
|
17
|
+
navMenu.appendChild(footer);
|
|
18
|
+
} else {
|
|
19
|
+
document.body.appendChild(footer);
|
|
20
|
+
}
|
|
21
|
+
} else {
|
|
22
|
+
const navMenu = document.getElementById('NavMenu');
|
|
23
|
+
if (navMenu && footer.parentElement !== navMenu) {
|
|
24
|
+
navMenu.appendChild(footer);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
footer.store = store;
|
|
28
|
+
return footer;
|
|
21
29
|
}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
import 'solid-ui/components/header';
|
|
2
|
+
import { Header } from 'solid-ui/components/header';
|
|
3
|
+
import { OutlineManager } from '../outline/manager';
|
|
4
|
+
import { LiveStore } from 'rdflib';
|
|
5
|
+
export declare const HELP_MENU_LIST: {
|
|
6
|
+
label: string;
|
|
7
|
+
url: string;
|
|
8
|
+
target: string;
|
|
9
|
+
}[];
|
|
10
|
+
type ManagedHeader = Header & {
|
|
11
|
+
__solidPanesListenersAttached?: boolean;
|
|
12
|
+
__solidPanesOutliner?: OutlineManager;
|
|
13
|
+
};
|
|
14
|
+
export declare function createHeader(store: LiveStore, outliner: OutlineManager): Promise<ManagedHeader>;
|
|
15
|
+
export declare function refreshHeader(outliner: OutlineManager, headerElement?: Header): Promise<Header | null>;
|
|
16
|
+
export {};
|
|
2
17
|
//# sourceMappingURL=header.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/mainPage/header.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/mainPage/header.ts"],"names":[],"mappings":"AAEA,OAAO,4BAA4B,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AA4BlC,eAAO,MAAM,cAAc;;;;GAG1B,CAAA;AAID,KAAK,aAAa,GAAG,MAAM,GAAG;IAC5B,6BAA6B,CAAC,EAAE,OAAO,CAAA;IACvC,oBAAoB,CAAC,EAAE,cAAc,CAAA;CACtC,CAAA;AAcD,wBAAsB,YAAY,CAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,0BA6B7E;AAoDD,wBAAsB,aAAa,CAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,MAAM,0BAyBpF"}
|
package/dist/mainPage/header.js
CHANGED
|
@@ -3,83 +3,201 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.HELP_MENU_LIST = void 0;
|
|
6
7
|
exports.createHeader = createHeader;
|
|
8
|
+
exports.refreshHeader = refreshHeader;
|
|
7
9
|
var _solidLogic = require("solid-logic");
|
|
8
10
|
var _solidUi = require("solid-ui");
|
|
11
|
+
require("solid-ui/components/header");
|
|
12
|
+
var _help = _interopRequireDefault(require("../icons/help.svg?raw"));
|
|
13
|
+
var _person = _interopRequireDefault(require("../icons/person.svg?raw"));
|
|
14
|
+
var _signOut = _interopRequireDefault(require("../icons/signOut.svg?raw"));
|
|
15
|
+
var _personInCircle = _interopRequireDefault(require("../icons/personInCircle.svg?raw"));
|
|
16
|
+
var _downArrow = _interopRequireDefault(require("../icons/downArrow.svg?raw"));
|
|
17
|
+
var _signUp = _interopRequireDefault(require("../icons/signUp.svg?raw"));
|
|
18
|
+
var _iconHelper = require("../icons/iconHelper");
|
|
19
|
+
var _menu = require("./menu");
|
|
20
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
21
|
/**
|
|
10
22
|
* menu icons
|
|
11
23
|
*/
|
|
12
|
-
const HELP_MENU_ICON =
|
|
24
|
+
const HELP_MENU_ICON = (0, _iconHelper.createUiIcon)(_help.default, 'Help Icon', '#ffffff');
|
|
25
|
+
const LOGIN_ICON = (0, _iconHelper.createUiIcon)(_person.default, 'LogIn Icon', '#ffffff');
|
|
26
|
+
const SIGNUP_ICON = (0, _iconHelper.createUiIcon)(_signUp.default, 'SignUp Icon', '#ffffff');
|
|
27
|
+
const LOGOUT_ICON = (0, _iconHelper.createUiIcon)(_signOut.default, 'LogOut Icon', '#000000');
|
|
28
|
+
const DEFAULT_AVATAR_ICON = (0, _iconHelper.createUiIcon)(_personInCircle.default, 'Default Avatar Icon', '#6A7282');
|
|
29
|
+
const DOWN_ARROW_ICON = (0, _iconHelper.createUiIcon)(_downArrow.default, 'Down Arrow Icon', '#ffffff');
|
|
13
30
|
const SOLID_ICON_URL = 'https://solidproject.org/assets/img/solid-emblem.svg';
|
|
14
|
-
|
|
15
31
|
/**
|
|
16
32
|
* menu elements
|
|
17
33
|
*/
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
34
|
+
const SIGN_IN_MENU_ITEM = 'Log In';
|
|
35
|
+
const SIGN_OUT_MENU_ITEM = 'Log Out';
|
|
36
|
+
const SIGN_UP_MENU_ITEM = 'Sign Up';
|
|
37
|
+
const SIGN_UP__MENU_LINK = 'https://solidproject.org/get_a_pod';
|
|
38
|
+
|
|
39
|
+
// data structure extracted for solid-ui-header binding
|
|
40
|
+
const HELP_MENU_LIST = exports.HELP_MENU_LIST = [{
|
|
41
|
+
label: 'User guide',
|
|
42
|
+
url: 'https://solidos.github.io/userguide/',
|
|
43
|
+
target: '_blank'
|
|
44
|
+
}, {
|
|
45
|
+
label: 'Report a problem',
|
|
46
|
+
url: 'https://github.com/solidos/solidos/issues',
|
|
47
|
+
target: '_blank'
|
|
48
|
+
}];
|
|
49
|
+
const HEADER_MOBILE_STYLE_ID = 'solid-ui-header-mobile-style';
|
|
50
|
+
function ensureMobileHeaderStyles() {
|
|
51
|
+
if (document.getElementById(HEADER_MOBILE_STYLE_ID)) return;
|
|
52
|
+
const style = document.createElement('style');
|
|
53
|
+
style.id = HEADER_MOBILE_STYLE_ID;
|
|
54
|
+
style.textContent = `
|
|
55
|
+
solid-ui-header[layout="mobile"]::part(logo) {
|
|
56
|
+
display: none !important;
|
|
57
|
+
}
|
|
58
|
+
`;
|
|
59
|
+
document.head.appendChild(style);
|
|
60
|
+
}
|
|
27
61
|
async function createHeader(store, outliner) {
|
|
28
|
-
(
|
|
62
|
+
ensureMobileHeaderStyles();
|
|
63
|
+
const header = document.querySelector('solid-ui-header') || document.createElement('solid-ui-header');
|
|
64
|
+
const isNewHeader = !header.isConnected;
|
|
65
|
+
if (!header.id) {
|
|
66
|
+
header.id = 'mainSolidUiHeader';
|
|
67
|
+
}
|
|
68
|
+
header.__solidPanesOutliner = outliner;
|
|
69
|
+
|
|
70
|
+
// ensure it is in DOM (before MainContent for consistency)
|
|
71
|
+
const main = document.getElementById('MainContent');
|
|
72
|
+
if (!header.isConnected) {
|
|
73
|
+
if (main && main.parentNode) {
|
|
74
|
+
main.parentNode.insertBefore(header, main);
|
|
75
|
+
} else {
|
|
76
|
+
document.body.prepend(header);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
await refreshHeader(outliner, header);
|
|
80
|
+
if (isNewHeader) {
|
|
81
|
+
header.__solidPanesListenersAttached = false;
|
|
82
|
+
}
|
|
83
|
+
attachHeaderListeners(header);
|
|
84
|
+
return header;
|
|
29
85
|
}
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
86
|
+
function attachHeaderListeners(header) {
|
|
87
|
+
if (header.__solidPanesListenersAttached) return;
|
|
88
|
+
const refreshCurrentHeader = async () => {
|
|
89
|
+
const outliner = header.__solidPanesOutliner;
|
|
90
|
+
if (!outliner) return;
|
|
91
|
+
await refreshHeader(outliner, header);
|
|
92
|
+
};
|
|
93
|
+
_solidLogic.authSession.events.on('login', refreshCurrentHeader);
|
|
94
|
+
_solidLogic.authSession.events.on('logout', refreshCurrentHeader);
|
|
95
|
+
_solidLogic.authSession.events.on('sessionRestore', refreshCurrentHeader);
|
|
96
|
+
header.addEventListener('auth-action-select', async e => {
|
|
97
|
+
const outliner = header.__solidPanesOutliner;
|
|
98
|
+
if (!outliner) return;
|
|
99
|
+
const detail = e.detail;
|
|
100
|
+
if (detail?.role === 'login') {
|
|
101
|
+
await refreshCurrentHeader();
|
|
102
|
+
// Do not auto-open the profile pane after login.
|
|
103
|
+
// outliner.showDashboard({ pane: 'profile' })
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
header.addEventListener('signup-success', async () => {
|
|
107
|
+
// do nothing
|
|
108
|
+
});
|
|
109
|
+
header.addEventListener('account-menu-select', async e => {
|
|
110
|
+
const outliner = header.__solidPanesOutliner;
|
|
111
|
+
if (!outliner) return;
|
|
112
|
+
const detail = e.detail;
|
|
113
|
+
if (detail?.action === 'logout') {
|
|
114
|
+
await refreshCurrentHeader();
|
|
115
|
+
// Do not navigate to the profile after logout.
|
|
116
|
+
} else if (detail?.action === 'show-profile') {
|
|
117
|
+
// TODO see if this can be consolidated
|
|
118
|
+
const currentUser = _solidLogic.authn.currentUser();
|
|
119
|
+
if (currentUser) {
|
|
120
|
+
outliner.showDashboard(currentUser, {
|
|
121
|
+
pane: 'profile'
|
|
122
|
+
});
|
|
123
|
+
(0, _menu.setActiveMenuPane)('profile');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
header.__solidPanesListenersAttached = true;
|
|
128
|
+
}
|
|
129
|
+
async function refreshHeader(outliner, headerElement) {
|
|
130
|
+
ensureMobileHeaderStyles();
|
|
131
|
+
const headerOptions = setHeaderOptions(outliner);
|
|
132
|
+
const header = headerElement || document.querySelector('solid-ui-header');
|
|
133
|
+
if (!header) return null;
|
|
134
|
+
header.theme = headerOptions.theme;
|
|
135
|
+
header.layout = headerOptions.layout;
|
|
136
|
+
header.brandLink = headerOptions.brandLink;
|
|
137
|
+
header.logo = headerOptions.layout === 'desktop' ? headerOptions.logo : '';
|
|
138
|
+
header.helpIcon = headerOptions.helpIcon;
|
|
139
|
+
header.helpMenuList = headerOptions.helpMenuList;
|
|
140
|
+
header.authState = headerOptions.authState;
|
|
141
|
+
header.loginAction = headerOptions.loginAction;
|
|
142
|
+
header.signUpAction = headerOptions.signUpAction;
|
|
143
|
+
header.accountMenu = await setUserMenu();
|
|
144
|
+
header.logoutLabel = headerOptions.logoutLabel;
|
|
145
|
+
header.accountIcon = headerOptions.accountIcon;
|
|
146
|
+
header.accountAvatar = headerOptions.accountAvatar;
|
|
147
|
+
header.accountAvatarFallback = headerOptions.accountAvatarFallback;
|
|
148
|
+
header.loginIcon = headerOptions.loginIcon;
|
|
149
|
+
header.signUpIcon = headerOptions.signUpIcon;
|
|
150
|
+
header.logoutIcon = headerOptions.logoutIcon;
|
|
151
|
+
return header;
|
|
152
|
+
}
|
|
153
|
+
function setHeaderOptions(outliner) {
|
|
154
|
+
const currentUser = _solidLogic.authn.currentUser();
|
|
155
|
+
const isAuthenticated = !!currentUser;
|
|
156
|
+
const authState = isAuthenticated ? 'logged-in' : 'logged-out';
|
|
157
|
+
const layout = outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop';
|
|
158
|
+
const theme = outliner.context?.environment?.theme === 'dark' ? 'dark' : 'light';
|
|
40
159
|
const headerOptions = {
|
|
41
160
|
logo: SOLID_ICON_URL,
|
|
42
161
|
helpIcon: HELP_MENU_ICON,
|
|
43
|
-
helpMenuList
|
|
162
|
+
helpMenuList: HELP_MENU_LIST,
|
|
163
|
+
layout,
|
|
164
|
+
theme,
|
|
165
|
+
brandLink: '/',
|
|
166
|
+
authState,
|
|
167
|
+
loginAction: {
|
|
168
|
+
label: SIGN_IN_MENU_ITEM
|
|
169
|
+
},
|
|
170
|
+
signUpAction: {
|
|
171
|
+
label: SIGN_UP_MENU_ITEM,
|
|
172
|
+
url: SIGN_UP__MENU_LINK
|
|
173
|
+
},
|
|
174
|
+
logoutLabel: SIGN_OUT_MENU_ITEM,
|
|
175
|
+
accountIcon: isAuthenticated ? DOWN_ARROW_ICON : '',
|
|
176
|
+
accountAvatar: isAuthenticated ? _solidUi.widgets.findImage(currentUser) : undefined,
|
|
177
|
+
accountAvatarFallback: DEFAULT_AVATAR_ICON,
|
|
178
|
+
loginIcon: LOGIN_ICON,
|
|
179
|
+
signUpIcon: SIGNUP_ICON,
|
|
180
|
+
logoutIcon: LOGOUT_ICON
|
|
44
181
|
};
|
|
45
182
|
return headerOptions;
|
|
46
183
|
}
|
|
47
|
-
async function setUserMenu(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// Does not work to jump to user profile,
|
|
68
|
-
function openUserProfile(outliner) {
|
|
69
|
-
outliner.GotoSubject(_solidLogic.authn.currentUser(), true, undefined, true, undefined);
|
|
70
|
-
location.reload();
|
|
71
|
-
}
|
|
72
|
-
async function getMenuItems(outliner) {
|
|
73
|
-
const items = await outliner.getDashboardItems();
|
|
74
|
-
return items.map(element => {
|
|
75
|
-
return {
|
|
76
|
-
label: element.label,
|
|
77
|
-
onclick: () => openDashboardPane(outliner, element.tabName || element.paneName)
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
async function openDashboardPane(outliner, pane) {
|
|
82
|
-
outliner.showDashboard({
|
|
83
|
-
pane
|
|
84
|
-
});
|
|
184
|
+
async function setUserMenu() {
|
|
185
|
+
const me = _solidLogic.authn.currentUser();
|
|
186
|
+
if (!me) {
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
try {
|
|
190
|
+
await _solidLogic.store.fetcher.load(me.doc());
|
|
191
|
+
} catch (err) {
|
|
192
|
+
console.error('Unable to load user profile', err);
|
|
193
|
+
}
|
|
194
|
+
const accountMenu = [{
|
|
195
|
+
label: _solidUi.utils.label(me),
|
|
196
|
+
avatar: _solidUi.widgets.findImage(me),
|
|
197
|
+
webid: me.value,
|
|
198
|
+
action: 'show-profile'
|
|
199
|
+
}
|
|
200
|
+
// TODO add all my available accounts
|
|
201
|
+
];
|
|
202
|
+
return accountMenu;
|
|
85
203
|
}
|
package/dist/mainPage/index.d.ts
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
1
|
import { LiveStore, NamedNode } from 'rdflib';
|
|
2
|
-
|
|
2
|
+
import type { RenderEnvironment } from 'pane-registry';
|
|
3
|
+
import { OutlineManager } from '../index';
|
|
4
|
+
export { refreshMenu as updateMenuLayout } from './menu';
|
|
5
|
+
export { refreshHeader } from './header';
|
|
6
|
+
export declare function initMainPage(store: LiveStore, uri?: string | NamedNode | null, environment?: RenderEnvironment): Promise<[import("solid-ui/components/header").Header & {
|
|
7
|
+
__solidPanesListenersAttached?: boolean;
|
|
8
|
+
__solidPanesOutliner?: OutlineManager;
|
|
9
|
+
}, void, HTMLElement & {
|
|
10
|
+
store?: LiveStore | null;
|
|
11
|
+
position?: "static" | "absolute" | "relative" | "fixed" | "sticky";
|
|
12
|
+
top?: string;
|
|
13
|
+
right?: string;
|
|
14
|
+
bottom?: string;
|
|
15
|
+
left?: string;
|
|
16
|
+
}]>;
|
|
17
|
+
export declare function refreshUI(outliner: OutlineManager): Promise<void>;
|
|
3
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mainPage/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mainPage/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAe,cAAc,EAAE,MAAM,UAAU,CAAA;AActD,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAexC,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC/B,WAAW,CAAC,EAAE,iBAAiB;;;;;;;;;;IAahC;AAED,wBAAsB,SAAS,CAAE,QAAQ,EAAE,cAAc,iBAoBxD"}
|
package/dist/mainPage/index.js
CHANGED
|
@@ -3,22 +3,76 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.initMainPage = initMainPage;
|
|
7
|
+
Object.defineProperty(exports, "refreshHeader", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _header.refreshHeader;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.refreshUI = refreshUI;
|
|
14
|
+
Object.defineProperty(exports, "updateMenuLayout", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () {
|
|
17
|
+
return _menu.refreshMenu;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
7
20
|
var _index = require("../index");
|
|
8
21
|
var _header = require("./header");
|
|
9
22
|
var _footer = require("./footer");
|
|
23
|
+
var _menu = require("./menu");
|
|
10
24
|
/* Main Page
|
|
11
25
|
**
|
|
12
26
|
** This code is called in mashlib and renders the header and footer of the Databrowser.
|
|
13
27
|
*/
|
|
14
28
|
|
|
15
|
-
|
|
16
|
-
|
|
29
|
+
// Symbol used to stash the last render-relevant env snapshot on the outliner
|
|
30
|
+
// so refreshUI can skip a full GotoSubject re-render when nothing changed.
|
|
31
|
+
const LAST_RENDER_ENV_KEY = '__lastRenderEnvSignature';
|
|
32
|
+
function renderEnvSignature(env) {
|
|
33
|
+
if (!env) return '';
|
|
34
|
+
return [env.layout, env.theme, env.inputMode].join('|');
|
|
35
|
+
}
|
|
36
|
+
function ensureMainContent() {
|
|
37
|
+
let main = document.getElementById('MainContent');
|
|
38
|
+
if (!main) {
|
|
39
|
+
main = document.createElement('main');
|
|
40
|
+
main.id = 'MainContent';
|
|
41
|
+
main.setAttribute('role', 'main');
|
|
42
|
+
main.setAttribute('tabindex', '-1');
|
|
43
|
+
main.setAttribute('aria-live', 'polite');
|
|
44
|
+
document.body.appendChild(main);
|
|
45
|
+
}
|
|
46
|
+
return main;
|
|
47
|
+
}
|
|
48
|
+
async function initMainPage(store, uri, environment) {
|
|
49
|
+
ensureMainContent();
|
|
50
|
+
const outliner = (0, _index.getOutliner)(document, environment);
|
|
51
|
+
outliner[LAST_RENDER_ENV_KEY] = renderEnvSignature(environment);
|
|
17
52
|
uri = uri || window.location.href;
|
|
18
|
-
|
|
19
|
-
if (typeof uri === 'string') subject = store.sym(uri);
|
|
53
|
+
const subject = typeof uri === 'string' ? store.sym(uri) : uri;
|
|
20
54
|
outliner.GotoSubject(subject, true, undefined, true, undefined);
|
|
21
55
|
const header = await (0, _header.createHeader)(store, outliner);
|
|
22
|
-
const
|
|
23
|
-
|
|
56
|
+
const menu = (0, _menu.createLeftSideMenu)(subject, outliner);
|
|
57
|
+
const footer = menu.then(() => (0, _footer.createFooter)(store));
|
|
58
|
+
return Promise.all([header, menu, footer]);
|
|
59
|
+
}
|
|
60
|
+
async function refreshUI(outliner) {
|
|
61
|
+
const store = outliner?.context?.session?.store;
|
|
62
|
+
const paneRegistry = outliner?.context?.session?.paneRegistry;
|
|
63
|
+
const subjectUri = window.document.location.href;
|
|
64
|
+
const paneName = window.history.state?.paneName;
|
|
65
|
+
const pane = paneName ? paneRegistry?.byName?.(paneName) : undefined;
|
|
66
|
+
|
|
67
|
+
// Only re-run GotoSubject (full pane re-render) when render-relevant
|
|
68
|
+
// environment fields actually changed since the last render.
|
|
69
|
+
const currentSignature = renderEnvSignature(outliner?.context?.environment);
|
|
70
|
+
const previousSignature = outliner?.[LAST_RENDER_ENV_KEY] ?? '';
|
|
71
|
+
const envChanged = currentSignature !== previousSignature;
|
|
72
|
+
if (envChanged && store && typeof outliner?.GotoSubject === 'function') {
|
|
73
|
+
outliner.GotoSubject(store.sym(subjectUri), true, pane, true, undefined);
|
|
74
|
+
outliner[LAST_RENDER_ENV_KEY] = currentSignature;
|
|
75
|
+
}
|
|
76
|
+
await (0, _header.refreshHeader)(outliner);
|
|
77
|
+
(0, _menu.refreshMenu)(outliner.context.environment?.layout === 'mobile' ? 'mobile' : 'desktop');
|
|
24
78
|
}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
.menu-content {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: 0.5rem;
|
|
5
|
+
min-height: 0;
|
|
6
|
+
overflow-y: auto;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.app-nav.mobile-hidden .menu-content,
|
|
10
|
+
.app-nav.mobile-visible .menu-content {
|
|
11
|
+
padding-top: 0.75rem;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.menu-footer {
|
|
15
|
+
width: 100%;
|
|
16
|
+
padding: 1rem;
|
|
17
|
+
border-top: 1px solid var(--color-border, #d1d1d1);
|
|
18
|
+
font-size: 0.875rem;
|
|
19
|
+
color: var(--color-text-muted, #555);
|
|
20
|
+
line-height: 1.4;
|
|
21
|
+
background: inherit;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.app-nav.collapsed .menu-footer {
|
|
25
|
+
display: none;
|
|
26
|
+
text-align: center;
|
|
27
|
+
padding: 0.75rem 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.menu-item {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: var(--spacing-2xs, 0.625rem);
|
|
34
|
+
border: 0;
|
|
35
|
+
border-radius: var(--border-radius-sm, 0.2rem);
|
|
36
|
+
padding: 0.5rem var(--spacing-xs, 0.75rem);
|
|
37
|
+
background: transparent;
|
|
38
|
+
color: var(--color-text-heading, #000000);
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
width: 100%;
|
|
41
|
+
text-align: left;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.menu-toggle-icon {
|
|
46
|
+
width: 30px;
|
|
47
|
+
height: 30px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.menu-item-icon {
|
|
51
|
+
width: var(--icon-xxs, 1rem);
|
|
52
|
+
height: var(--icon-xxs, 1rem);
|
|
53
|
+
flex: 0 0 var(--icon-xxs, 1rem);
|
|
54
|
+
object-fit: contain;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.menu-item-label {
|
|
58
|
+
min-width: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.menu-item:hover,
|
|
62
|
+
.menu-item:focus {
|
|
63
|
+
background: var(--color-header-menu-item-hover, #e6dcff);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.menu-item-active,
|
|
67
|
+
.menu-item-active:hover,
|
|
68
|
+
.menu-item-active:focus {
|
|
69
|
+
background: var(--color-header-menu-item-selected, #cbb9ff);
|
|
70
|
+
color: var(--color-header-menu-item-text-selected, #7c4cff);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.menu-toggle {
|
|
74
|
+
position: fixed;
|
|
75
|
+
top: 0.5rem;
|
|
76
|
+
left: 1rem;
|
|
77
|
+
z-index: 300;
|
|
78
|
+
display: inline-flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
justify-content: center;
|
|
81
|
+
gap: 0.375rem;
|
|
82
|
+
min-width: var(--icon-md, 2.5rem);
|
|
83
|
+
height: var(--icon-md, 2.5rem);
|
|
84
|
+
padding: 0 0.625rem;
|
|
85
|
+
border: 1px solid var(--color-border);
|
|
86
|
+
background: var(--color-menu-bg, #ffffff);
|
|
87
|
+
color: var(--color-text);
|
|
88
|
+
border-radius: var(--border-radius-sm, 0.2rem);
|
|
89
|
+
margin: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.menu-toggle-label {
|
|
93
|
+
font-size: 1.2rem;
|
|
94
|
+
font-weight: 600;
|
|
95
|
+
white-space: nowrap;
|
|
96
|
+
overflow: hidden;
|
|
97
|
+
text-overflow: ellipsis;
|
|
98
|
+
max-width: 10rem;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.menu-overlay {
|
|
102
|
+
position: fixed;
|
|
103
|
+
inset: 0;
|
|
104
|
+
background: rgba(0, 0, 0, 0.35);
|
|
105
|
+
z-index: 100;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.app-nav {
|
|
109
|
+
position: fixed;
|
|
110
|
+
left: 0;
|
|
111
|
+
top: 0;
|
|
112
|
+
bottom: 0;
|
|
113
|
+
width: min(18rem, 320px);
|
|
114
|
+
display: grid;
|
|
115
|
+
grid-template-rows: 1fr auto;
|
|
116
|
+
overflow: hidden;
|
|
117
|
+
background: var(--color-menu-bg, #ffffff);
|
|
118
|
+
border-right: 1px solid var(--color-border);
|
|
119
|
+
z-index: 10;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.app-nav.mobile-hidden,
|
|
123
|
+
.app-nav.mobile-visible {
|
|
124
|
+
position: fixed;
|
|
125
|
+
left: 0;
|
|
126
|
+
top: 0;
|
|
127
|
+
bottom: 0;
|
|
128
|
+
width: min(80vw, 320px);
|
|
129
|
+
height: 100vh;
|
|
130
|
+
min-height: 100vh;
|
|
131
|
+
transform: translateX(-100%);
|
|
132
|
+
transition: transform 0.25s ease-in-out;
|
|
133
|
+
z-index: 999;
|
|
134
|
+
display: flex;
|
|
135
|
+
flex-direction: column;
|
|
136
|
+
background: var(--color-menu-bg, #ffffff);
|
|
137
|
+
border-right: none;
|
|
138
|
+
box-shadow: none;
|
|
139
|
+
overflow: hidden;
|
|
140
|
+
padding-top: 3.75rem;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.app-nav.mobile-hidden .menu-content,
|
|
144
|
+
.app-nav.mobile-visible .menu-content {
|
|
145
|
+
flex: 1;
|
|
146
|
+
min-height: 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.app-nav.mobile-visible {
|
|
150
|
+
transform: translateX(0);
|
|
151
|
+
visibility: visible;
|
|
152
|
+
background: var(--color-menu-bg, #ffffff);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.menu-header {
|
|
156
|
+
display: none;
|
|
157
|
+
position: absolute;
|
|
158
|
+
top: 0;
|
|
159
|
+
left: 0;
|
|
160
|
+
right: 0;
|
|
161
|
+
align-items: center;
|
|
162
|
+
justify-content: flex-start;
|
|
163
|
+
background-color: #42345a !important;
|
|
164
|
+
color: #ffffff;
|
|
165
|
+
font-weight: 600;
|
|
166
|
+
min-height: 3.75rem;
|
|
167
|
+
height: 3.75rem;
|
|
168
|
+
box-sizing: border-box;
|
|
169
|
+
width: 100%;
|
|
170
|
+
z-index: 1000;
|
|
171
|
+
border-right: none;
|
|
172
|
+
box-shadow: none;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.app-nav.mobile-hidden .menu-header,
|
|
176
|
+
.app-nav.mobile-visible .menu-header {
|
|
177
|
+
display: flex;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.menu-header-title {
|
|
181
|
+
font-size: 1.25rem;
|
|
182
|
+
color: #ffffff;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.menu-close {
|
|
186
|
+
border: none;
|
|
187
|
+
background: transparent;
|
|
188
|
+
color: #ffffff;
|
|
189
|
+
font-size: 1.25rem;
|
|
190
|
+
cursor: pointer;
|
|
191
|
+
padding-left: 1.25rem;
|
|
192
|
+
line-height: 1;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.menu-close:hover,
|
|
196
|
+
.menu-close:focus {
|
|
197
|
+
opacity: 0.85;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.app-nav.collapsed {
|
|
201
|
+
width: 4.5rem;
|
|
202
|
+
min-width: 4.5rem;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.app-nav.collapsed .menu-content {
|
|
206
|
+
gap: 0.25rem;
|
|
207
|
+
align-items: center;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.app-nav.collapsed .menu-item {
|
|
211
|
+
justify-content: center;
|
|
212
|
+
padding-left: 0.5rem;
|
|
213
|
+
padding-right: 0.5rem;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.app-nav.collapsed .menu-item-label {
|
|
217
|
+
display: none;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.menu-collapse {
|
|
221
|
+
position: fixed;
|
|
222
|
+
left: 3rem;
|
|
223
|
+
bottom: 8rem;
|
|
224
|
+
z-index: 320;
|
|
225
|
+
width: 1.25rem;
|
|
226
|
+
height: 1.25rem;
|
|
227
|
+
display: inline-flex;
|
|
228
|
+
align-items: center;
|
|
229
|
+
justify-content: center;
|
|
230
|
+
border: 1px solid var(--color-border);
|
|
231
|
+
border-radius: 999px;
|
|
232
|
+
color: var(--color-text);
|
|
233
|
+
font-size: 1.3rem;
|
|
234
|
+
line-height: 1;
|
|
235
|
+
cursor: pointer;
|
|
236
|
+
box-shadow: 0 1px 4px rgba(124,77,255,0.12);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
@media (max-width: 768px) {
|
|
240
|
+
.menu-collapse {
|
|
241
|
+
display: none;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './menu.css';
|
|
2
|
+
import { OutlineManager } from '../outline/manager';
|
|
3
|
+
import { NamedNode } from 'rdflib';
|
|
4
|
+
export declare const setActiveMenuPane: (paneName?: string) => void;
|
|
5
|
+
export declare const refreshMenu: (layout: "mobile" | "desktop") => void;
|
|
6
|
+
export declare const createLeftSideMenu: (subject: NamedNode, outliner: OutlineManager) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=menu.d.ts.map
|