UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

219 lines (189 loc) 7.17 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireDefault(require("react")); var _react2 = require("@storybook/react"); var _chat = _interopRequireDefault(require("../../utilities/specs/chat.specs")); var _avatar = _interopRequireDefault(require("../../utilities/specs/avatar.specs")); var _index = require("../index"); var _jsxRuntime = require("react/jsx-runtime"); var stories = (0, _react2.storiesOf)('PhaseOut/ChatList', module); var avatars = _avatar.default.generate(8); var getItemMarkup = function getItemMarkup() { var fixtures = _chat.default.generate(8); var values = Object.values(fixtures).filter(function (i) { return !!i; }); return values.map(function (item, index) { var avatar = /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Avatar, { image: avatars[4].image, name: avatars[4].name, size: "xs", shape: "rounded" }); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ChatList.Item, { avatar: item.isAssigned ? avatar : null, isAssigned: item.isAssigned, isFocused: index === 2, isTyping: item.isTyping, isViewing: item.isViewing, isWaiting: item.isWaiting, message: item.message, name: item.name, newMessageCount: item.newMessageCount, tags: item.tags, timestamp: item.timestamp }, item.id); }); }; stories.add('default', function () { var itemMarkup = getItemMarkup(); return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { style: { width: 300 }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ChatList, { children: itemMarkup }) }); }); var ChatListItemStateExample = /*#__PURE__*/function (_React$Component) { (0, _inheritsLoose2.default)(ChatListItemStateExample, _React$Component); function ChatListItemStateExample() { var _this; _this = _React$Component.call(this) || this; _this.state = (0, _extends2.default)({}, _chat.default.generate(), { avatar: undefined, name: 'This is a super long name', isAssigned: false, isTyping: false, isFocused: false, isWaiting: false, isViewing: false, newMessageCount: 0 }); _this.toggleAssigned = _this.toggleAssigned.bind((0, _assertThisInitialized2.default)(_this)); _this.toggleCount = _this.toggleCount.bind((0, _assertThisInitialized2.default)(_this)); _this.toggleFocused = _this.toggleFocused.bind((0, _assertThisInitialized2.default)(_this)); _this.toggleTyping = _this.toggleTyping.bind((0, _assertThisInitialized2.default)(_this)); _this.toggleViewing = _this.toggleViewing.bind((0, _assertThisInitialized2.default)(_this)); _this.toggleWaiting = _this.toggleWaiting.bind((0, _assertThisInitialized2.default)(_this)); _this.handleOnClick = _this.handleOnClick.bind((0, _assertThisInitialized2.default)(_this)); return _this; } var _proto = ChatListItemStateExample.prototype; _proto.handleOnClick = function handleOnClick() { if (this.state.isFocused) { this.setState({ newMessageCount: 0 }); } }; _proto.toggleAssigned = function toggleAssigned() { var avatarFixture = _avatar.default.generate(); var avatar = /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Avatar, { image: avatarFixture.image, name: avatarFixture.name, size: "xs", shape: "rounded" }); this.setState({ isAssigned: !this.state.isAssigned, avatar: this.state.avatar ? undefined : avatar }); }; _proto.toggleCount = function toggleCount() { this.setState({ newMessageCount: this.state.newMessageCount ? 0 : 3 }); }; _proto.toggleFocused = function toggleFocused() { this.setState({ isFocused: !this.state.isFocused }); }; _proto.toggleTyping = function toggleTyping() { this.setState({ isTyping: !this.state.isTyping }); }; _proto.toggleViewing = function toggleViewing() { this.setState({ isViewing: !this.state.isViewing }); }; _proto.toggleWaiting = function toggleWaiting() { this.setState({ isWaiting: !this.state.isWaiting }); }; _proto.render = function render() { var item = this.state; var handleOnClick = this.handleOnClick; var toggleAssigned = this.toggleAssigned; var toggleCount = this.toggleCount; var toggleFocused = this.toggleFocused; var toggleTyping = this.toggleTyping; var toggleViewing = this.toggleViewing; var toggleWaiting = this.toggleWaiting; return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ChatList.Item, { avatar: item.avatar, isAssigned: item.isAssigned, isFocused: item.isFocused, isTyping: item.isTyping, isViewing: item.isViewing, isWaiting: item.isWaiting, onClick: handleOnClick, message: item.message, name: item.name, newMessageCount: item.newMessageCount, tags: item.tags, timestamp: item.timestamp }), /*#__PURE__*/(0, _jsxRuntime.jsx)("br", {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_index.List, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index.List.Item, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Button, { onClick: toggleAssigned, children: "Toggle Assigned" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.List.Item, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Button, { onClick: toggleCount, children: "Toggle Count" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.List.Item, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Button, { onClick: toggleFocused, children: "Toggle Focused" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.List.Item, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Button, { onClick: toggleTyping, children: "Toggle Typing" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.List.Item, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Button, { onClick: toggleViewing, children: "Toggle Viewing" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.List.Item, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.Button, { onClick: toggleWaiting, children: "Toggle Waiting" }) })] })] }); }; return ChatListItemStateExample; }(_react.default.Component); stories.add('item: states', function () { return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { style: { width: 300 }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ChatListItemStateExample, {}) }); });