@singularsystems/neo-react 0.10.30 → 0.10.31

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.
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { Model } from '@singularsystems/neo-core';
2
3
  interface ICardProps {
3
4
  /** Icon to show next to title in header. */
4
5
  icon?: string;
@@ -8,8 +9,15 @@ interface ICardProps {
8
9
  headerElements?: JSX.Element;
9
10
  /** Use a custom scrollbar instead of the browser scrollbar. */
10
11
  useCustomScrollbar?: boolean;
12
+ /** Causes the card to be collapsible. Adds a collapse icon to the header. */
13
+ collapsible?: boolean;
14
+ /** Causes the card to be collapsed on first render. Sets the collapsible prop to true. */
15
+ initiallyCollapsed?: boolean;
16
+ /** Allows the collapse state to be set externally. Sets the collapsible prop to true. */
17
+ isExpanded?: Model.IObservableValue<boolean>;
11
18
  }
12
19
  export default class Card extends React.Component<ICardProps & React.HTMLProps<HTMLDivElement>> {
20
+ private expandState;
13
21
  render(): JSX.Element;
14
22
  }
15
23
  export {};
@@ -1,25 +1,50 @@
1
1
  import { __assign, __decorate, __extends, __rest } from "tslib";
2
2
  import React from 'react';
3
- import { Utils } from '@singularsystems/neo-core';
3
+ import { Model, Utils } from '@singularsystems/neo-core';
4
4
  import { observer } from 'mobx-react';
5
5
  import Scrollbar from 'react-custom-scrollbars';
6
+ import Collapsable from './Collapsable';
6
7
  var Card = /** @class */ (function (_super) {
7
8
  __extends(Card, _super);
8
9
  function Card() {
9
- return _super !== null && _super.apply(this, arguments) || this;
10
+ var _this = _super !== null && _super.apply(this, arguments) || this;
11
+ _this.expandState = new Model.ObservableValue(_this.props.initiallyCollapsed === undefined ? true : !_this.props.initiallyCollapsed);
12
+ return _this;
10
13
  }
11
14
  Card.prototype.render = function () {
12
- var _a = this.props, icon = _a.icon, title = _a.title, children = _a.children, headerElements = _a.headerElements, useCustomScrollbar = _a.useCustomScrollbar, domProps = __rest(_a, ["icon", "title", "children", "headerElements", "useCustomScrollbar"]);
15
+ var _a = this.props, icon = _a.icon, title = _a.title, children = _a.children, headerElements = _a.headerElements, useCustomScrollbar = _a.useCustomScrollbar, collapsible = _a.collapsible, initiallyCollapsed = _a.initiallyCollapsed, isExpanded = _a.isExpanded, domProps = __rest(_a, ["icon", "title", "children", "headerElements", "useCustomScrollbar", "collapsible", "initiallyCollapsed", "isExpanded"]);
13
16
  var className = Utils.joinWithSpaces("neo-card card", domProps.className);
17
+ var isCollapsible = collapsible || isExpanded !== undefined || initiallyCollapsed !== undefined;
18
+ var expandState = (isExpanded !== null && isExpanded !== void 0 ? isExpanded : this.expandState);
19
+ if (isCollapsible) {
20
+ var expandIndicator = React.createElement("i", { onClick: function () { return expandState.value = !expandState.value; }, className: "card-expand-indicator fa fa-fw fa-angle-" + (expandState.value ? "up" : "down") });
21
+ if (headerElements) {
22
+ headerElements = React.createElement(React.Fragment, null,
23
+ headerElements,
24
+ expandIndicator);
25
+ }
26
+ else {
27
+ headerElements = expandIndicator;
28
+ }
29
+ if (!expandState.value) {
30
+ className += " collapsed";
31
+ }
32
+ }
33
+ var body = React.createElement("div", { className: "card-body" },
34
+ useCustomScrollbar && React.createElement(Scrollbar, null, children),
35
+ !useCustomScrollbar && children);
36
+ if (isCollapsible) {
37
+ body =
38
+ React.createElement(Collapsable, { show: expandState.value }, body);
39
+ }
14
40
  return (React.createElement("div", __assign({}, domProps, { className: className }),
15
41
  (icon || title) &&
16
42
  React.createElement("div", { className: "card-header" },
17
- icon && React.createElement("i", { className: Utils.getFontAwesomeClass(icon) }),
18
- React.createElement("span", null, title),
43
+ React.createElement("div", { className: "card-header-title" },
44
+ icon && React.createElement("i", { className: Utils.getFontAwesomeClass(icon) }),
45
+ React.createElement("span", null, title)),
19
46
  headerElements && React.createElement("div", { className: "card-header-right-section" }, headerElements)),
20
- React.createElement("div", { className: "card-body" },
21
- useCustomScrollbar && React.createElement(Scrollbar, null, children),
22
- !useCustomScrollbar && children)));
47
+ body));
23
48
  };
24
49
  Card = __decorate([
25
50
  observer
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../src/ReactComponents/Card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAiBhD;IAAkC,wBAA6D;IAA/F;;IAwBA,CAAC;IAvBG,qBAAM,GAAN;QACI,IAAM,eAAuF,EAArF,cAAI,EAAE,gBAAK,EAAE,sBAAQ,EAAE,kCAAc,EAAE,0CAAkB,EAAE,4FAA0B,CAAC;QAE9F,IAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE5E,OAAO,CACH,wCAAS,QAAQ,IAAE,SAAS,EAAE,SAAS;YAElC,CAAC,IAAI,IAAI,KAAK,CAAC;gBAChB,6BAAK,SAAS,EAAC,aAAa;oBACvB,IAAI,IAAI,2BAAG,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAI;oBAC1D,kCAAO,KAAK,CAAQ;oBAEnB,cAAc,IAAI,6BAAK,SAAS,EAAC,2BAA2B,IAAE,cAAc,CAAO,CAClF;YAEN,6BAAK,SAAS,EAAC,WAAW;gBACrB,kBAAkB,IAAI,oBAAC,SAAS,QAAE,QAAQ,CAAa;gBACvD,CAAC,kBAAkB,IAAI,QAAQ,CAC9B,CACJ,CACT,CAAA;IACL,CAAC;IAvBgB,IAAI;QADxB,QAAQ;OACY,IAAI,CAwBxB;IAAD,WAAC;CAAA,AAxBD,CAAkC,KAAK,CAAC,SAAS,GAwBhD;eAxBoB,IAAI"}
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../src/ReactComponents/Card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAChD,OAAO,WAAW,MAAM,eAAe,CAAC;AA0BxC;IAAkC,wBAA6D;IAA/F;QAAA,qEAsDC;QApDW,iBAAW,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,KAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;;IAoDzI,CAAC;IAlDG,qBAAM,GAAN;QACI,IAAI,eAAoI,EAAlI,cAAI,EAAE,gBAAK,EAAE,sBAAQ,EAAE,kCAAc,EAAE,0CAAkB,EAAE,4BAAW,EAAE,0CAAkB,EAAE,0BAAU,EAAE,+IAA0B,CAAC;QAEzI,IAAI,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE1E,IAAM,aAAa,GAAG,WAAW,IAAI,UAAU,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS,CAAC;QAClG,IAAM,WAAW,IAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,IAAI,CAAC,WAAW,CAAA,CAAC;QAEnD,IAAI,aAAa,EAAE;YACf,IAAM,eAAe,GAAG,2BAAG,OAAO,EAAE,cAAM,OAAA,WAAW,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,EAAtC,CAAsC,EAAE,SAAS,EAAE,8CAA2C,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAE,GAAI,CAAA;YAC/K,IAAI,cAAc,EAAE;gBAChB,cAAc,GAAG;oBAAG,cAAc;oBAAE,eAAe,CAAI,CAAA;aAC1D;iBAAM;gBACH,cAAc,GAAG,eAAe,CAAC;aACpC;YACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBACpB,SAAS,IAAI,YAAY,CAAA;aAC5B;SACJ;QAED,IAAI,IAAI,GACJ,6BAAK,SAAS,EAAC,WAAW;YACrB,kBAAkB,IAAI,oBAAC,SAAS,QAAE,QAAQ,CAAa;YACvD,CAAC,kBAAkB,IAAI,QAAQ,CAC9B,CAAA;QAEV,IAAI,aAAa,EAAE;YACf,IAAI;gBACJ,oBAAC,WAAW,IAAC,IAAI,EAAE,WAAW,CAAC,KAAK,IAC/B,IAAI,CACK,CAAA;SACjB;QAED,OAAO,CACH,wCAAS,QAAQ,IAAE,SAAS,EAAE,SAAS;YAElC,CAAC,IAAI,IAAI,KAAK,CAAC;gBAChB,6BAAK,SAAS,EAAC,aAAa;oBACxB,6BAAK,SAAS,EAAC,mBAAmB;wBAC7B,IAAI,IAAI,2BAAG,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAI;wBAC1D,kCAAO,KAAK,CAAQ,CAClB;oBAEL,cAAc,IAAI,6BAAK,SAAS,EAAC,2BAA2B,IAAE,cAAc,CAAO,CAClF;YAEL,IAAI,CACH,CACT,CAAA;IACL,CAAC;IArDgB,IAAI;QADxB,QAAQ;OACY,IAAI,CAsDxB;IAAD,WAAC;CAAA,AAtDD,CAAkC,KAAK,CAAC,SAAS,GAsDhD;eAtDoB,IAAI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@singularsystems/neo-react",
3
- "version": "0.10.30",
3
+ "version": "0.10.31",
4
4
  "description": "React application logic and components for the Neo client library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,24 @@
1
+ .neo-card.card {
2
+ .card-header {
3
+ display: flex;
4
+ justify-content: space-between;
5
+ align-items: center;
6
+
7
+ .card-header-title i {
8
+ margin-right: 10px;
9
+ }
10
+
11
+ .card-header-right-section {
12
+ display: inline-flex;
13
+ align-items: center;
14
+ margin: -10px 0;
15
+
16
+ .card-expand-indicator {
17
+ cursor: pointer;
18
+ margin-left: 0.5rem;
19
+ padding-top: 0.5rem;
20
+ padding-bottom: 0.5rem;
21
+ }
22
+ }
23
+ }
24
+ }
package/styles/Neo.scss CHANGED
@@ -1,4 +1,5 @@
1
1
  @import './Button.scss';
2
+ @import './Card.scss';
2
3
  @import './ColorPicker.scss';
3
4
  @import './ContextMenu.scss';
4
5
  @import './DatePicker.scss';