@jupyterlab/running 0.17.3 → 0.18.4

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/lib/index.js CHANGED
@@ -11,6 +11,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const React = __importStar(require("react"));
13
13
  const ReactDOM = __importStar(require("react-dom"));
14
+ const algorithm_1 = require("@phosphor/algorithm");
14
15
  const signaling_1 = require("@phosphor/signaling");
15
16
  const widgets_1 = require("@phosphor/widgets");
16
17
  const apputils_1 = require("@jupyterlab/apputils");
@@ -24,14 +25,6 @@ const RUNNING_CLASS = 'jp-RunningSessions';
24
25
  * The class name added to a running widget header.
25
26
  */
26
27
  const HEADER_CLASS = 'jp-RunningSessions-header';
27
- /**
28
- * The class name added to a running widget header refresh button.
29
- */
30
- const REFRESH_CLASS = 'jp-RunningSessions-headerRefresh';
31
- /**
32
- * The class name added to shutdown all buttons.
33
- */
34
- const SHUTDOWN_CLASS = 'jp-RunningSessions-shutdownAll';
35
28
  /**
36
29
  * The class name added to the running terminal sessions section.
37
30
  */
@@ -90,7 +83,7 @@ function Item(props) {
90
83
  class List extends React.Component {
91
84
  constructor(props) {
92
85
  super(props);
93
- this.state = { models: [] };
86
+ this.state = { models: algorithm_1.toArray(props.manager.running()) };
94
87
  }
95
88
  render() {
96
89
  return (React.createElement("ul", { className: LIST_CLASS }, this.state.models.map((m, i) => (React.createElement(Item, Object.assign({ key: i, model: m }, this.props))))));
@@ -120,10 +113,11 @@ function Section(props) {
120
113
  });
121
114
  }
122
115
  return (React.createElement("div", { className: SECTION_CLASS }, props.available && (React.createElement(React.Fragment, null,
123
- React.createElement("div", { className: SECTION_HEADER_CLASS },
124
- props.name,
125
- " Sessions",
126
- React.createElement("button", { title: `Shutdown All ${props.name} Sessions…`, className: SHUTDOWN_CLASS, onClick: onShutdown })),
116
+ React.createElement("header", { className: SECTION_HEADER_CLASS },
117
+ React.createElement("h2", null,
118
+ props.name,
119
+ " Sessions"),
120
+ React.createElement(apputils_1.ToolbarButtonComponent, { tooltip: `Shutdown All ${props.name} Sessions…`, iconClassName: "jp-CloseIcon jp-Icon jp-Icon-16", onClick: onShutdown })),
127
121
  React.createElement("div", { className: CONTAINER_CLASS },
128
122
  React.createElement(List, Object.assign({}, props)))))));
129
123
  }
@@ -131,7 +125,7 @@ function RunningSessionsComponent({ manager, sessionOpenRequested, terminalOpenR
131
125
  const terminalsAvailable = manager.terminals.isAvailable();
132
126
  return (React.createElement(React.Fragment, null,
133
127
  React.createElement("div", { className: HEADER_CLASS },
134
- React.createElement("button", { title: "Refresh List", className: REFRESH_CLASS, onClick: () => {
128
+ React.createElement(apputils_1.ToolbarButtonComponent, { tooltip: "Refresh List", iconClassName: "jp-RefreshIcon jp-Icon jp-Icon-16", onClick: () => {
135
129
  if (terminalsAvailable) {
136
130
  manager.terminals.refreshRunning();
137
131
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../running/src/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport * as React from 'react';\n\nimport * as ReactDOM from 'react-dom';\n\nimport { Message } from '@phosphor/messaging';\n\nimport { ISignal, Signal } from '@phosphor/signaling';\n\nimport { Widget } from '@phosphor/widgets';\n\nimport { Dialog, showDialog } from '@jupyterlab/apputils';\n\nimport { PathExt } from '@jupyterlab/coreutils';\n\nimport { ServiceManager, Session, TerminalSession } from '@jupyterlab/services';\n\nimport '../style/index.css';\n\n/**\n * The class name added to a running widget.\n */\nconst RUNNING_CLASS = 'jp-RunningSessions';\n\n/**\n * The class name added to a running widget header.\n */\nconst HEADER_CLASS = 'jp-RunningSessions-header';\n\n/**\n * The class name added to a running widget header refresh button.\n */\nconst REFRESH_CLASS = 'jp-RunningSessions-headerRefresh';\n\n/**\n * The class name added to shutdown all buttons.\n */\nconst SHUTDOWN_CLASS = 'jp-RunningSessions-shutdownAll';\n\n/**\n * The class name added to the running terminal sessions section.\n */\nconst SECTION_CLASS = 'jp-RunningSessions-section';\n\n/**\n * The class name added to the running sessions section header.\n */\nconst SECTION_HEADER_CLASS = 'jp-RunningSessions-sectionHeader';\n\n/**\n * The class name added to a section container.\n */\nconst CONTAINER_CLASS = 'jp-RunningSessions-sectionContainer';\n\n/**\n * The class name added to the running kernel sessions section list.\n */\nconst LIST_CLASS = 'jp-RunningSessions-sectionList';\n\n/**\n * The class name added to the running sessions items.\n */\nconst ITEM_CLASS = 'jp-RunningSessions-item';\n\n/**\n * The class name added to a running session item icon.\n */\nconst ITEM_ICON_CLASS = 'jp-RunningSessions-itemIcon';\n\n/**\n * The class name added to a running session item label.\n */\nconst ITEM_LABEL_CLASS = 'jp-RunningSessions-itemLabel';\n\n/**\n * The class name added to a running session item shutdown button.\n */\nconst SHUTDOWN_BUTTON_CLASS = 'jp-RunningSessions-itemShutdown';\n\n/**\n * The class name added to a notebook icon.\n */\nconst NOTEBOOK_ICON_CLASS = 'jp-mod-notebook';\n\n/**\n * The class name added to a console icon.\n */\nconst CONSOLE_ICON_CLASS = 'jp-mod-console';\n\n/**\n * The class name added to a file icon.\n */\nconst FILE_ICON_CLASS = 'jp-mod-file';\n\n/**\n * The class name added to a terminal icon.\n */\nconst TERMINAL_ICON_CLASS = 'jp-mod-terminal';\n\n/**\n * Props for a Session, with items of type M\n */\ntype SessionProps<M> = {\n // A signal that ttracks when the `open` is clicked on a session item\n openRequested: Signal<RunningSessions, M>;\n manager: {\n // called when the shutdown all button is pressed\n shutdownAll(): void;\n // A signal that should emit a new list of items whenever they are changed\n runningChanged: ISignal<any, M[]>;\n };\n // called when the shutdown button is pressed on a particular item\n shutdown: (model: M) => void;\n // optitonal filter that is applied to the items from `runningChanged`\n filterRunning?: (model: M) => boolean;\n // Name that is shown to the user\n name: string;\n // Class for the icon\n iconClass: (model: M) => string;\n // called to determine the label for each item\n label: (model: M) => string;\n // called to determine the `title` attribute for each item, which is revealed on hover\n labelTitle?: (model: M) => string;\n // flag that set's whether it should display\n available: boolean;\n};\n\nfunction Item<M>(props: SessionProps<M> & { model: M }) {\n const { model } = props;\n return (\n <li className={ITEM_CLASS}>\n <span className={`${ITEM_ICON_CLASS} ${props.iconClass(model)}`} />\n <span\n className={ITEM_LABEL_CLASS}\n title={props.labelTitle ? props.labelTitle(model) : ''}\n onClick={() => props.openRequested.emit(model)}\n >\n {props.label(model)}\n </span>\n <button\n className={`${SHUTDOWN_BUTTON_CLASS} jp-mod-styled`}\n onClick={() => props.shutdown(model)}\n >\n SHUTDOWN\n </button>\n </li>\n );\n}\n\nclass List<M> extends React.Component<SessionProps<M>, { models: M[] }> {\n constructor(props: SessionProps<M>) {\n super(props);\n this.state = { models: [] };\n }\n render() {\n return (\n <ul className={LIST_CLASS}>\n {this.state.models.map((m, i) => (\n <Item key={i} model={m} {...this.props} />\n ))}\n </ul>\n );\n }\n componentDidMount() {\n if (this.props.available) {\n this.props.manager.runningChanged.connect((_, models) =>\n this.setState({\n models: models.filter(this.props.filterRunning || (_ => true))\n })\n );\n }\n }\n}\n\n/**\n * The Section component contains the shared look and feel for an interactive list of kernels and sessions.\n *\n * It is specialized for each based on it's props.\n */\nfunction Section<M>(props: SessionProps<M>) {\n function onShutdown() {\n showDialog({\n title: `Shutdown All ${props.name} Sessions?`,\n buttons: [Dialog.cancelButton(), Dialog.warnButton({ label: 'SHUTDOWN' })]\n }).then(result => {\n if (result.button.accept) {\n props.manager.shutdownAll();\n }\n });\n }\n return (\n <div className={SECTION_CLASS}>\n {props.available && (\n <>\n <div className={SECTION_HEADER_CLASS}>\n {props.name} Sessions\n <button\n title={`Shutdown All ${props.name} Sessions…`}\n className={SHUTDOWN_CLASS}\n onClick={onShutdown}\n />\n </div>\n\n <div className={CONTAINER_CLASS}>\n <List {...props} />\n </div>\n </>\n )}\n </div>\n );\n}\n\ninterface IRunningSessionsProps {\n manager: ServiceManager.IManager;\n sessionOpenRequested: Signal<RunningSessions, Session.IModel>;\n terminalOpenRequested: Signal<RunningSessions, TerminalSession.IModel>;\n}\n\nfunction RunningSessionsComponent({\n manager,\n sessionOpenRequested,\n terminalOpenRequested\n}: IRunningSessionsProps) {\n const terminalsAvailable = manager.terminals.isAvailable();\n\n return (\n <>\n <div className={HEADER_CLASS}>\n <button\n title=\"Refresh List\"\n className={REFRESH_CLASS}\n onClick={() => {\n if (terminalsAvailable) {\n manager.terminals.refreshRunning();\n }\n manager.sessions.refreshRunning();\n }}\n />\n </div>\n <Section\n openRequested={terminalOpenRequested}\n manager={manager.terminals}\n name=\"Terminal\"\n iconClass={() => `${ITEM_ICON_CLASS} ${TERMINAL_ICON_CLASS}`}\n label={m => `terminals/${m.name}`}\n available={terminalsAvailable}\n shutdown={m => manager.terminals.shutdown(m.name)}\n />\n <Section\n openRequested={sessionOpenRequested}\n manager={manager.sessions}\n filterRunning={m =>\n !!((m.name || PathExt.basename(m.path)).indexOf('.') !== -1 || m.name)\n }\n name=\"Kernel\"\n iconClass={m => {\n if ((m.name || PathExt.basename(m.path)).indexOf('.ipynb') !== -1) {\n return NOTEBOOK_ICON_CLASS;\n } else if (m.type.toLowerCase() === 'console') {\n return CONSOLE_ICON_CLASS;\n }\n return FILE_ICON_CLASS;\n }}\n label={m => m.name || PathExt.basename(m.path)}\n available={true}\n labelTitle={m => {\n let kernelName = m.kernel.name;\n if (manager.specs) {\n kernelName = manager.specs.kernelspecs[kernelName].display_name;\n }\n return `Path: ${m.path}\\nKernel: ${kernelName}`;\n }}\n shutdown={m => manager.sessions.shutdown(m.id)}\n />\n </>\n );\n}\n\n/**\n * A class that exposes the running terminal and kernel sessions.\n */\nexport class RunningSessions extends Widget {\n /**\n * Construct a new running widget.\n */\n constructor(options: RunningSessions.IOptions) {\n super();\n this.options = options;\n\n // this can't be in the react element, because then it would be too nested\n this.addClass(RUNNING_CLASS);\n }\n\n protected onUpdateRequest(msg: Message): void {\n ReactDOM.render(\n <RunningSessionsComponent\n manager={this.options.manager}\n sessionOpenRequested={this._sessionOpenRequested}\n terminalOpenRequested={this._terminalOpenRequested}\n />,\n this.node\n );\n }\n\n /* Called after the widget is attached to the DOM\n *\n * Make sure the widget is rendered, even if the model has not changed.\n */\n protected onAfterAttach(msg: Message): void {\n this.update();\n }\n\n /**\n * A signal emitted when a kernel session open is requested.\n */\n get sessionOpenRequested(): ISignal<this, Session.IModel> {\n return this._sessionOpenRequested;\n }\n\n /**\n * A signal emitted when a terminal session open is requested.\n */\n get terminalOpenRequested(): ISignal<this, TerminalSession.IModel> {\n return this._terminalOpenRequested;\n }\n\n private _sessionOpenRequested = new Signal<this, Session.IModel>(this);\n private _terminalOpenRequested = new Signal<this, TerminalSession.IModel>(\n this\n );\n private options: RunningSessions.IOptions;\n}\n\n/**\n * The namespace for the `RunningSessions` class statics.\n */\nexport namespace RunningSessions {\n /**\n * An options object for creating a running sessions widget.\n */\n export interface IOptions {\n /**\n * A service manager instance.\n */\n manager: ServiceManager.IManager;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../running/src/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport * as React from 'react';\n\nimport * as ReactDOM from 'react-dom';\n\nimport { IIterator, toArray } from '@phosphor/algorithm';\n\nimport { Message } from '@phosphor/messaging';\n\nimport { ISignal, Signal } from '@phosphor/signaling';\n\nimport { Widget } from '@phosphor/widgets';\n\nimport {\n Dialog,\n showDialog,\n ToolbarButtonComponent\n} from '@jupyterlab/apputils';\n\nimport { PathExt } from '@jupyterlab/coreutils';\n\nimport { ServiceManager, Session, TerminalSession } from '@jupyterlab/services';\n\nimport '../style/index.css';\n\n/**\n * The class name added to a running widget.\n */\nconst RUNNING_CLASS = 'jp-RunningSessions';\n\n/**\n * The class name added to a running widget header.\n */\nconst HEADER_CLASS = 'jp-RunningSessions-header';\n\n/**\n * The class name added to the running terminal sessions section.\n */\nconst SECTION_CLASS = 'jp-RunningSessions-section';\n\n/**\n * The class name added to the running sessions section header.\n */\nconst SECTION_HEADER_CLASS = 'jp-RunningSessions-sectionHeader';\n\n/**\n * The class name added to a section container.\n */\nconst CONTAINER_CLASS = 'jp-RunningSessions-sectionContainer';\n\n/**\n * The class name added to the running kernel sessions section list.\n */\nconst LIST_CLASS = 'jp-RunningSessions-sectionList';\n\n/**\n * The class name added to the running sessions items.\n */\nconst ITEM_CLASS = 'jp-RunningSessions-item';\n\n/**\n * The class name added to a running session item icon.\n */\nconst ITEM_ICON_CLASS = 'jp-RunningSessions-itemIcon';\n\n/**\n * The class name added to a running session item label.\n */\nconst ITEM_LABEL_CLASS = 'jp-RunningSessions-itemLabel';\n\n/**\n * The class name added to a running session item shutdown button.\n */\nconst SHUTDOWN_BUTTON_CLASS = 'jp-RunningSessions-itemShutdown';\n\n/**\n * The class name added to a notebook icon.\n */\nconst NOTEBOOK_ICON_CLASS = 'jp-mod-notebook';\n\n/**\n * The class name added to a console icon.\n */\nconst CONSOLE_ICON_CLASS = 'jp-mod-console';\n\n/**\n * The class name added to a file icon.\n */\nconst FILE_ICON_CLASS = 'jp-mod-file';\n\n/**\n * The class name added to a terminal icon.\n */\nconst TERMINAL_ICON_CLASS = 'jp-mod-terminal';\n\n/**\n * Props for a Session, with items of type M\n */\ntype SessionProps<M> = {\n // A signal that ttracks when the `open` is clicked on a session item\n openRequested: Signal<RunningSessions, M>;\n manager: {\n // called when the shutdown all button is pressed\n shutdownAll(): void;\n // A signal that should emit a new list of items whenever they are changed\n runningChanged: ISignal<any, M[]>;\n // list the running models.\n running(): IIterator<M>;\n };\n // called when the shutdown button is pressed on a particular item\n shutdown: (model: M) => void;\n // optitonal filter that is applied to the items from `runningChanged`\n filterRunning?: (model: M) => boolean;\n // Name that is shown to the user\n name: string;\n // Class for the icon\n iconClass: (model: M) => string;\n // called to determine the label for each item\n label: (model: M) => string;\n // called to determine the `title` attribute for each item, which is revealed on hover\n labelTitle?: (model: M) => string;\n // flag that set's whether it should display\n available: boolean;\n};\n\nfunction Item<M>(props: SessionProps<M> & { model: M }) {\n const { model } = props;\n return (\n <li className={ITEM_CLASS}>\n <span className={`${ITEM_ICON_CLASS} ${props.iconClass(model)}`} />\n <span\n className={ITEM_LABEL_CLASS}\n title={props.labelTitle ? props.labelTitle(model) : ''}\n onClick={() => props.openRequested.emit(model)}\n >\n {props.label(model)}\n </span>\n <button\n className={`${SHUTDOWN_BUTTON_CLASS} jp-mod-styled`}\n onClick={() => props.shutdown(model)}\n >\n SHUTDOWN\n </button>\n </li>\n );\n}\n\nclass List<M> extends React.Component<SessionProps<M>, { models: M[] }> {\n constructor(props: SessionProps<M>) {\n super(props);\n this.state = { models: toArray(props.manager.running()) };\n }\n render() {\n return (\n <ul className={LIST_CLASS}>\n {this.state.models.map((m, i) => (\n <Item key={i} model={m} {...this.props} />\n ))}\n </ul>\n );\n }\n componentDidMount() {\n if (this.props.available) {\n this.props.manager.runningChanged.connect((_, models) =>\n this.setState({\n models: models.filter(this.props.filterRunning || (_ => true))\n })\n );\n }\n }\n}\n\n/**\n * The Section component contains the shared look and feel for an interactive list of kernels and sessions.\n *\n * It is specialized for each based on it's props.\n */\nfunction Section<M>(props: SessionProps<M>) {\n function onShutdown() {\n showDialog({\n title: `Shutdown All ${props.name} Sessions?`,\n buttons: [Dialog.cancelButton(), Dialog.warnButton({ label: 'SHUTDOWN' })]\n }).then(result => {\n if (result.button.accept) {\n props.manager.shutdownAll();\n }\n });\n }\n return (\n <div className={SECTION_CLASS}>\n {props.available && (\n <>\n <header className={SECTION_HEADER_CLASS}>\n <h2>{props.name} Sessions</h2>\n <ToolbarButtonComponent\n tooltip={`Shutdown All ${props.name} Sessions…`}\n iconClassName=\"jp-CloseIcon jp-Icon jp-Icon-16\"\n onClick={onShutdown}\n />\n </header>\n\n <div className={CONTAINER_CLASS}>\n <List {...props} />\n </div>\n </>\n )}\n </div>\n );\n}\n\ninterface IRunningSessionsProps {\n manager: ServiceManager.IManager;\n sessionOpenRequested: Signal<RunningSessions, Session.IModel>;\n terminalOpenRequested: Signal<RunningSessions, TerminalSession.IModel>;\n}\n\nfunction RunningSessionsComponent({\n manager,\n sessionOpenRequested,\n terminalOpenRequested\n}: IRunningSessionsProps) {\n const terminalsAvailable = manager.terminals.isAvailable();\n\n return (\n <>\n <div className={HEADER_CLASS}>\n <ToolbarButtonComponent\n tooltip=\"Refresh List\"\n iconClassName=\"jp-RefreshIcon jp-Icon jp-Icon-16\"\n onClick={() => {\n if (terminalsAvailable) {\n manager.terminals.refreshRunning();\n }\n manager.sessions.refreshRunning();\n }}\n />\n </div>\n <Section\n openRequested={terminalOpenRequested}\n manager={manager.terminals}\n name=\"Terminal\"\n iconClass={() => `${ITEM_ICON_CLASS} ${TERMINAL_ICON_CLASS}`}\n label={m => `terminals/${m.name}`}\n available={terminalsAvailable}\n shutdown={m => manager.terminals.shutdown(m.name)}\n />\n <Section\n openRequested={sessionOpenRequested}\n manager={manager.sessions}\n filterRunning={m =>\n !!((m.name || PathExt.basename(m.path)).indexOf('.') !== -1 || m.name)\n }\n name=\"Kernel\"\n iconClass={m => {\n if ((m.name || PathExt.basename(m.path)).indexOf('.ipynb') !== -1) {\n return NOTEBOOK_ICON_CLASS;\n } else if (m.type.toLowerCase() === 'console') {\n return CONSOLE_ICON_CLASS;\n }\n return FILE_ICON_CLASS;\n }}\n label={m => m.name || PathExt.basename(m.path)}\n available={true}\n labelTitle={m => {\n let kernelName = m.kernel.name;\n if (manager.specs) {\n kernelName = manager.specs.kernelspecs[kernelName].display_name;\n }\n return `Path: ${m.path}\\nKernel: ${kernelName}`;\n }}\n shutdown={m => manager.sessions.shutdown(m.id)}\n />\n </>\n );\n}\n\n/**\n * A class that exposes the running terminal and kernel sessions.\n */\nexport class RunningSessions extends Widget {\n /**\n * Construct a new running widget.\n */\n constructor(options: RunningSessions.IOptions) {\n super();\n this.options = options;\n\n // this can't be in the react element, because then it would be too nested\n this.addClass(RUNNING_CLASS);\n }\n\n protected onUpdateRequest(msg: Message): void {\n ReactDOM.render(\n <RunningSessionsComponent\n manager={this.options.manager}\n sessionOpenRequested={this._sessionOpenRequested}\n terminalOpenRequested={this._terminalOpenRequested}\n />,\n this.node\n );\n }\n\n /* Called after the widget is attached to the DOM\n *\n * Make sure the widget is rendered, even if the model has not changed.\n */\n protected onAfterAttach(msg: Message): void {\n this.update();\n }\n\n /**\n * A signal emitted when a kernel session open is requested.\n */\n get sessionOpenRequested(): ISignal<this, Session.IModel> {\n return this._sessionOpenRequested;\n }\n\n /**\n * A signal emitted when a terminal session open is requested.\n */\n get terminalOpenRequested(): ISignal<this, TerminalSession.IModel> {\n return this._terminalOpenRequested;\n }\n\n private _sessionOpenRequested = new Signal<this, Session.IModel>(this);\n private _terminalOpenRequested = new Signal<this, TerminalSession.IModel>(\n this\n );\n private options: RunningSessions.IOptions;\n}\n\n/**\n * The namespace for the `RunningSessions` class statics.\n */\nexport namespace RunningSessions {\n /**\n * An options object for creating a running sessions widget.\n */\n export interface IOptions {\n /**\n * A service manager instance.\n */\n manager: ServiceManager.IManager;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/running",
3
- "version": "0.17.3",
3
+ "version": "0.18.4",
4
4
  "description": "JupyterLab - Running Sessions Panel",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -30,9 +30,10 @@
30
30
  "watch": "tsc -w --listEmittedFiles"
31
31
  },
32
32
  "dependencies": {
33
- "@jupyterlab/apputils": "^0.17.2",
34
- "@jupyterlab/coreutils": "^2.0.2",
35
- "@jupyterlab/services": "^3.0.3",
33
+ "@jupyterlab/apputils": "^0.18.4",
34
+ "@jupyterlab/coreutils": "^2.1.4",
35
+ "@jupyterlab/services": "^3.1.4",
36
+ "@phosphor/algorithm": "^1.1.2",
36
37
  "@phosphor/messaging": "^1.2.2",
37
38
  "@phosphor/signaling": "^1.2.2",
38
39
  "@phosphor/widgets": "^1.6.0",
package/style/index.css CHANGED
@@ -30,25 +30,11 @@
30
30
  display: flex;
31
31
  flex-direction: row;
32
32
  margin: var(--jp-toolbar-header-margin);
33
+ justify-content: flex-end;
33
34
  }
34
35
 
35
- .jp-RunningSessions-headerRefresh {
36
- flex: 1 1 auto;
37
- height: var(--jp-private-running-button-height);
38
- width: var(--jp-private-running-button-width);
39
- max-width: 100px;
40
- min-width: 16px;
41
- min-height: 16px;
42
- padding: 4px 6px;
43
- background: var(--jp-layout-color1);
44
- border: none;
45
- outline: 0;
46
- background-image: var(--jp-icon-refresh);
47
- background-size: 16px;
48
- display: block;
49
- vertical-align: middle;
50
- background-repeat: no-repeat;
51
- background-position: center;
36
+ .jp-RunningSessions-header .jp-ToolbarButtonComponent {
37
+ padding: 0px 16px;
52
38
  }
53
39
 
54
40
  .jp-RunningSessions-shutdownAll {
@@ -75,30 +61,27 @@
75
61
  flex-direction: column;
76
62
  }
77
63
 
78
- .jp-RunningSessions-headerRefresh:hover,
79
- .jp-RunningSessions-shutdownAll:hover {
80
- background-color: var(--jp-layout-color0);
81
- box-shadow: var(--jp-toolbar-box-shadow);
82
- border: 1px solid var(--jp-toolbar-border-color);
83
- z-index: 1; /* raise overlapping border */
84
- }
85
-
86
- .jp-RunningSessions-headerRefresh:active,
87
- .jp-RunningSessions-shutdownAll:active {
88
- border: 1px solid var(--jp-toolbar-border-color);
89
- background-color: var(--jp-toolbar-active-background);
90
- box-shadow: var(--jp-toolbar-box-shadow);
64
+ .jp-RunningSessions-sectionHeader {
65
+ flex: 0 0 auto;
66
+ align-items: center;
67
+ height: 28px;
68
+ display: flex;
69
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
70
+ margin-top: 8px;
91
71
  }
92
72
 
93
- .jp-RunningSessions-sectionHeader {
73
+ .jp-RunningSessions-sectionHeader h2 {
94
74
  flex: 0 0 auto;
95
- margin: 4px 0px;
96
- padding: 12px 0 4px 12px;
97
75
  font-weight: 600;
98
76
  text-transform: uppercase;
99
- border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
100
77
  letter-spacing: 1px;
101
78
  font-size: var(--jp-ui-font-size0);
79
+ padding: 8px 8px 8px 12px;
80
+ margin: 0px;
81
+ }
82
+
83
+ .jp-RunningSessions-sectionHeader .jp-ToolbarButtonComponent {
84
+ flex: 0 0 auto;
102
85
  }
103
86
 
104
87
  .jp-RunningSessions-sectionContainer {