superdesk-ui-framework 4.0.26 → 4.0.28

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 (40) hide show
  1. package/app-typescript/components/Button.tsx +2 -0
  2. package/app-typescript/components/FormLabel.tsx +7 -1
  3. package/app-typescript/components/Label.tsx +2 -13
  4. package/app-typescript/components/RadioButtonGroup.tsx +6 -5
  5. package/app-typescript/components/Select.tsx +2 -0
  6. package/app-typescript/components/SelectPreview.tsx +1 -1
  7. package/app-typescript/components/ShowPopup.tsx +28 -19
  8. package/app-typescript/components/TreeMenu.tsx +16 -0
  9. package/app-typescript/components/TreeSelect/TreeSelect.tsx +4 -21
  10. package/app-typescript/components/TreeSelect/TreeSelectItem.tsx +1 -1
  11. package/app-typescript/components/TreeSelect/TreeSelectPill.tsx +1 -1
  12. package/app-typescript/helpers.tsx +13 -0
  13. package/app-typescript/index.ts +1 -0
  14. package/dist/examples.bundle.js +1426 -1406
  15. package/dist/playgrounds/react-playgrounds/TestGround.tsx +1 -1
  16. package/dist/superdesk-ui.bundle.js +1364 -1345
  17. package/dist/vendor.bundle.js +7 -7
  18. package/examples/pages/playgrounds/react-playgrounds/TestGround.tsx +1 -1
  19. package/package.json +1 -1
  20. package/react/components/Button.d.ts +1 -0
  21. package/react/components/Button.js +1 -1
  22. package/react/components/FormLabel.d.ts +1 -0
  23. package/react/components/FormLabel.js +1 -1
  24. package/react/components/Label.d.ts +0 -1
  25. package/react/components/Label.js +3 -15
  26. package/react/components/RadioButtonGroup.d.ts +3 -2
  27. package/react/components/RadioButtonGroup.js +3 -3
  28. package/react/components/Select.d.ts +1 -0
  29. package/react/components/Select.js +1 -1
  30. package/react/components/SelectPreview.js +3 -3
  31. package/react/components/ShowPopup.d.ts +1 -1
  32. package/react/components/ShowPopup.js +7 -7
  33. package/react/components/TreeMenu.js +25 -0
  34. package/react/components/TreeSelect/TreeSelect.js +5 -14
  35. package/react/components/TreeSelect/TreeSelectItem.js +2 -2
  36. package/react/components/TreeSelect/TreeSelectPill.js +3 -3
  37. package/react/helpers.d.ts +1 -0
  38. package/react/helpers.js +14 -1
  39. package/react/index.d.ts +1 -0
  40. package/react/index.js +3 -1
@@ -17296,11 +17296,11 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
17296
17296
  }
17297
17297
  }.call(this));
17298
17298
 
17299
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(41), __webpack_require__(58)(module)))
17299
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(42), __webpack_require__(59)(module)))
17300
17300
 
17301
17301
  /***/ }),
17302
17302
 
17303
- /***/ 41:
17303
+ /***/ 42:
17304
17304
  /***/ (function(module, exports) {
17305
17305
 
17306
17306
  var g;
@@ -17328,7 +17328,7 @@ module.exports = g;
17328
17328
 
17329
17329
  /***/ }),
17330
17330
 
17331
- /***/ 58:
17331
+ /***/ 59:
17332
17332
  /***/ (function(module, exports) {
17333
17333
 
17334
17334
  module.exports = function(module) {
@@ -17357,7 +17357,7 @@ module.exports = function(module) {
17357
17357
 
17358
17358
  /***/ }),
17359
17359
 
17360
- /***/ 74:
17360
+ /***/ 75:
17361
17361
  /***/ (function(module, exports, __webpack_require__) {
17362
17362
 
17363
17363
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -28254,7 +28254,7 @@ return jQuery;
28254
28254
 
28255
28255
  __webpack_require__(18);
28256
28256
 
28257
- __webpack_require__(74);
28257
+ __webpack_require__(75);
28258
28258
 
28259
28259
  __webpack_require__(804);
28260
28260
 
@@ -28292,7 +28292,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
28292
28292
  if ( true ) {
28293
28293
 
28294
28294
  // AMD. Register as an anonymous module.
28295
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(74), __webpack_require__(805) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
28295
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(75), __webpack_require__(805) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
28296
28296
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
28297
28297
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
28298
28298
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -29039,7 +29039,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
29039
29039
  if ( true ) {
29040
29040
 
29041
29041
  // AMD. Register as an anonymous module.
29042
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(74) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
29042
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(75) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
29043
29043
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
29044
29044
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
29045
29045
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -2031,7 +2031,7 @@ export class TestGround extends React.Component<IProps, IState> {
2031
2031
 
2032
2032
  <div className="sd-check__group-new sd-check-button__group--left">
2033
2033
  <RadioButtonGroup
2034
- value={this.state.value3}
2034
+ value={this.state.value3 ?? ''}
2035
2035
  options={[
2036
2036
  {label: "RadioButton with an icon", value: "somevalue4", icon: "th-list"},
2037
2037
  {label: "RadioButton with no visible text, only an icon", value: "somevalue5", icon: "th", labelHidden: true},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superdesk-ui-framework",
3
- "version": "4.0.26",
3
+ "version": "4.0.28",
4
4
  "license": "AGPL-3.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,6 +17,7 @@ interface IPropsButton {
17
17
  icon?: string;
18
18
  disabled?: boolean;
19
19
  iconOnly?: boolean;
20
+ noMargin?: boolean;
20
21
  'data-test-id'?: string;
21
22
  }
22
23
  export declare class Button extends React.PureComponent<IPropsButton> {
@@ -67,7 +67,7 @@ var Button = /** @class */ (function (_super) {
67
67
  _a['sd-flex-justify-start'] = this.props.textAlign === 'start',
68
68
  _a['sd-flex-justify-end'] = this.props.textAlign === 'end',
69
69
  _a));
70
- return (React.createElement("button", { id: this.props.id, className: classes, tabIndex: 0, disabled: this.props.disabled || this.props.isLoading, "data-loading": this.props.isLoading, onClick: this.props.disabled ? function () { return false; } : function (event) { return _this.props.onClick(event); }, "aria-label": this.props.iconOnly ? this.props.text : '', "data-test-id": this.props['data-test-id'], title: this.props.tooltip },
70
+ return (React.createElement("button", { id: this.props.id, className: classes, tabIndex: 0, disabled: this.props.disabled || this.props.isLoading, "data-loading": this.props.isLoading, onClick: this.props.disabled ? function () { return false; } : function (event) { return _this.props.onClick(event); }, "aria-label": this.props.iconOnly ? this.props.text : '', "data-test-id": this.props['data-test-id'], title: this.props.tooltip, style: this.props.noMargin ? { margin: 0 } : undefined },
71
71
  this.props.isLoading ? React.createElement(Spinner_1.Spinner, { size: "mini" }) : null,
72
72
  this.props.icon && !this.props.isLoading ? React.createElement(Icon_1.Icon, { ariaHidden: true, name: this.props.icon }) : null,
73
73
  this.props.iconOnly ? null : this.props.text));
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  interface IProps {
3
3
  text: string;
4
4
  style?: 'normal' | 'light';
5
+ noMinHeight?: boolean;
5
6
  }
6
7
  export declare class FormLabel extends React.PureComponent<IProps> {
7
8
  render(): JSX.Element;
@@ -53,7 +53,7 @@ var FormLabel = /** @class */ (function (_super) {
53
53
  var classes = (0, classnames_1.default)('form-label form-label--block', {
54
54
  'form-label--light': this.props.style === 'light',
55
55
  });
56
- return (React.createElement("label", { className: classes }, this.props.text));
56
+ return (React.createElement("label", { className: classes, style: this.props.noMinHeight === true ? { minHeight: 'auto' } : undefined }, this.props.text));
57
57
  };
58
58
  return FormLabel;
59
59
  }(React.PureComponent));
@@ -13,5 +13,4 @@ interface IProps {
13
13
  export declare class Label extends React.PureComponent<IProps> {
14
14
  render(): JSX.Element;
15
15
  }
16
- export declare function getTextColor(backgroundColor: string): 'black' | 'white' | undefined;
17
16
  export {};
@@ -41,9 +41,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
41
41
  return (mod && mod.__esModule) ? mod : { "default": mod };
42
42
  };
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.getTextColor = exports.Label = void 0;
44
+ exports.Label = void 0;
45
45
  var React = __importStar(require("react"));
46
46
  var classnames_1 = __importDefault(require("classnames"));
47
+ var helpers_1 = require("../helpers");
47
48
  var Label = /** @class */ (function (_super) {
48
49
  __extends(Label, _super);
49
50
  function Label() {
@@ -79,7 +80,7 @@ var Label = /** @class */ (function (_super) {
79
80
  }
80
81
  else {
81
82
  return (React.createElement("span", { className: classes, style: this.props.hexColor
82
- ? { backgroundColor: this.props.hexColor, color: getTextColor(this.props.hexColor) }
83
+ ? { backgroundColor: this.props.hexColor, color: (0, helpers_1.getTextColor)(this.props.hexColor) }
83
84
  : undefined }, this.props.text));
84
85
  }
85
86
  }
@@ -87,16 +88,3 @@ var Label = /** @class */ (function (_super) {
87
88
  return Label;
88
89
  }(React.PureComponent));
89
90
  exports.Label = Label;
90
- function getTextColor(backgroundColor) {
91
- if (backgroundColor) {
92
- var r = parseInt(backgroundColor.substr(1, 2), 16);
93
- var g = parseInt(backgroundColor.substr(3, 2), 16);
94
- var b = parseInt(backgroundColor.substr(5, 2), 16);
95
- var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
96
- return (yiq >= 128) ? 'black' : 'white';
97
- }
98
- else {
99
- return;
100
- }
101
- }
102
- exports.getTextColor = getTextColor;
@@ -1,6 +1,8 @@
1
1
  import * as React from 'react';
2
2
  interface IProps {
3
- value?: string;
3
+ value: string;
4
+ onChange(nextValue: string): void;
5
+ disabled?: boolean;
4
6
  group?: {
5
7
  orientation?: 'horizontal' | 'vertical';
6
8
  grid?: boolean;
@@ -18,7 +20,6 @@ interface IProps {
18
20
  }>;
19
21
  required?: boolean;
20
22
  tabindex?: number;
21
- onChange(nextValue: string): void;
22
23
  'data-test-id'?: string;
23
24
  }
24
25
  export declare class RadioButtonGroup extends React.Component<IProps> {
@@ -55,7 +55,7 @@ var RadioButtonGroup = /** @class */ (function (_super) {
55
55
  return _this;
56
56
  }
57
57
  RadioButtonGroup.prototype.handleChange = function (item) {
58
- if (!item.disabled) {
58
+ if (this.props.disabled !== true && item.disabled !== true) {
59
59
  this.props.onChange(item.value);
60
60
  }
61
61
  };
@@ -79,7 +79,7 @@ var RadioButtonGroup = /** @class */ (function (_super) {
79
79
  return (React.createElement(React.Fragment, null,
80
80
  !((_j = this.props.group) === null || _j === void 0 ? void 0 : _j.groupLabel) ?
81
81
  React.createElement("div", { role: "radiogroup", className: classes, "aria-labelledby": (_k = this.props.group) === null || _k === void 0 ? void 0 : _k.groupLabelledBy, "data-test-id": this.props['data-test-id'], "data-test-value": selectedOption == null ? undefined : selectedOption.label }, this.props.options.map(function (item, index) { return (React.createElement("span", { className: "sd-check-button sd-check-button--native", key: index, tabIndex: _this.props.tabindex === undefined ? undefined : -1 },
82
- React.createElement("input", { type: "radio", className: "sd-check-button__input", id: _this.htmlId + index, tabIndex: _this.props.tabindex, name: _this.htmlId, onChange: function () { return _this.handleChange(item); }, disabled: item.disabled, required: _this.props.required, checked: item.value === _this.props.value }),
82
+ React.createElement("input", { type: "radio", className: "sd-check-button__input", id: _this.htmlId + index, tabIndex: _this.props.tabindex, name: _this.htmlId, onChange: function () { return _this.handleChange(item); }, disabled: _this.props.disabled || item.disabled, required: _this.props.required, checked: item.value === _this.props.value }),
83
83
  React.createElement("label", { className: "sd-check-button__text-label", htmlFor: _this.htmlId + index, "aria-label": item.labelHidden ? item.label : undefined, "data-test-id": "item" },
84
84
  item.icon ? React.createElement("i", { className: "icon-".concat(item.icon), "aria-hidden": "true" }) : null,
85
85
  !item.labelHidden || !item.icon ?
@@ -89,7 +89,7 @@ var RadioButtonGroup = /** @class */ (function (_super) {
89
89
  React.createElement("div", { className: 'sd-check-button__group-wrapper', "data-test-id": this.props['data-test-id'], "data-test-value": selectedOption == null ? undefined : selectedOption.label },
90
90
  React.createElement(FormLabel_1.FormLabel, { forId: this.htmlId + 'group', text: this.props.group.groupLabel }),
91
91
  React.createElement("div", { role: "radiogroup", id: this.htmlId + 'group', className: classes }, this.props.options.map(function (item, index) { return (React.createElement("span", { className: "sd-check-button sd-check-button--native", key: index, tabIndex: -1 },
92
- React.createElement("input", { type: "radio", className: "sd-check-button__input", id: _this.htmlId + index, tabIndex: 0, name: _this.htmlId, onChange: function () { return _this.handleChange(item); }, disabled: item.disabled, required: _this.props.required, checked: item.value === _this.props.value }),
92
+ React.createElement("input", { type: "radio", className: "sd-check-button__input", id: _this.htmlId + index, tabIndex: 0, name: _this.htmlId, onChange: function () { return _this.handleChange(item); }, disabled: _this.props.disabled || item.disabled, required: _this.props.required, checked: item.value === _this.props.value }),
93
93
  React.createElement("label", { className: "sd-check-button__text-label", htmlFor: _this.htmlId + index, "aria-label": item.labelHidden ? item.label : undefined },
94
94
  item.icon ? React.createElement("i", { className: "icon-".concat(item.icon), "aria-hidden": "true" }) : null,
95
95
  !item.labelHidden || !item.icon ?
@@ -3,6 +3,7 @@ import { IInputWrapper } from './Form/InputWrapper';
3
3
  interface ISelect extends IInputWrapper {
4
4
  value?: string;
5
5
  onChange(newValue: string): void;
6
+ 'data-test-id'?: string;
6
7
  }
7
8
  declare class Select extends React.Component<ISelect> {
8
9
  private htmlId;
@@ -63,7 +63,7 @@ var Select = /** @class */ (function (_super) {
63
63
  }
64
64
  return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, invalid: this.props.error != null, required: this.props.required, disabled: this.props.disabled, readonly: this.props.readonly, info: this.props.info, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, fullWidth: this.props.fullWidth, htmlId: this.htmlId, tabindex: this.props.tabindex },
65
65
  React.createElement("span", { className: 'sd-input__select-caret-wrapper' },
66
- React.createElement("select", { className: 'sd-input__select', id: this.htmlId, value: this.props.value, "aria-describedby": this.htmlId, tabIndex: this.props.tabindex, onChange: this.handleChange, disabled: this.props.disabled || this.props.readonly }, this.props.children))));
66
+ React.createElement("select", { className: 'sd-input__select', id: this.htmlId, value: this.props.value, "aria-describedby": this.htmlId, tabIndex: this.props.tabindex, onChange: this.handleChange, disabled: this.props.disabled || this.props.readonly, "data-test-id": this.props['data-test-id'] }, this.props.children))));
67
67
  };
68
68
  return Select;
69
69
  }(React.Component));
@@ -44,7 +44,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
44
44
  exports.SelectPreview = void 0;
45
45
  var classnames_1 = __importDefault(require("classnames"));
46
46
  var React = __importStar(require("react"));
47
- var Label_1 = require("./Label");
47
+ var helpers_1 = require("../helpers");
48
48
  var SelectPreview = /** @class */ (function (_super) {
49
49
  __extends(SelectPreview, _super);
50
50
  function SelectPreview() {
@@ -85,12 +85,12 @@ var SelectPreview = /** @class */ (function (_super) {
85
85
  })() },
86
86
  React.createElement("span", { className: "tags-input__helper-box", style: (function () {
87
87
  if (backgroundColor != null) {
88
- return { color: (0, Label_1.getTextColor)(backgroundColor) };
88
+ return { color: (0, helpers_1.getTextColor)(backgroundColor) };
89
89
  }
90
90
  else {
91
91
  if (_this.props.kind.mode === 'multi-select'
92
92
  && _this.props.kind.getBackgroundColor != null) {
93
- return { color: (0, Label_1.getTextColor)(_this.props.kind.getBackgroundColor(item)) };
93
+ return { color: (0, helpers_1.getTextColor)(_this.props.kind.getBackgroundColor(item)) };
94
94
  }
95
95
  else {
96
96
  return undefined;
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { Placement } from '@popperjs/core';
3
3
  interface IPropsPopupPositioner {
4
- referenceElement: HTMLElement;
4
+ getReferenceElement(): HTMLElement;
5
5
  placement: Placement;
6
6
  onClose(): void;
7
7
  closeOnHoverEnd?: boolean;
@@ -64,7 +64,7 @@ var PopupPositioner = /** @class */ (function (_super) {
64
64
  if (this.wrapperEl == null) {
65
65
  return;
66
66
  }
67
- if (this.props.referenceElement.contains(event.target) !== true
67
+ if (this.props.getReferenceElement().contains(event.target) !== true
68
68
  && this.wrapperEl.contains(event.target) !== true) {
69
69
  this.props.onClose();
70
70
  }
@@ -90,7 +90,7 @@ var PopupPositioner = /** @class */ (function (_super) {
90
90
  window.addEventListener('click', this.closeOnClick, { capture: true });
91
91
  window.addEventListener('scroll', this.closeOnScroll, true);
92
92
  if (this.props.closeOnHoverEnd && this.wrapperEl != null) {
93
- this.props.referenceElement.addEventListener('mouseleave', this.closeOnMouseLeave);
93
+ this.props.getReferenceElement().addEventListener('mouseleave', this.closeOnMouseLeave);
94
94
  this.wrapperEl.addEventListener('mouseleave', this.closeOnMouseLeave);
95
95
  }
96
96
  var applyMaxSize = {
@@ -112,7 +112,7 @@ var PopupPositioner = /** @class */ (function (_super) {
112
112
  */
113
113
  setTimeout(function () {
114
114
  if (_this.wrapperEl != null) {
115
- _this.popper = (0, core_1.createPopper)(_this.props.referenceElement, _this.wrapperEl, {
115
+ _this.popper = (0, core_1.createPopper)(_this.props.getReferenceElement(), _this.wrapperEl, {
116
116
  placement: _this.props.placement,
117
117
  modifiers: [
118
118
  popper_max_size_modifier_1.default,
@@ -128,21 +128,21 @@ var PopupPositioner = /** @class */ (function (_super) {
128
128
  window.removeEventListener('click', this.closeOnClick);
129
129
  window.removeEventListener('scroll', this.closeOnScroll, true);
130
130
  if (this.props.closeOnHoverEnd && this.wrapperEl != null) {
131
- this.props.referenceElement.removeEventListener('mouseleave', this.closeOnMouseLeave);
131
+ this.props.getReferenceElement().removeEventListener('mouseleave', this.closeOnMouseLeave);
132
132
  this.wrapperEl.removeEventListener('mouseleave', this.closeOnMouseLeave);
133
133
  }
134
134
  (_b = (_a = this.popper) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a);
135
135
  };
136
136
  PopupPositioner.prototype.render = function () {
137
137
  var _this = this;
138
- return (React.createElement("div", { ref: function (el) {
138
+ return (React.createElement(React.Fragment, null, react_dom_1.default.createPortal((React.createElement("div", { ref: function (el) {
139
139
  _this.wrapperEl = el;
140
140
  }, style: {
141
141
  position: 'absolute',
142
142
  left: '-100vw',
143
143
  display: 'flex',
144
144
  zIndex: this.zIndex,
145
- } }, this.props.children));
145
+ } }, this.props.children)), document.body)));
146
146
  };
147
147
  return PopupPositioner;
148
148
  }(React.PureComponent));
@@ -158,7 +158,7 @@ function showPopup(referenceElement, placement, Component, closeOnHoverEnd, onCl
158
158
  el.remove();
159
159
  onClose === null || onClose === void 0 ? void 0 : onClose();
160
160
  };
161
- react_dom_1.default.render((React.createElement(PopupPositioner, { referenceElement: referenceElement, placement: placement, onClose: closeFn, closeOnHoverEnd: closeOnHoverEnd || false },
161
+ react_dom_1.default.render((React.createElement(PopupPositioner, { getReferenceElement: function () { return referenceElement; }, placement: placement, onClose: closeFn, closeOnHoverEnd: closeOnHoverEnd || false },
162
162
  React.createElement(Component, { closePopup: closeFn }))), el);
163
163
  return { close: closeFn };
164
164
  }
@@ -14,6 +14,17 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
17
28
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
29
  if (k2 === undefined) k2 = k;
19
30
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -177,6 +188,20 @@ var TreeMenu = /** @class */ (function (_super) {
177
188
  if (this.openDropdownRef.current && this.dropdownRef.current) {
178
189
  this.popperInstance = (0, core_1.createPopper)(this.openDropdownRef.current, this.dropdownRef.current, {
179
190
  placement: 'bottom-start',
191
+ modifiers: [
192
+ {
193
+ name: 'flip',
194
+ enabled: true,
195
+ },
196
+ ],
197
+ onFirstUpdate: function (state) {
198
+ var _a;
199
+ (_a = _this.popperInstance) === null || _a === void 0 ? void 0 : _a.setOptions({
200
+ placement: state.placement,
201
+ modifiers: _this.popperInstance.state.options.modifiers.map(function (modifier) { return (modifier.name === 'flip'
202
+ ? __assign(__assign({}, modifier), { enabled: false }) : modifier); }),
203
+ });
204
+ },
180
205
  });
181
206
  }
182
207
  (_a = this.inputRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('keydown', function (e) {
@@ -70,7 +70,7 @@ var debounce_1 = __importDefault(require("lodash/debounce"));
70
70
  var Form_1 = require("../Form");
71
71
  var core_1 = require("@popperjs/core");
72
72
  var lodash_1 = require("lodash");
73
- var Label_1 = require("../Label");
73
+ var helpers_1 = require("../../helpers");
74
74
  var SelectPreview_1 = require("../SelectPreview");
75
75
  var TreeSelectPill_1 = require("./TreeSelectPill");
76
76
  var TreeSelectItem_1 = require("./TreeSelectItem");
@@ -78,12 +78,7 @@ var KeyboardNavigation_1 = require("./KeyboardNavigation");
78
78
  var WithPortal_1 = require("../WithPortal");
79
79
  var react_beautiful_dnd_1 = require("react-beautiful-dnd");
80
80
  var zIndex_1 = require("../../zIndex");
81
- var reorder = function (list, startIndex, endIndex) {
82
- var result = Array.from(list);
83
- var removed = result.splice(startIndex, 1)[0];
84
- result.splice(endIndex, 0, removed);
85
- return result;
86
- };
81
+ var common_1 = require("@superdesk/common");
87
82
  var TreeSelect = /** @class */ (function (_super) {
88
83
  __extends(TreeSelect, _super);
89
84
  function TreeSelect(props) {
@@ -250,12 +245,9 @@ var TreeSelect = /** @class */ (function (_super) {
250
245
  }
251
246
  };
252
247
  TreeSelect.prototype.removeClick = function (i) {
253
- var newTags = this.state.value;
254
- newTags === null || newTags === void 0 ? void 0 : newTags.splice(i, 1);
255
248
  this.setState({
256
- value: newTags,
249
+ value: this.state.value.filter(function (_item, index) { return index !== i; }),
257
250
  });
258
- this.props.onChange(this.state.value);
259
251
  };
260
252
  TreeSelect.prototype.handleMultiLevel = function (item) {
261
253
  if (item.children) {
@@ -531,9 +523,8 @@ var TreeSelect = /** @class */ (function (_super) {
531
523
  if (!result.destination) {
532
524
  return;
533
525
  }
534
- var value = reorder(this.state.value, result.source.index, result.destination.index);
535
526
  this.setState({
536
- value: value,
527
+ value: (0, common_1.arrayMove)(this.state.value, result.source.index, result.destination.index),
537
528
  });
538
529
  };
539
530
  TreeSelect.prototype.render = function () {
@@ -622,7 +613,7 @@ var TreeSelect = /** @class */ (function (_super) {
622
613
  && React.createElement("div", { className: "item-border item-border-selected", style: borderColor
623
614
  ? { backgroundColor: borderColor }
624
615
  : { backgroundColor: _this.props.getBorderColor(item) } }),
625
- React.createElement("span", { className: "tags-input__helper-box", style: { color: backgroundColor && (0, Label_1.getTextColor)(backgroundColor) } },
616
+ React.createElement("span", { className: "tags-input__helper-box", style: { color: backgroundColor && (0, helpers_1.getTextColor)(backgroundColor) } },
626
617
  React.createElement("span", { className: backgroundColor && "tags-input__tag-item", style: { backgroundColor: backgroundColor, margin: 0 }, "data-test-id": "item" }, children),
627
618
  (_this.props.readOnly !== true && _this.props.required !== true) && (React.createElement("span", { className: "tags-input__remove-button", "data-test-id": "clear-value" },
628
619
  React.createElement(Icon_1.Icon, { name: 'remove-sign' }))))));
@@ -41,7 +41,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
41
41
  exports.TreeSelectItem = exports.getPrefixedItemId = void 0;
42
42
  var React = __importStar(require("react"));
43
43
  var Icon_1 = require("../Icon");
44
- var Label_1 = require("../Label");
44
+ var helpers_1 = require("../../helpers");
45
45
  function getPrefixedItemId(id) {
46
46
  return id + '-focus';
47
47
  }
@@ -82,7 +82,7 @@ var TreeSelectItem = /** @class */ (function (_super) {
82
82
  + (this.props.selectedItem ? ' suggestion-item--selected' : ''), style: (this.props.getBackgroundColor && this.props.option.value)
83
83
  ? {
84
84
  backgroundColor: this.props.getBackgroundColor(this.props.option.value),
85
- color: (0, Label_1.getTextColor)(this.props.getBackgroundColor(this.props.option.value)),
85
+ color: (0, helpers_1.getTextColor)(this.props.getBackgroundColor(this.props.option.value)),
86
86
  }
87
87
  : undefined, "aria-label": ariaLabel }, this.props.optionTemplate
88
88
  ? this.props.optionTemplate(this.props.option.value)
@@ -46,7 +46,7 @@ var classnames_1 = __importDefault(require("classnames"));
46
46
  var React = __importStar(require("react"));
47
47
  var DragHandle_1 = require("../DragHandle");
48
48
  var Icon_1 = require("../Icon");
49
- var Label_1 = require("../Label");
49
+ var helpers_1 = require("../../helpers");
50
50
  var TreeSelectPill = /** @class */ (function (_super) {
51
51
  __extends(TreeSelectPill, _super);
52
52
  function TreeSelectPill() {
@@ -65,9 +65,9 @@ var TreeSelectPill = /** @class */ (function (_super) {
65
65
  this.props.draggable && (React.createElement(DragHandle_1.DragHandle, { blank: true, dotsInRow: '3', dotRows: '4' })),
66
66
  React.createElement("span", { className: "tags-input__helper-box", style: {
67
67
  color: this.props.backgroundColor
68
- ? (0, Label_1.getTextColor)(this.props.backgroundColor)
68
+ ? (0, helpers_1.getTextColor)(this.props.backgroundColor)
69
69
  : this.props.getBackgroundColor
70
- && (0, Label_1.getTextColor)(this.props.getBackgroundColor(this.props.item)),
70
+ && (0, helpers_1.getTextColor)(this.props.getBackgroundColor(this.props.item)),
71
71
  } },
72
72
  this.props.children,
73
73
  !this.props.readOnly
@@ -1,2 +1,3 @@
1
1
  export declare function assertNever(x: never): never;
2
2
  export declare function nameof<T>(name: keyof T): string;
3
+ export declare function getTextColor(backgroundColor: string): 'black' | 'white' | undefined;
package/react/helpers.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nameof = exports.assertNever = void 0;
3
+ exports.getTextColor = exports.nameof = exports.assertNever = void 0;
4
4
  function assertNever(x) {
5
5
  throw new Error('Unexpected object: ' + x);
6
6
  }
@@ -9,3 +9,16 @@ function nameof(name) {
9
9
  return name.toString();
10
10
  }
11
11
  exports.nameof = nameof;
12
+ function getTextColor(backgroundColor) {
13
+ if (backgroundColor) {
14
+ var r = parseInt(backgroundColor.substr(1, 2), 16);
15
+ var g = parseInt(backgroundColor.substr(3, 2), 16);
16
+ var b = parseInt(backgroundColor.substr(5, 2), 16);
17
+ var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
18
+ return (yiq >= 128) ? 'black' : 'white';
19
+ }
20
+ else {
21
+ return;
22
+ }
23
+ }
24
+ exports.getTextColor = getTextColor;
package/react/index.d.ts CHANGED
@@ -99,5 +99,6 @@ export { ResizeObserverComponent } from './components/ResizeObserverComponent';
99
99
  export { DragHandleDots } from './components/DragHandleDots';
100
100
  export { DragHandle } from './components/DragHandle';
101
101
  export { CalendarWeekDayItem } from './components/Lists/CalendarWeekDayItem';
102
+ export { getTextColor } from './helpers';
102
103
  export declare const ToggleBoxNext: any;
103
104
  export declare const reactToAngular1: any;
package/react/index.js CHANGED
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.Icon = exports.Prop = exports.PropsList = exports.StrechBar = exports.SlidingToolbar = exports.SubNavDivider = exports.SubNav = exports.LeftMenu = exports.TabList = exports.Tab = exports.NavButton = exports.CheckButtonGroup = exports.CheckGroup = exports.CheckboxButton = exports.RadioButtonGroup = exports.Checkbox = exports.RadioGroup = exports.Loader = exports.ButtonGroup = exports.SwitchGroup = exports.Switch = exports.FormLabel = exports.TimePickerV2 = exports.TimePicker = exports.DatePickerISO = exports.DateTimePicker = exports.DatePicker = exports.getDurationString = exports.DurationInput = exports.Tooltip = exports.IconLabel = exports.IconButton = exports.Rotate = exports.AvatarPlaceholder = exports.Avatar = exports.AvatarGroup = exports.AvatarContentImage = exports.AvatarContentText = exports.AvatarWrapper = exports.Alert = exports.Badge = exports.Label = exports.Popover = exports.WithPagination = exports.SelectWithTemplate = exports.Option = exports.Select = exports.Input = exports.Button = exports.HelloWorld = void 0;
20
20
  exports.Text = exports.LoadingOverlay = exports.Spinner = exports.ListItemLoader = exports.Skeleton = exports.IllustrationButton = exports.SvgIconIllustration = exports.WithSizeObserver = exports.SearchBar = exports.CreateButton = exports.DropZone = exports.ThemeSelector = exports.IconPicker = exports.SelectGrid = exports.ToggleBox = exports.Menu = exports.toasted = exports.GridItemCheckWrapper = exports.GridItemTopActions = exports.GridItemFooterActions = exports.GridItemFooterBlock = exports.GridItemSlug = exports.GridItemText = exports.GridItemTitle = exports.GridItemTime = exports.GridItemContentBlock = exports.GridItemFooter = exports.GridItemMedia = exports.GridItemContent = exports.GridItem = exports.GridList = exports.Modal = exports.Carousel = exports.DonutChart = exports.Autocomplete = exports.EmptyState = exports.Tabs = exports.TabContent = exports.TabPanel = exports.TabLabel = exports.TagInput = exports.Tag = exports.Dropdown = exports.DropdownDivider = exports.DropdownLabel = exports.DropdownItem = exports.DropdownFirst = exports.HeadingText = exports.ContentDivider = exports.Divider = void 0;
21
- exports.CalendarWeekDayItem = exports.DragHandle = exports.DragHandleDots = exports.ResizeObserverComponent = exports.SpacerBlock = exports.Spacer = exports.showPopup = exports.PopupPositioner = exports.WithPopover = exports.ResizablePanels = exports.MultiSelect = exports.ContentListItem = exports.TableListItem = exports.TableList = exports.TreeMenu = exports.TreeSelect = exports.BottomNav = exports.Heading = exports.Time = void 0;
21
+ exports.getTextColor = exports.CalendarWeekDayItem = exports.DragHandle = exports.DragHandleDots = exports.ResizeObserverComponent = exports.SpacerBlock = exports.Spacer = exports.showPopup = exports.PopupPositioner = exports.WithPopover = exports.ResizablePanels = exports.MultiSelect = exports.ContentListItem = exports.TableListItem = exports.TableList = exports.TreeMenu = exports.TreeSelect = exports.BottomNav = exports.Heading = exports.Time = void 0;
22
22
  var HelloWorld_1 = require("./components/HelloWorld");
23
23
  Object.defineProperty(exports, "HelloWorld", { enumerable: true, get: function () { return HelloWorld_1.HelloWorld; } });
24
24
  var Button_1 = require("./components/Button");
@@ -238,3 +238,5 @@ var DragHandle_1 = require("./components/DragHandle");
238
238
  Object.defineProperty(exports, "DragHandle", { enumerable: true, get: function () { return DragHandle_1.DragHandle; } });
239
239
  var CalendarWeekDayItem_1 = require("./components/Lists/CalendarWeekDayItem");
240
240
  Object.defineProperty(exports, "CalendarWeekDayItem", { enumerable: true, get: function () { return CalendarWeekDayItem_1.CalendarWeekDayItem; } });
241
+ var helpers_1 = require("./helpers");
242
+ Object.defineProperty(exports, "getTextColor", { enumerable: true, get: function () { return helpers_1.getTextColor; } });