mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Allow configuring (mostly hiding) various little bits of UI
Summary: Adds two new env vars GRIST_HIDE_UI_ELEMENTS and GRIST_PAGE_TITLE_SUFFIX which translate to values in GristLoadConfig that the server sends the client when loading. For checkin task https://gristlabs.getgrist.com/doc/check-ins/p/5#a1.s9.r1882.c19 Test Plan: Tested manually Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3449
This commit is contained in:
@@ -8,7 +8,7 @@ import {primaryButton} from 'app/client/ui2018/buttons';
|
||||
import {colors, mediaDeviceNotSmall, testId, vars} from 'app/client/ui2018/cssVars';
|
||||
import {icon} from 'app/client/ui2018/icons';
|
||||
import {menu, menuDivider, menuItem, menuItemLink, menuSubHeader} from 'app/client/ui2018/menus';
|
||||
import {commonUrls} from 'app/common/gristUrls';
|
||||
import {commonUrls, shouldHideUiElement} from 'app/common/gristUrls';
|
||||
import {FullUser} from 'app/common/LoginSessionAPI';
|
||||
import * as roles from 'app/common/roles';
|
||||
import {Organization, SUPPORT_EMAIL} from 'app/common/UserAPI';
|
||||
@@ -111,6 +111,7 @@ export class AccountWidget extends Disposable {
|
||||
// Don't show on doc pages, or for personal orgs.
|
||||
null),
|
||||
|
||||
shouldHideUiElement("billing") ? null :
|
||||
// Show link to billing pages.
|
||||
currentOrg && !currentOrg.owner ?
|
||||
// For links, disabling with just a class is hard; easier to just not make it a link.
|
||||
@@ -128,7 +129,7 @@ export class AccountWidget extends Disposable {
|
||||
|
||||
// In case of a single-org setup, skip all the account-switching UI. We'll also skip the
|
||||
// org-listing UI below.
|
||||
this._appModel.topAppModel.isSingleOrg ? [] : [
|
||||
this._appModel.topAppModel.isSingleOrg || shouldHideUiElement("multiAccounts") ? [] : [
|
||||
menuDivider(),
|
||||
menuSubHeader(dom.text((use) => use(users).length > 1 ? 'Switch Accounts' : 'Accounts')),
|
||||
dom.forEach(users, (_user) => {
|
||||
|
||||
@@ -2,6 +2,7 @@ import {urlState} from 'app/client/models/gristUrlState';
|
||||
import {getTheme} from 'app/client/ui/CustomThemes';
|
||||
import {cssLeftPane} from 'app/client/ui/PagePanels';
|
||||
import {colors, testId, vars} from 'app/client/ui2018/cssVars';
|
||||
import {shouldHideUiElement} from 'app/common/gristUrls';
|
||||
import * as version from 'app/common/version';
|
||||
import {BindableValue, Disposable, dom, styled} from "grainjs";
|
||||
import {menu, menuItem, menuItemLink, menuSubHeader} from 'app/client/ui2018/menus';
|
||||
@@ -64,7 +65,7 @@ export class AppHeader extends Disposable {
|
||||
null),
|
||||
|
||||
// Show link to billing pages.
|
||||
currentOrg && !currentOrg.owner ?
|
||||
currentOrg && !currentOrg.owner && !shouldHideUiElement("billing") ?
|
||||
// For links, disabling with just a class is hard; easier to just not make it a link.
|
||||
// TODO weasel menus should support disabling menuItemLink.
|
||||
(isBillingManager ?
|
||||
|
||||
@@ -18,6 +18,8 @@ import {RightPanel} from 'app/client/ui/RightPanel';
|
||||
import {createTopBarDoc, createTopBarHome} from 'app/client/ui/TopBar';
|
||||
import {WelcomePage} from 'app/client/ui/WelcomePage';
|
||||
import {testId} from 'app/client/ui2018/cssVars';
|
||||
import {getPageTitleSuffix} from 'app/common/gristUrls';
|
||||
import {getGristConfig} from 'app/common/urlUtils';
|
||||
import {Computed, dom, IDisposable, IDisposableOwner, Observable, replaceContent, subscribe} from 'grainjs';
|
||||
|
||||
// When integrating into the old app, we might in theory switch between new-style and old-style
|
||||
@@ -90,7 +92,7 @@ function pagePanelsHome(owner: IDisposableOwner, appModel: AppModel, app: App) {
|
||||
page === 'templates' ? 'Examples & Templates' :
|
||||
ws ? ws.name : appModel.currentOrgName
|
||||
);
|
||||
document.title = `${name} - Grist`;
|
||||
document.title = `${name}${getPageTitleSuffix(getGristConfig())}`;
|
||||
}));
|
||||
|
||||
return pagePanels({
|
||||
@@ -127,7 +129,7 @@ function pagePanelsDoc(owner: IDisposableOwner, appModel: AppModel, appObj: App)
|
||||
|
||||
// Set document title to strings like "DocName - Grist"
|
||||
owner.autoDispose(subscribe(pageModel.currentDocTitle, (use, docName) => {
|
||||
document.title = `${docName} - Grist`;
|
||||
document.title = `${docName}${getPageTitleSuffix(getGristConfig())}`;
|
||||
}));
|
||||
|
||||
// Called after either panel is closed, opened, or resized.
|
||||
|
||||
@@ -12,6 +12,7 @@ import {colors, testId} from 'app/client/ui2018/cssVars';
|
||||
import {icon} from 'app/client/ui2018/icons';
|
||||
import {menu, menuIcon, menuItem, upgradableMenuItem, upgradeText} from 'app/client/ui2018/menus';
|
||||
import {confirmModal} from 'app/client/ui2018/modals';
|
||||
import {shouldHideUiElement} from 'app/common/gristUrls';
|
||||
import * as roles from 'app/common/roles';
|
||||
import {Workspace} from 'app/common/UserAPI';
|
||||
import {computed, dom, domComputed, DomElementArg, observable, Observable, styled} from 'grainjs';
|
||||
@@ -96,6 +97,7 @@ export function createHomeLeftPane(leftPanelOpen: Observable<boolean>, home: Hom
|
||||
)),
|
||||
cssTools(
|
||||
cssPageEntry(
|
||||
dom.hide(shouldHideUiElement("templates")),
|
||||
cssPageEntry.cls('-selected', (use) => use(home.currentPage) === "templates"),
|
||||
cssPageLink(cssPageIcon('FieldTable'), cssLinkText("Examples & Templates"),
|
||||
urlState().setLinkUrl({homePage: "templates"}),
|
||||
|
||||
@@ -17,7 +17,7 @@ import {beaconOpenMessage} from 'app/client/lib/helpScout';
|
||||
import {AppModel} from 'app/client/models/AppModel';
|
||||
import {colors, testId, vars} from 'app/client/ui2018/cssVars';
|
||||
import {icon} from 'app/client/ui2018/icons';
|
||||
import {commonUrls} from 'app/common/gristUrls';
|
||||
import {commonUrls, shouldHideUiElement} from 'app/common/gristUrls';
|
||||
import {dom, DomContents, Observable, styled} from 'grainjs';
|
||||
|
||||
/**
|
||||
@@ -25,6 +25,9 @@ import {dom, DomContents, Observable, styled} from 'grainjs';
|
||||
* HelpCenter in a new tab.
|
||||
*/
|
||||
export function createHelpTools(appModel: AppModel, spacer = true): DomContents {
|
||||
if (shouldHideUiElement("helpCenter")) {
|
||||
return [];
|
||||
}
|
||||
return [
|
||||
spacer ? cssSpacer() : null,
|
||||
cssSplitPageEntry(
|
||||
|
||||
@@ -8,7 +8,7 @@ import {colors, vars} from 'app/client/ui2018/cssVars';
|
||||
import {icon} from 'app/client/ui2018/icons';
|
||||
import {IconName} from "app/client/ui2018/IconList";
|
||||
import {menuCssClass} from 'app/client/ui2018/menus';
|
||||
import {commonUrls} from 'app/common/gristUrls';
|
||||
import {commonUrls, shouldHideUiElement} from 'app/common/gristUrls';
|
||||
import {dom, makeTestId, styled} from 'grainjs';
|
||||
import {cssMenu, defaultMenuOptions, IOpenController, setPopupToCreateDom} from 'popweasel';
|
||||
|
||||
@@ -142,6 +142,7 @@ function buildNotifyDropdown(ctl: IOpenController, notifier: Notifier, appModel:
|
||||
cssDropdownContent(
|
||||
cssDropdownHeader(
|
||||
cssDropdownHeaderTitle('Notifications'),
|
||||
shouldHideUiElement("helpCenter") ? null :
|
||||
cssDropdownFeedbackLink(
|
||||
cssDropdownFeedbackIcon('Feedback'),
|
||||
'Give feedback',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {commonUrls, getSingleOrg} from 'app/common/gristUrls';
|
||||
import {commonUrls, getSingleOrg, shouldHideUiElement} from 'app/common/gristUrls';
|
||||
import {getOrgName} from 'app/common/UserAPI';
|
||||
import {dom, makeTestId, styled} from 'grainjs';
|
||||
import {AppModel} from 'app/client/models/AppModel';
|
||||
@@ -14,7 +14,7 @@ const testId = makeTestId('test-site-switcher-');
|
||||
*/
|
||||
export function maybeAddSiteSwitcherSection(appModel: AppModel) {
|
||||
const orgs = appModel.topAppModel.orgs;
|
||||
return dom.maybe((use) => use(orgs).length > 0 && !getSingleOrg(), () => [
|
||||
return dom.maybe((use) => use(orgs).length > 0 && !getSingleOrg() && !shouldHideUiElement("multiSite"), () => [
|
||||
menuDivider(),
|
||||
buildSiteSwitcher(appModel),
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user