superdesk-ui-framework 3.0.1-beta.3 → 3.0.1-beta.6

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.
Files changed (100) hide show
  1. package/app/styles/_sd-tag-input.scss +201 -296
  2. package/app/styles/components/_list-item.scss +13 -1
  3. package/app/styles/components/_sd-photo-preview.scss +1 -1
  4. package/app/styles/design-tokens/_new-colors.scss +1 -1
  5. package/app/styles/form-elements/_forms-general.scss +22 -7
  6. package/app/styles/form-elements/_inputs.scss +133 -54
  7. package/app-typescript/components/Badge.tsx +3 -2
  8. package/app-typescript/components/DatePicker.tsx +40 -52
  9. package/app-typescript/components/DurationInput.tsx +342 -0
  10. package/app-typescript/components/Form/InputBase.tsx +85 -0
  11. package/app-typescript/components/Form/InputNew.tsx +107 -0
  12. package/app-typescript/components/Form/InputWrapper.tsx +79 -0
  13. package/app-typescript/components/Form/index.tsx +3 -0
  14. package/app-typescript/components/Input.tsx +28 -45
  15. package/app-typescript/components/Label.tsx +49 -10
  16. package/app-typescript/components/Layouts/Layout.tsx +1 -1
  17. package/app-typescript/components/Lists/ContentList.tsx +4 -4
  18. package/app-typescript/components/MultiSelect.tsx +37 -50
  19. package/app-typescript/components/Navigation/BottomNav.tsx +3 -2
  20. package/app-typescript/components/Select.tsx +23 -41
  21. package/app-typescript/components/SelectWithTemplate.tsx +32 -7
  22. package/app-typescript/components/TimePicker.tsx +48 -16
  23. package/app-typescript/components/TreeSelect.tsx +423 -195
  24. package/app-typescript/index.ts +4 -1
  25. package/dist/examples.bundle.js +16733 -15633
  26. package/dist/playgrounds/react-playgrounds/CoreLayout.tsx +64 -54
  27. package/dist/playgrounds/react-playgrounds/RundownEditor.tsx +24 -16
  28. package/dist/playgrounds/react-playgrounds/TestGround.tsx +76 -1
  29. package/dist/playgrounds/react-playgrounds/components/Layout.tsx +1 -1
  30. package/dist/react/Badges.tsx +18 -0
  31. package/dist/react/ContentList.tsx +15 -9
  32. package/dist/react/DatePicker.tsx +21 -1
  33. package/dist/react/DurationInput.tsx +104 -0
  34. package/dist/react/Index.tsx +5 -0
  35. package/dist/react/Inputs.tsx +153 -2
  36. package/dist/react/Labels.tsx +51 -1
  37. package/dist/react/MultiSelect.tsx +4 -1
  38. package/dist/react/SelectWithTemplate.tsx +6 -1
  39. package/dist/react/TableList.tsx +22 -44
  40. package/dist/react/TimePicker.tsx +16 -8
  41. package/dist/react/TreeSelect.tsx +301 -48
  42. package/dist/react/tree-select/TreeSelect.tsx +273 -0
  43. package/dist/react/tree-select/example-1.tsx +71 -0
  44. package/dist/react/tree-select/example-2.tsx +59 -0
  45. package/dist/superdesk-ui.bundle.css +413 -370
  46. package/dist/superdesk-ui.bundle.js +15879 -14782
  47. package/dist/vendor.bundle.js +27 -27
  48. package/examples/pages/playgrounds/react-playgrounds/CoreLayout.tsx +64 -54
  49. package/examples/pages/playgrounds/react-playgrounds/RundownEditor.tsx +24 -16
  50. package/examples/pages/playgrounds/react-playgrounds/TestGround.tsx +76 -1
  51. package/examples/pages/playgrounds/react-playgrounds/components/Layout.tsx +1 -1
  52. package/examples/pages/react/Badges.tsx +18 -0
  53. package/examples/pages/react/ContentList.tsx +15 -9
  54. package/examples/pages/react/DatePicker.tsx +21 -1
  55. package/examples/pages/react/DurationInput.tsx +104 -0
  56. package/examples/pages/react/Index.tsx +5 -0
  57. package/examples/pages/react/Inputs.tsx +153 -2
  58. package/examples/pages/react/Labels.tsx +51 -1
  59. package/examples/pages/react/MultiSelect.tsx +4 -1
  60. package/examples/pages/react/SelectWithTemplate.tsx +6 -1
  61. package/examples/pages/react/TableList.tsx +22 -44
  62. package/examples/pages/react/TimePicker.tsx +16 -8
  63. package/examples/pages/react/TreeSelect.tsx +301 -48
  64. package/examples/pages/react/tree-select/TreeSelect.tsx +273 -0
  65. package/examples/pages/react/tree-select/example-1.tsx +71 -0
  66. package/examples/pages/react/tree-select/example-2.tsx +59 -0
  67. package/package.json +2 -1
  68. package/patches/@superdesk+primereact+5.0.2-4.patch +10 -1
  69. package/react/components/Badge.d.ts +1 -0
  70. package/react/components/Badge.js +2 -2
  71. package/react/components/DatePicker.d.ts +1 -0
  72. package/react/components/DatePicker.js +6 -22
  73. package/react/components/DurationInput.d.ts +41 -0
  74. package/react/components/DurationInput.js +303 -0
  75. package/react/components/Form/InputBase.d.ts +42 -0
  76. package/react/components/Form/InputBase.js +72 -0
  77. package/react/components/Form/InputNew.d.ts +45 -0
  78. package/react/components/Form/InputNew.js +75 -0
  79. package/react/components/Form/InputWrapper.d.ts +28 -0
  80. package/react/components/Form/InputWrapper.js +91 -0
  81. package/react/components/Form/index.d.ts +3 -0
  82. package/react/components/Form/index.js +7 -1
  83. package/react/components/Input.js +5 -34
  84. package/react/components/Label.d.ts +1 -0
  85. package/react/components/Label.js +18 -2
  86. package/react/components/Layouts/Layout.js +1 -1
  87. package/react/components/Lists/ContentList.d.ts +45 -0
  88. package/react/components/Lists/ContentList.js +85 -0
  89. package/react/components/Navigation/BottomNav.d.ts +1 -0
  90. package/react/components/Navigation/BottomNav.js +2 -2
  91. package/react/components/Select.d.ts +1 -1
  92. package/react/components/Select.js +4 -26
  93. package/react/components/SelectWithTemplate.d.ts +11 -1
  94. package/react/components/SelectWithTemplate.js +19 -10
  95. package/react/components/TimePicker.d.ts +15 -2
  96. package/react/components/TimePicker.js +15 -4
  97. package/react/components/TreeSelect.d.ts +75 -0
  98. package/react/components/TreeSelect.js +448 -0
  99. package/react/index.d.ts +4 -0
  100. package/react/index.js +10 -3
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FormLabel = exports.FormText = exports.FormItem = exports.FormGroup = exports.FormRow = void 0;
3
+ exports.InputNew = exports.InputBase = exports.InputWrapper = exports.FormLabel = exports.FormText = exports.FormItem = exports.FormGroup = exports.FormRow = void 0;
4
4
  var FormRow_1 = require("./FormRow");
5
5
  Object.defineProperty(exports, "FormRow", { enumerable: true, get: function () { return FormRow_1.FormRow; } });
6
6
  var FormGroup_1 = require("./FormGroup");
@@ -11,3 +11,9 @@ var FormText_1 = require("./FormText");
11
11
  Object.defineProperty(exports, "FormText", { enumerable: true, get: function () { return FormText_1.FormText; } });
12
12
  var FormLabel_1 = require("./FormLabel");
13
13
  Object.defineProperty(exports, "FormLabel", { enumerable: true, get: function () { return FormLabel_1.FormLabel; } });
14
+ var InputWrapper_1 = require("./InputWrapper");
15
+ Object.defineProperty(exports, "InputWrapper", { enumerable: true, get: function () { return InputWrapper_1.InputWrapper; } });
16
+ var InputBase_1 = require("./InputBase");
17
+ Object.defineProperty(exports, "InputBase", { enumerable: true, get: function () { return InputBase_1.InputBase; } });
18
+ var InputNew_1 = require("./InputNew");
19
+ Object.defineProperty(exports, "InputNew", { enumerable: true, get: function () { return InputNew_1.InputNew; } });
@@ -39,8 +39,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Input = void 0;
41
41
  var React = __importStar(require("react"));
42
- var classnames_1 = __importDefault(require("classnames"));
42
+ // import classNames from 'classnames';
43
43
  var react_id_generator_1 = __importDefault(require("react-id-generator"));
44
+ var Form_1 = require("./Form");
44
45
  var Input = /** @class */ (function (_super) {
45
46
  __extends(Input, _super);
46
47
  function Input(props) {
@@ -72,39 +73,9 @@ var Input = /** @class */ (function (_super) {
72
73
  }
73
74
  };
74
75
  Input.prototype.render = function () {
75
- var _a;
76
- var _b;
77
- var classes = (0, classnames_1.default)('sd-input', (_a = {
78
- 'sd-input--inline-label': this.props.inlineLabel,
79
- 'sd-input--required': this.props.required,
80
- 'sd-input--disabled': this.props.disabled,
81
- 'sd-input--full-width': this.props.fullWidth,
82
- 'sd-input--invalid': this.props.invalid || this.state.invalid,
83
- 'sd-input--medium': this.props.size === undefined
84
- },
85
- _a["sd-input--".concat(this.props.size)] = this.props.size || this.props.size !== undefined,
86
- _a['sd-input--boxed-style'] = this.props.boxedStyle,
87
- _a['sd-input--boxed-label'] = this.props.boxedLable,
88
- _a));
89
- var labelClasses = (0, classnames_1.default)('sd-input__label', {
90
- 'a11y-only': this.props.labelHidden,
91
- 'sd-input__label--boxed': this.props.boxedLable,
92
- });
93
- return (React.createElement("div", { className: classes },
94
- React.createElement("label", { className: labelClasses, htmlFor: this.htmlId, id: this.htmlId + 'label', tabIndex: this.props.tabindex === undefined ? undefined : -1 }, this.props.label),
95
- React.createElement("input", { className: 'sd-input__input', type: (_b = this.props.type) !== null && _b !== void 0 ? _b : 'text', id: this.htmlId, value: this.state.value, "aria-describedby": this.htmlId + 'label', tabIndex: this.props.tabindex, onChange: this.handleChange, placeholder: this.props.placeholder, disabled: this.props.disabled }),
96
- this.props.maxLength ?
97
- React.createElement("div", { className: 'sd-input__char-count' },
98
- this.state.value.toString().length,
99
- " / ",
100
- this.props.maxLength)
101
- : null,
102
- React.createElement("div", { className: 'sd-input__message-box' },
103
- this.props.info && !this.props.invalid && !this.state.invalid ?
104
- React.createElement("div", { className: 'sd-input__hint' }, this.props.info) : null,
105
- this.props.invalid || this.state.invalid ?
106
- React.createElement("div", { className: 'sd-input__message' }, this.props.error)
107
- : null)));
76
+ var _a, _b;
77
+ return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, required: this.props.required, disabled: this.props.disabled, value: this.state.value, invalid: this.props.invalid, info: this.props.info, maxLength: this.props.maxLength, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, size: (_a = this.props.size) !== null && _a !== void 0 ? _a : 'medium', fullWidth: this.props.fullWidth, htmlId: this.htmlId, boxedStyle: this.props.boxedStyle, boxedLable: this.props.boxedLable, tabindex: this.props.tabindex },
78
+ React.createElement("input", { className: 'sd-input__input', type: (_b = this.props.type) !== null && _b !== void 0 ? _b : 'text', id: this.htmlId, value: this.state.value, "aria-describedby": this.htmlId + 'label', tabIndex: this.props.tabindex, onChange: this.handleChange, placeholder: this.props.placeholder, disabled: this.props.disabled })));
108
79
  };
109
80
  return Input;
110
81
  }(React.Component));
@@ -7,6 +7,7 @@ interface IProps {
7
7
  size?: 'small' | 'normal' | 'large';
8
8
  onClick?(): void;
9
9
  noTransform?: boolean;
10
+ hexColor?: string;
10
11
  style?: 'filled' | 'hollow' | 'translucent';
11
12
  }
12
13
  export declare class Label extends React.PureComponent<IProps> {
@@ -56,10 +56,26 @@ var Label = /** @class */ (function (_super) {
56
56
  _a["hollow-".concat(this.props.color)] = this.props.color && this.props.style === 'hollow',
57
57
  _a));
58
58
  if (this.props.link || this.props.onClick) {
59
- return (React.createElement("a", { href: this.props.link, className: classes, onClick: this.props.onClick }, this.props.text));
59
+ if (this.props.style === 'hollow') {
60
+ return (React.createElement("a", { className: classes, href: this.props.link, onClick: this.props.onClick, style: { color: this.props.hexColor, borderColor: this.props.hexColor } }, this.props.text));
61
+ }
62
+ else if (this.props.style === 'translucent') {
63
+ return (React.createElement("a", { className: classes, href: this.props.link, onClick: this.props.onClick, style: { color: this.props.hexColor, backgroundColor: "".concat(this.props.hexColor, "33") } }, this.props.text));
64
+ }
65
+ else {
66
+ return (React.createElement("a", { className: classes, href: this.props.link, onClick: this.props.onClick, style: { backgroundColor: this.props.hexColor } }, this.props.text));
67
+ }
60
68
  }
61
69
  else {
62
- return (React.createElement("span", { className: classes }, this.props.text));
70
+ if (this.props.style === 'hollow') {
71
+ return (React.createElement("span", { className: classes, style: { color: this.props.hexColor, borderColor: this.props.hexColor } }, this.props.text));
72
+ }
73
+ else if (this.props.style === 'translucent') {
74
+ return (React.createElement("span", { className: classes, style: { color: this.props.hexColor, backgroundColor: "".concat(this.props.hexColor, "33") } }, this.props.text));
75
+ }
76
+ else {
77
+ return (React.createElement("span", { className: classes, style: { backgroundColor: this.props.hexColor } }, this.props.text));
78
+ }
63
79
  }
64
80
  };
65
81
  return Label;
@@ -31,6 +31,6 @@ var Layout = function (_a) {
31
31
  React.createElement("i", { className: 'icon-collapse icon--white' })),
32
32
  React.createElement("p", { className: 'sd-top-menu__header' }, header)),
33
33
  React.createElement("section", { id: '1', className: 'sd-content sd-content-wrapper' }, children),
34
- React.createElement("footer", { className: 'sd-bottom-bar' }, "This is the footer.")));
34
+ React.createElement("footer", { className: 'sd-bottom-bar' }, "Footer")));
35
35
  };
36
36
  exports.Layout = Layout;
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ interface IPropsItem {
3
+ action?: React.ReactNode;
4
+ locked?: boolean;
5
+ itemColum: Array<{
6
+ itemRow: Array<{
7
+ content: any;
8
+ }>;
9
+ border?: boolean;
10
+ fullwidth?: boolean;
11
+ }>;
12
+ activated?: boolean;
13
+ selected?: boolean;
14
+ archived?: boolean;
15
+ loading?: boolean;
16
+ onClick?(): void;
17
+ onDoubleClick?(): void;
18
+ }
19
+ declare class ContentListItem extends React.PureComponent<IPropsItem> {
20
+ render(): JSX.Element;
21
+ }
22
+ interface IProps {
23
+ items: Array<{
24
+ itemColum: Array<IItemArray>;
25
+ locked?: boolean;
26
+ action?: React.ReactNode;
27
+ loading?: boolean;
28
+ activated?: boolean;
29
+ selected?: boolean;
30
+ archived?: boolean;
31
+ onClick?(): void;
32
+ onDoubleClick?(): void;
33
+ }>;
34
+ }
35
+ interface IItemArray {
36
+ itemRow: Array<{
37
+ content: React.ReactNode;
38
+ }>;
39
+ border?: boolean;
40
+ fullwidth?: boolean;
41
+ }
42
+ declare class ContentList extends React.PureComponent<IProps> {
43
+ render(): JSX.Element;
44
+ }
45
+ export { ContentList, ContentListItem };
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ContentListItem = exports.ContentList = void 0;
41
+ var React = __importStar(require("react"));
42
+ var classnames_1 = __importDefault(require("classnames"));
43
+ var ContentListItem = /** @class */ (function (_super) {
44
+ __extends(ContentListItem, _super);
45
+ function ContentListItem() {
46
+ return _super !== null && _super.apply(this, arguments) || this;
47
+ }
48
+ ContentListItem.prototype.render = function () {
49
+ var classes = (0, classnames_1.default)('sd-list-item sd-list-item-group sd-list-item-group--space-between-items', {
50
+ 'sd-list-item--activated': this.props.activated,
51
+ 'sd-list-item--selected': this.props.selected,
52
+ 'fetched': this.props.archived,
53
+ 'actioning': this.props.loading,
54
+ });
55
+ return (React.createElement("div", { className: classes, onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick },
56
+ React.createElement("div", { className: "sd-list-item sd-shadow--z1" },
57
+ this.props.locked
58
+ ? React.createElement("div", { className: "sd-list-item__border sd-list-item__border--locked" })
59
+ : React.createElement("div", { className: "sd-list-item__border" }),
60
+ this.props.itemColum.map(function (item, index) {
61
+ return React.createElement("div", { className: "sd-list-item__column ".concat(item.fullwidth && 'sd-list-item__column--grow', " ").concat(!item.border && 'sd-list-item__column--no-border'), key: index }, item.itemRow.map(function (e, i) {
62
+ return (item.itemRow.length <= 1
63
+ ? React.createElement(React.Fragment, { key: i }, e.content)
64
+ : React.createElement("div", { className: "sd-list-item__row", key: i }, e.content));
65
+ }));
66
+ }),
67
+ React.createElement("div", { className: "sd-list-item__action-menu" }, this.props.action))));
68
+ };
69
+ return ContentListItem;
70
+ }(React.PureComponent));
71
+ exports.ContentListItem = ContentListItem;
72
+ var ContentList = /** @class */ (function (_super) {
73
+ __extends(ContentList, _super);
74
+ function ContentList() {
75
+ return _super !== null && _super.apply(this, arguments) || this;
76
+ }
77
+ ContentList.prototype.render = function () {
78
+ var classes = (0, classnames_1.default)('sd-list-item-group sd-list-item-group--space-between-items');
79
+ return (React.createElement("ul", { className: classes }, this.props.items.map(function (item, index) {
80
+ return React.createElement(ContentListItem, { key: index, itemColum: item.itemColum, locked: item.locked, action: item.action, loading: item.loading, activated: item.activated, selected: item.selected, archived: item.archived, onClick: item.onClick, onDoubleClick: item.onDoubleClick });
81
+ })));
82
+ };
83
+ return ContentList;
84
+ }(React.PureComponent));
85
+ exports.ContentList = ContentList;
@@ -8,6 +8,7 @@ interface IItem {
8
8
  active?: boolean;
9
9
  title: string;
10
10
  onClick(event: any): void;
11
+ onRemove(event: any): void;
11
12
  }
12
13
  interface IState {
13
14
  index: number;
@@ -71,7 +71,7 @@ var BottomNav = /** @class */ (function (_super) {
71
71
  };
72
72
  BottomNav.prototype.render = function () {
73
73
  var _this = this;
74
- return (React.createElement("ul", { className: 'sd-bottom-nav-list' }, this.state.items.map(function (item, index) {
74
+ return (React.createElement("ul", { className: 'sd-bottom-nav-list' }, this.props.items.map(function (item, index) {
75
75
  return (React.createElement("li", { key: index, className: 'sd-bottom-nav-list__item' + (item['active'] ? ' sd-bottom-nav-list__item--active' : (index === _this.state.index ? ' sd-bottom-nav-list__item--active' : '')) },
76
76
  React.createElement("a", { className: 'sd-bottom-nav-list__item-title', onClick: function (event) {
77
77
  _this.handleClick(index);
@@ -80,7 +80,7 @@ var BottomNav = /** @class */ (function (_super) {
80
80
  item['icon'] &&
81
81
  React.createElement(Icon_1.Icon, { name: item['icon'] }),
82
82
  React.createElement("span", null, item.title)),
83
- React.createElement(IconButton_1.IconButton, { size: 'small', icon: "close-small", ariaValue: 'Delete', onClick: function () { return _this.handleDelete(index); } })));
83
+ React.createElement(IconButton_1.IconButton, { size: 'small', icon: "close-small", ariaValue: 'Delete', onClick: function () { return item.onRemove(index); } })));
84
84
  })));
85
85
  };
86
86
  return BottomNav;
@@ -22,8 +22,8 @@ interface IState {
22
22
  invalid: boolean;
23
23
  }
24
24
  declare class Select extends React.Component<ISelect, IState> {
25
+ private htmlId;
25
26
  constructor(props: ISelect);
26
- htmlId: string;
27
27
  handleChange(event: React.ChangeEvent<HTMLSelectElement>): void;
28
28
  render(): JSX.Element;
29
29
  }
@@ -39,8 +39,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Option = exports.Select = void 0;
41
41
  var React = __importStar(require("react"));
42
- var classnames_1 = __importDefault(require("classnames"));
42
+ // import classNames from 'classnames';
43
43
  var react_id_generator_1 = __importDefault(require("react-id-generator"));
44
+ var Form_1 = require("./Form");
44
45
  var Select = /** @class */ (function (_super) {
45
46
  __extends(Select, _super);
46
47
  function Select(props) {
@@ -59,31 +60,8 @@ var Select = /** @class */ (function (_super) {
59
60
  this.props.onChange(event.target.value);
60
61
  };
61
62
  Select.prototype.render = function () {
62
- var _a;
63
- var classes = (0, classnames_1.default)('sd-input sd-input--is-select', (_a = {
64
- 'sd-input--inline-label': this.props.inlineLabel,
65
- 'sd-input--required': this.props.required,
66
- 'sd-input--disabled': this.props.disabled,
67
- 'sd-input--full-width': this.props.fullWidth,
68
- 'sd-input--invalid': this.props.invalid || this.state.invalid,
69
- 'sd-input--medium': this.props.size === undefined
70
- },
71
- _a["sd-input--".concat(this.props.size)] = this.props.size || this.props.size !== undefined,
72
- _a['sd-input--boxed-style'] = this.props.boxedStyle,
73
- _a['sd-input--boxed-label'] = this.props.boxedLable,
74
- _a));
75
- var labelClasses = (0, classnames_1.default)('sd-input__label', {
76
- 'a11y-only': this.props.labelHidden,
77
- });
78
- return (React.createElement("div", { className: classes },
79
- React.createElement("label", { className: labelClasses, htmlFor: this.htmlId, tabIndex: this.props.tabindex === undefined ? undefined : -1 }, this.props.label),
80
- React.createElement("select", { className: 'sd-input__select', id: this.htmlId, value: this.state.value, "aria-describedby": this.htmlId, tabIndex: this.props.tabindex, onChange: this.handleChange, disabled: this.props.disabled }, this.props.children),
81
- React.createElement("div", { className: 'sd-input__message-box' },
82
- this.props.info && !this.props.invalid && !this.state.invalid ?
83
- React.createElement("div", { className: 'sd-input__hint' }, this.props.info) : null,
84
- this.props.invalid || this.state.invalid ?
85
- React.createElement("div", { className: 'sd-input__message' }, this.props.error)
86
- : null)));
63
+ return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, required: this.props.required, disabled: this.props.disabled, invalid: this.state.invalid, info: this.props.info, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, fullWidth: this.props.fullWidth, htmlId: this.htmlId, tabindex: this.props.tabindex },
64
+ React.createElement("select", { className: 'sd-input__select', id: this.htmlId, value: this.state.value, "aria-describedby": this.htmlId, tabIndex: this.props.tabindex, onChange: this.handleChange, disabled: this.props.disabled }, this.props.children)));
87
65
  };
88
66
  return Select;
89
67
  }(React.Component));
@@ -12,19 +12,29 @@ interface IProps<T> {
12
12
  noResultsFoundMessage: string;
13
13
  filterPlaceholder?: string;
14
14
  disabled?: boolean;
15
- required?: boolean;
16
15
  autoFocus?: boolean;
17
16
  autoOpen?: boolean;
18
17
  width?: 'min' | '100%';
19
18
  zIndex?: number;
20
19
  'data-test-id'?: string;
20
+ inlineLabel?: boolean;
21
+ required?: boolean;
22
+ fullWidth?: boolean;
23
+ invalid?: boolean;
24
+ labelHidden?: boolean;
25
+ tabindex?: number;
26
+ label?: string;
27
+ info?: string;
28
+ error?: string;
21
29
  }
22
30
  interface IState<T> {
23
31
  options: Array<T>;
24
32
  loading: boolean;
33
+ invalid: boolean;
25
34
  }
26
35
  export declare class SelectWithTemplate<T> extends React.Component<IProps<T>, IState<T>> {
27
36
  componentRef: Dropdown | null;
37
+ private htmlId;
28
38
  constructor(props: IProps<T>);
29
39
  componentDidMount(): void;
30
40
  render(): JSX.Element;
@@ -33,18 +33,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
33
  __setModuleDefault(result, mod);
34
34
  return result;
35
35
  };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
36
39
  Object.defineProperty(exports, "__esModule", { value: true });
37
40
  exports.SelectWithTemplate = void 0;
38
41
  var React = __importStar(require("react"));
39
42
  var dropdown_1 = require("@superdesk/primereact/dropdown");
43
+ // import classNames from 'classnames';
44
+ var react_id_generator_1 = __importDefault(require("react-id-generator"));
45
+ var Form_1 = require("./Form");
40
46
  var labelKey = 'label';
41
47
  var SelectWithTemplate = /** @class */ (function (_super) {
42
48
  __extends(SelectWithTemplate, _super);
43
49
  function SelectWithTemplate(props) {
44
50
  var _this = _super.call(this, props) || this;
51
+ _this.htmlId = (0, react_id_generator_1.default)();
45
52
  _this.state = {
46
53
  options: [],
47
54
  loading: false,
55
+ invalid: _this.props.invalid ? _this.props.invalid : false,
48
56
  };
49
57
  _this.componentRef = null;
50
58
  return _this;
@@ -84,16 +92,17 @@ var SelectWithTemplate = /** @class */ (function (_super) {
84
92
  // needs to be passed to prime react component
85
93
  // or it will not be displayed at all, even if returned by itemTemplate
86
94
  var fakePlaceholderWithNonBreakingSpace = ' ';
87
- return (React.createElement(dropdown_1.Dropdown, { value: valueInternal, options: optionsInternal, onChange: function (e) {
88
- onChange(e.value == null ? null : e.value.original);
89
- }, placeholder: fakePlaceholderWithNonBreakingSpace, filterPlaceholder: filterPlaceholder, filter: true, filterBy: labelKey, showClear: !required, emptyFilterMessage: emptyFilterMessage, valueTemplate: function (option) { return React.createElement(ItemTemplate, { option: option == null ? null : option.original }); }, itemTemplate: function (option) { return React.createElement(ItemTemplate, { option: option.original }); }, disabled: disabled, required: required, autoFocus: autoFocus, appendTo: document.body, loading: loading, onFilterInputChange: function (searchString) {
90
- _this.setState({ loading: true });
91
- getItems(searchString).then(function (_options) {
92
- _this.setState({ options: _options, loading: false });
93
- });
94
- }, zIndex: zIndex, style: width === '100%' ? { display: 'flex', width: '100%' } : {}, ref: function (componentRef) {
95
- _this.componentRef = componentRef;
96
- } }));
95
+ return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, required: this.props.required, disabled: this.props.disabled, invalid: this.state.invalid, info: this.props.info, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, fullWidth: this.props.fullWidth, htmlId: this.htmlId, tabindex: this.props.tabindex },
96
+ React.createElement(dropdown_1.Dropdown, { inputId: this.htmlId, ariaLabelledBy: this.htmlId + 'label', value: valueInternal, options: optionsInternal, onChange: function (e) {
97
+ onChange(e.value == null ? null : e.value.original);
98
+ }, placeholder: fakePlaceholderWithNonBreakingSpace, filterPlaceholder: filterPlaceholder, filter: true, filterBy: labelKey, showClear: !required, emptyFilterMessage: emptyFilterMessage, valueTemplate: function (option) { return React.createElement(ItemTemplate, { option: option == null ? null : option.original }); }, itemTemplate: function (option) { return React.createElement(ItemTemplate, { option: option.original }); }, disabled: disabled, required: required, autoFocus: autoFocus, appendTo: document.body, loading: loading, onFilterInputChange: function (searchString) {
99
+ _this.setState({ loading: true });
100
+ getItems(searchString).then(function (_options) {
101
+ _this.setState({ options: _options, loading: false });
102
+ });
103
+ }, zIndex: zIndex, style: width === '100%' ? { display: 'flex', width: '100%' } : {}, ref: function (componentRef) {
104
+ _this.componentRef = componentRef;
105
+ } })));
97
106
  };
98
107
  return SelectWithTemplate;
99
108
  }(React.Component));
@@ -2,10 +2,23 @@ import * as React from 'react';
2
2
  interface IProps {
3
3
  value: string;
4
4
  onChange(valueNext: string): void;
5
- required?: boolean;
6
5
  disabled?: boolean;
6
+ inlineLabel?: boolean;
7
+ required?: boolean;
8
+ fullWidth?: boolean;
9
+ invalid?: boolean;
10
+ labelHidden?: boolean;
11
+ tabindex?: number;
12
+ label?: string;
13
+ info?: string;
14
+ error?: string;
15
+ }
16
+ interface IState {
17
+ invalid: boolean;
7
18
  }
8
- export declare class TimePicker extends React.PureComponent<IProps> {
19
+ export declare class TimePicker extends React.PureComponent<IProps, IState> {
20
+ private htmlId;
21
+ constructor(props: IProps);
9
22
  render(): JSX.Element;
10
23
  }
11
24
  export {};
@@ -33,18 +33,29 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
33
  __setModuleDefault(result, mod);
34
34
  return result;
35
35
  };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
36
39
  Object.defineProperty(exports, "__esModule", { value: true });
37
40
  exports.TimePicker = void 0;
38
41
  var React = __importStar(require("react"));
42
+ // import classNames from 'classnames';
43
+ var react_id_generator_1 = __importDefault(require("react-id-generator"));
44
+ var Form_1 = require("./Form");
39
45
  var TimePicker = /** @class */ (function (_super) {
40
46
  __extends(TimePicker, _super);
41
- function TimePicker() {
42
- return _super !== null && _super.apply(this, arguments) || this;
47
+ function TimePicker(props) {
48
+ var _this = _super.call(this, props) || this;
49
+ _this.htmlId = (0, react_id_generator_1.default)();
50
+ _this.state = {
51
+ invalid: _this.props.invalid ? _this.props.invalid : false,
52
+ };
53
+ return _this;
43
54
  }
44
55
  TimePicker.prototype.render = function () {
45
56
  var _this = this;
46
- return (React.createElement("div", { className: "sd-input sd-input--no-label sd-input--no-margin", style: { display: 'inline-flex' } },
47
- React.createElement("input", { type: "time", className: "sd-input__input", value: this.props.value, required: this.props.required, disabled: this.props.disabled, onChange: function (event) {
57
+ return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, required: this.props.required, disabled: this.props.disabled, invalid: this.state.invalid, info: this.props.info, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, fullWidth: this.props.fullWidth, htmlId: this.htmlId, tabindex: this.props.tabindex },
58
+ React.createElement("input", { id: this.htmlId, "aria-labelledby": this.htmlId + 'label', type: "time", className: "sd-input__input", value: this.props.value, required: this.props.required, disabled: this.props.disabled, onChange: function (event) {
48
59
  _this.props.onChange(event.target.value);
49
60
  } })));
50
61
  };
@@ -0,0 +1,75 @@
1
+ import * as React from "react";
2
+ interface IState<T> {
3
+ value: Array<T>;
4
+ options: Array<ITreeNode<T>>;
5
+ firstBranchOptions: Array<any>;
6
+ openDropdown: boolean;
7
+ activeTree: Array<any>;
8
+ filterArr: Array<any>;
9
+ searchFieldValue: string;
10
+ buttonTree: Array<any>;
11
+ buttonValue: any;
12
+ buttonMouseEvent: boolean;
13
+ loading: boolean;
14
+ invalid: boolean;
15
+ }
16
+ interface IPropsBase<T> {
17
+ value?: Array<T>;
18
+ selectBranchWithChildren?: boolean;
19
+ readOnly?: boolean;
20
+ width?: string;
21
+ allowMultiple?: boolean;
22
+ loading?: boolean;
23
+ singleLevelSearch?: boolean;
24
+ placeholder?: string;
25
+ invalid?: boolean;
26
+ inlineLabel?: boolean;
27
+ labelHidden?: boolean;
28
+ tabindex?: number;
29
+ fullWidth?: boolean;
30
+ info?: string;
31
+ error?: string;
32
+ required?: boolean;
33
+ label?: string;
34
+ disabled?: boolean;
35
+ getLabel(item: T): string;
36
+ getId(item: T): string;
37
+ optionTemplate?(item: T): React.ComponentType<T> | JSX.Element;
38
+ valueTemplate?(item: T): React.ComponentType<T> | JSX.Element;
39
+ onChange(e: Array<T>): void;
40
+ }
41
+ interface IPropsSync<T> extends IPropsBase<T> {
42
+ kind: 'synchronous';
43
+ getOptions(): Array<ITreeNode<T>>;
44
+ }
45
+ interface IPropsAsync<T> extends IPropsBase<T> {
46
+ kind: 'asynchronous';
47
+ getOptions?(): Array<ITreeNode<T>>;
48
+ searchOptions(term: string, callback?: (options: Array<ITreeNode<T>>) => void): any;
49
+ }
50
+ declare type IProps<T> = IPropsSync<T> | IPropsAsync<T>;
51
+ export interface ITreeNode<T> {
52
+ value: T;
53
+ children?: Array<ITreeNode<T>>;
54
+ }
55
+ export declare class TreeSelect<T> extends React.Component<IProps<T>, IState<T>> {
56
+ private dropdownRef;
57
+ private openDropdownRef;
58
+ private htmlId;
59
+ constructor(props: IProps<T>);
60
+ removeClick(i: number): void;
61
+ handleMultiLevel(item: ITreeNode<T>): void;
62
+ handleButton(item: ITreeNode<T>): void;
63
+ handleValue(event: React.MouseEvent<HTMLLIElement, MouseEvent>, item: ITreeNode<T>): void;
64
+ handleBranchValue(event: React.MouseEvent<HTMLButtonElement, MouseEvent>, item: ITreeNode<T>): void;
65
+ handleTree(event: React.MouseEvent<HTMLLIElement, MouseEvent>, option: ITreeNode<T>): void;
66
+ backButton: () => false | undefined;
67
+ backButtonValue: () => void;
68
+ recursion(arr: Array<ITreeNode<T>>): void;
69
+ componentDidMount: () => void;
70
+ componentDidUpdate(prevProps: Readonly<IProps<T>>, prevState: Readonly<IState<T>>): void;
71
+ filteredItem(arr: Array<ITreeNode<T>>): JSX.Element[] | undefined;
72
+ banchButton(): JSX.Element;
73
+ render(): JSX.Element;
74
+ }
75
+ export {};