From 782125b339a983cb8c164937bf5713a2e08e254f Mon Sep 17 00:00:00 2001 From: Artur Date: Mon, 20 Jan 2020 13:42:10 +0200 Subject: [PATCH] Backend? --- tgui-next/packages/tgui/components/Box.js | 8 + tgui-next/packages/tgui/components/Button.js | 154 ++++++- .../packages/tgui/components/Dropdown.js | 14 +- tgui-next/packages/tgui/components/Input.js | 13 +- .../packages/tgui/components/NumberInput.js | 9 + tgui-next/packages/tgui/interfaces/Cargo.js | 2 + .../packages/tgui/interfaces/CodexGigas.js | 6 +- .../packages/tgui/interfaces/EightBallVote.js | 57 +++ .../interfaces/EmergencyShuttleConsole.js | 115 ++++++ .../tgui/interfaces/GulagTeleporterConsole.js | 103 +++++ .../packages/tgui/interfaces/Intellicard.js | 72 ++++ .../packages/tgui/interfaces/Launchpad.js | 278 +++++++++++++ tgui-next/packages/tgui/interfaces/Mule.js | 147 +++++++ .../interfaces/NotificationPreferences.js | 33 ++ .../packages/tgui/interfaces/NtnetRelay.js | 66 +++ .../tgui/interfaces/NtosConfiguration.js | 90 +++++ .../packages/tgui/interfaces/NtosNetChat.js | 170 ++++++++ .../packages/tgui/interfaces/Signaler.js | 85 ++++ .../tgui/interfaces/SlimeBodySwapper.js | 70 ++++ tgui-next/packages/tgui/interfaces/Smes.js | 24 +- .../packages/tgui/interfaces/SolarControl.js | 57 ++- .../tgui/interfaces/SyndContractor.js | 382 ++++++++++++++++++ .../packages/tgui/interfaces/Teleporter.js | 69 ++++ tgui-next/packages/tgui/interfaces/Vending.js | 29 +- .../packages/tgui/public/tgui.bundle.css | 2 +- tgui-next/packages/tgui/public/tgui.bundle.js | 4 +- .../tgui/styles/components/Dropdown.scss | 2 + tgui-next/packages/tgui/styles/main.scss | 4 + .../tgui/styles/themes/cardtable.scss | 46 +++ .../tgui/styles/themes/hackerman.scss | 49 +++ .../tgui/styles/themes/syndicate.scss | 5 +- tgui-next/packages/tgui/webpack.config.js | 4 +- 32 files changed, 2109 insertions(+), 60 deletions(-) create mode 100644 tgui-next/packages/tgui/interfaces/EightBallVote.js create mode 100644 tgui-next/packages/tgui/interfaces/EmergencyShuttleConsole.js create mode 100644 tgui-next/packages/tgui/interfaces/GulagTeleporterConsole.js create mode 100644 tgui-next/packages/tgui/interfaces/Intellicard.js create mode 100644 tgui-next/packages/tgui/interfaces/Launchpad.js create mode 100644 tgui-next/packages/tgui/interfaces/Mule.js create mode 100644 tgui-next/packages/tgui/interfaces/NotificationPreferences.js create mode 100644 tgui-next/packages/tgui/interfaces/NtnetRelay.js create mode 100644 tgui-next/packages/tgui/interfaces/NtosConfiguration.js create mode 100644 tgui-next/packages/tgui/interfaces/NtosNetChat.js create mode 100644 tgui-next/packages/tgui/interfaces/Signaler.js create mode 100644 tgui-next/packages/tgui/interfaces/SlimeBodySwapper.js create mode 100644 tgui-next/packages/tgui/interfaces/SyndContractor.js create mode 100644 tgui-next/packages/tgui/interfaces/Teleporter.js create mode 100644 tgui-next/packages/tgui/styles/themes/cardtable.scss create mode 100644 tgui-next/packages/tgui/styles/themes/hackerman.scss diff --git a/tgui-next/packages/tgui/components/Box.js b/tgui-next/packages/tgui/components/Box.js index 93b8e6f2fa..5fa678681c 100644 --- a/tgui-next/packages/tgui/components/Box.js +++ b/tgui-next/packages/tgui/components/Box.js @@ -57,6 +57,13 @@ const mapColorPropTo = attrName => (style, value) => { const styleMapperByPropName = { // Direct mapping position: mapRawPropTo('position'), + overflow: mapRawPropTo('overflow'), + overflowX: mapRawPropTo('overflow-x'), + overflowY: mapRawPropTo('overflow-y'), + top: mapUnitPropTo('top'), + bottom: mapUnitPropTo('bottom'), + left: mapUnitPropTo('left'), + right: mapUnitPropTo('right'), width: mapUnitPropTo('width'), minWidth: mapUnitPropTo('min-width'), maxWidth: mapUnitPropTo('max-width'), @@ -68,6 +75,7 @@ const styleMapperByPropName = { lineHeight: mapUnitPropTo('line-height'), opacity: mapRawPropTo('opacity'), textAlign: mapRawPropTo('text-align'), + verticalAlign: mapRawPropTo('vertical-align'), // Boolean props inline: mapBooleanPropTo('display', 'inline-block'), bold: mapBooleanPropTo('font-weight', 'bold'), diff --git a/tgui-next/packages/tgui/components/Button.js b/tgui-next/packages/tgui/components/Button.js index 031098efe1..5ed0c8648b 100644 --- a/tgui-next/packages/tgui/components/Button.js +++ b/tgui-next/packages/tgui/components/Button.js @@ -1,11 +1,14 @@ import { classes, pureComponentHooks } from 'common/react'; -import { tridentVersion } from '../byond'; +import { tridentVersion, act } from '../byond'; import { KEY_ENTER, KEY_ESCAPE, KEY_SPACE } from '../hotkeys'; import { createLogger } from '../logging'; import { refocusLayout } from '../refocus'; import { Box } from './Box'; import { Icon } from './Icon'; import { Tooltip } from './Tooltip'; +import { Input } from './Input'; +import { Component, createRef } from 'inferno'; +import { Grid } from './Grid'; const logger = createLogger('Button'); @@ -21,6 +24,8 @@ export const Button = props => { tooltipPosition, ellipsis, content, + iconRotation, + iconSpin, children, onclick, onClick, @@ -78,7 +83,7 @@ export const Button = props => { }} {...rest}> {icon && ( - + )} {content} {children} @@ -105,3 +110,148 @@ export const ButtonCheckbox = props => { }; Button.Checkbox = ButtonCheckbox; + +export class ButtonConfirm extends Component { + constructor() { + super(); + this.state = { + clickedOnce: false, + }; + this.handleClick = () => { + if (this.state.clickedOnce) { + this.setClickedOnce(false); + } + }; + } + + setClickedOnce(clickedOnce) { + this.setState({ + clickedOnce, + }); + if (clickedOnce) { + setTimeout(() => window.addEventListener('click', this.handleClick)); + } + else { + window.removeEventListener('click', this.handleClick); + } + } + + render() { + const { + confirmMessage = "Confirm?", + confirmColor = "bad", + color, + content, + onClick, + ...rest + } = this.props; + return ( +