@festo-ui/react 7.3.0-dev.464 → 7.3.0-dev.468

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 (54) hide show
  1. package/index.css +1 -1
  2. package/lib/components/icons/close-small.d.ts +7 -0
  3. package/lib/components/icons/close-small.js +70 -0
  4. package/lib/forms/checkbox/Checkbox.d.ts +1 -1
  5. package/lib/forms/select/Select.d.ts +15 -9
  6. package/lib/forms/select/Select.js +68 -253
  7. package/lib/forms/select/internal/HiddenInput.d.ts +9 -0
  8. package/lib/forms/select/internal/HiddenInput.js +26 -0
  9. package/lib/forms/select/internal/ListItem.d.ts +18 -0
  10. package/lib/forms/select/internal/ListItem.js +78 -0
  11. package/lib/forms/select/internal/SelectButton.d.ts +13 -0
  12. package/lib/forms/select/internal/SelectButton.js +57 -0
  13. package/lib/forms/select/internal/SelectButtonContent.d.ts +8 -0
  14. package/lib/forms/select/internal/SelectButtonContent.js +39 -0
  15. package/lib/forms/select/internal/SelectCheckbox.d.ts +5 -0
  16. package/lib/forms/select/internal/SelectCheckbox.js +20 -0
  17. package/lib/forms/select/internal/SelectLabel.d.ts +8 -0
  18. package/lib/forms/select/internal/SelectLabel.js +16 -0
  19. package/lib/forms/select/internal/SelectOptionsContainer.d.ts +17 -0
  20. package/lib/forms/select/internal/SelectOptionsContainer.js +104 -0
  21. package/lib/forms/select/internal/SelectScrollContainer.d.ts +9 -0
  22. package/lib/forms/select/internal/SelectScrollContainer.js +22 -0
  23. package/lib/forms/select/internal/SelectWrapper.d.ts +6 -0
  24. package/lib/forms/select/internal/SelectWrapper.js +20 -0
  25. package/lib/forms/select/internal/index.d.ts +6 -0
  26. package/lib/forms/select/internal/index.js +6 -0
  27. package/lib/forms/select/internal/utils.d.ts +7 -0
  28. package/lib/forms/select/internal/utils.js +36 -0
  29. package/lib/forms/select/select-option/SelectOption.d.ts +10 -6
  30. package/lib/forms/select/select-option/SelectOption.js +3 -2
  31. package/lib/forms/text-editor/TextEditor.d.ts +11 -11
  32. package/lib/forms/text-editor/TextEditor.js +3 -3
  33. package/lib/helper/useControlled.d.ts +3 -2
  34. package/lib/helper/useControlled.js +6 -2
  35. package/node/lib/components/icons/close-small.js +75 -0
  36. package/node/lib/forms/select/Select.js +69 -255
  37. package/node/lib/forms/select/internal/HiddenInput.js +32 -0
  38. package/node/lib/forms/select/internal/ListItem.js +87 -0
  39. package/node/lib/forms/select/internal/SelectButton.js +64 -0
  40. package/node/lib/forms/select/internal/SelectButtonContent.js +45 -0
  41. package/node/lib/forms/select/internal/SelectCheckbox.js +26 -0
  42. package/node/lib/forms/select/internal/SelectLabel.js +23 -0
  43. package/node/lib/forms/select/internal/SelectOptionsContainer.js +109 -0
  44. package/node/lib/forms/select/internal/SelectScrollContainer.js +28 -0
  45. package/node/lib/forms/select/internal/SelectWrapper.js +27 -0
  46. package/node/lib/forms/select/internal/index.js +48 -0
  47. package/node/lib/forms/select/internal/utils.js +43 -0
  48. package/node/lib/forms/select/select-option/SelectOption.js +4 -3
  49. package/node/lib/forms/text-editor/TextEditor.js +3 -3
  50. package/node/lib/helper/useControlled.js +6 -2
  51. package/package.json +1 -1
  52. package/lib/forms/select/list-item/ListItem.d.ts +0 -6
  53. package/lib/forms/select/list-item/ListItem.js +0 -24
  54. package/node/lib/forms/select/list-item/ListItem.js +0 -33
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _reactPopper = require("react-popper");
9
+ var _SelectScrollContainer = _interopRequireDefault(require("./SelectScrollContainer.js"));
10
+ var _ListItem = _interopRequireDefault(require("./ListItem.js"));
11
+ var _utils = _interopRequireDefault(require("./utils.js"));
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function SelectOptionsContainerComponent(_ref, ref) {
15
+ let {
16
+ options,
17
+ config,
18
+ onClose,
19
+ label,
20
+ onOptionChange,
21
+ multiple,
22
+ children
23
+ } = _ref;
24
+ const [popperElement, setPopperElement] = (0, _react.useState)(null);
25
+ const refObject = typeof ref !== 'function' ? ref?.current : null;
26
+ const {
27
+ styles,
28
+ attributes
29
+ } = (0, _reactPopper.usePopper)(refObject, popperElement, {
30
+ placement: 'bottom-start',
31
+ modifiers: [{
32
+ name: 'offset',
33
+ options: {
34
+ offset: [0, 3]
35
+ }
36
+ }, {
37
+ name: 'flip',
38
+ options: {
39
+ fallbackPlacements: ['bottom-start', 'top-start']
40
+ }
41
+ }]
42
+ });
43
+ function getCssProperies() {
44
+ if (config?.contentWidth) {
45
+ return {
46
+ ...styles.popper,
47
+ minWidth: `${refObject?.clientWidth}px`,
48
+ width: config?.contentWidth
49
+ };
50
+ }
51
+ return {
52
+ ...styles.popper,
53
+ minWidth: `${refObject?.clientWidth}px`
54
+ };
55
+ }
56
+ const allChildren = (0, _utils.default)(children);
57
+ const childrenList = allChildren.childrenList;
58
+ const usedOptions = options ?? childrenList.map(child => child.props.option);
59
+ const {
60
+ length
61
+ } = usedOptions;
62
+ const listItemRef = (0, _react.useRef)(Array.from({
63
+ length
64
+ }, () => /*#__PURE__*/(0, _react.createRef)()));
65
+ const selectedIndex = Array.isArray(label) ? usedOptions.findIndex(option => option.label === label.at(-1)) : usedOptions.findIndex(option => option.label === label);
66
+ const [init, setInit] = (0, _react.useState)(false);
67
+ (0, _react.useEffect)(() => {
68
+ if (!init) {
69
+ requestAnimationFrame(() => {
70
+ setInit(true);
71
+ const index = selectedIndex === -1 ? 0 : selectedIndex;
72
+ listItemRef.current?.[index].current?.focus();
73
+ });
74
+ }
75
+ }, [selectedIndex, init]);
76
+ const onCloseRef = (0, _react.useRef)(onClose);
77
+ (0, _react.useEffect)(() => () => {
78
+ onCloseRef.current();
79
+ }, []);
80
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
81
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
82
+ "aria-hidden": true,
83
+ className: "fr-backdrop",
84
+ onClick: onClose
85
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
86
+ ref: setPopperElement,
87
+ style: getCssProperies(),
88
+ ...attributes.popper,
89
+ className: "fwe-select-options-container",
90
+ children: [allChildren.before, /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectScrollContainer.default, {
91
+ length: length,
92
+ config: config,
93
+ children: [...(options || []), ...childrenList].map((item, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItem.default, {
94
+ withCheckbox: multiple,
95
+ item: item,
96
+ selectedLabel: label,
97
+ onClose: onClose,
98
+ onFocusChange: index => listItemRef.current[index].current?.focus(),
99
+ onOptionChange: onOptionChange,
100
+ ref: listItemRef,
101
+ index: i,
102
+ options: usedOptions
103
+ }, ( /*#__PURE__*/(0, _react.isValidElement)(item) ? item.props.option : item).data))
104
+ }), allChildren.after]
105
+ })]
106
+ });
107
+ }
108
+ const SelectOptionsContainer = /*#__PURE__*/(0, _react.forwardRef)(SelectOptionsContainerComponent);
109
+ var _default = exports.default = SelectOptionsContainer;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = SelectScrollContainer;
7
+ var _utils = _interopRequireDefault(require("../utils.js"));
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function SelectScrollContainer(_ref) {
11
+ let {
12
+ config,
13
+ children,
14
+ length
15
+ } = _ref;
16
+ if (config?.scroll?.enabled) {
17
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
18
+ className: "fr-select-scroll",
19
+ style: {
20
+ height: (0, _utils.default)(config, length)
21
+ },
22
+ children: children
23
+ });
24
+ }
25
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
26
+ children: children
27
+ });
28
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _classnames = _interopRequireDefault(require("classnames"));
8
+ var _react = require("react");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const SelectWrapper = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
12
+ let {
13
+ children,
14
+ disabled,
15
+ className,
16
+ ...props
17
+ } = _ref;
18
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
19
+ ...props,
20
+ ref: ref,
21
+ className: (0, _classnames.default)('fwe-select-wrapper', {
22
+ 'fwe-disabled': disabled
23
+ }, className),
24
+ children: children
25
+ });
26
+ });
27
+ var _default = exports.default = SelectWrapper;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "HiddenInput", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _HiddenInput.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ListItem", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _ListItem.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "OptionsContainer", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _SelectOptionsContainer.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "SelectButton", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _SelectButton.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "SelectLabel", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _SelectLabel.default;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "Wrapper", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _SelectWrapper.default;
40
+ }
41
+ });
42
+ var _HiddenInput = _interopRequireDefault(require("./HiddenInput.js"));
43
+ var _ListItem = _interopRequireDefault(require("./ListItem.js"));
44
+ var _SelectButton = _interopRequireDefault(require("./SelectButton.js"));
45
+ var _SelectOptionsContainer = _interopRequireDefault(require("./SelectOptionsContainer.js"));
46
+ var _SelectWrapper = _interopRequireDefault(require("./SelectWrapper.js"));
47
+ var _SelectLabel = _interopRequireDefault(require("./SelectLabel.js"));
48
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getChildren;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _classnames = _interopRequireDefault(require("classnames"));
9
+ var _SelectOption = _interopRequireDefault(require("../select-option/SelectOption.js"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function getChildren(children) {
12
+ const before = [];
13
+ const childrenList = [];
14
+ const after = [];
15
+ let foundFirstOption = false;
16
+ _react.default.Children.forEach(children, element => {
17
+ if ( /*#__PURE__*/_react.default.isValidElement(element)) {
18
+ if ( /*#__PURE__*/_react.default.isValidElement(element) && element.type === _SelectOption.default) {
19
+ foundFirstOption = true;
20
+ const className = (0, _classnames.default)('fwe-select-option-content', element.props.className);
21
+ const {
22
+ props
23
+ } = element;
24
+ childrenList.push({
25
+ ...element,
26
+ props: {
27
+ ...props,
28
+ className
29
+ }
30
+ });
31
+ } else if (!foundFirstOption) {
32
+ before.push(element);
33
+ } else {
34
+ after.push(element);
35
+ }
36
+ }
37
+ });
38
+ return {
39
+ childrenList,
40
+ after,
41
+ before
42
+ };
43
+ }
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.SelectOption = void 0;
6
+ exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _jsxRuntime = require("react/jsx-runtime");
9
9
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
10
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
- const SelectOption = exports.SelectOption = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
11
+ function SelectOptionComponent(_ref, ref) {
12
12
  let {
13
13
  children,
14
14
  className,
@@ -20,5 +20,6 @@ const SelectOption = exports.SelectOption = /*#__PURE__*/(0, _react.forwardRef)(
20
20
  ...props,
21
21
  children: children
22
22
  });
23
- });
23
+ }
24
+ const SelectOption = /*#__PURE__*/(0, _react.forwardRef)(SelectOptionComponent);
24
25
  var _default = exports.default = SelectOption;
@@ -59,9 +59,9 @@ function TextEditor(_ref) {
59
59
  if (e) {
60
60
  const whiteList = {
61
61
  ...xss.whiteList,
62
- p: [...(xss.whiteList.p ?? []), 'class'],
63
- li: [...(xss.whiteList.li ?? []), 'class'],
64
- a: [...(xss.whiteList.a ?? []), 'rel', 'class']
62
+ p: [...(xss.whiteList?.p ?? []), 'class'],
63
+ li: [...(xss.whiteList?.li ?? []), 'class'],
64
+ a: [...(xss.whiteList?.a ?? []), 'rel', 'class']
65
65
  };
66
66
  const sanitizedValue = xss.filterXSS(v, {
67
67
  whiteList
@@ -8,7 +8,8 @@ var _react = require("react");
8
8
  function useControlled(_ref) {
9
9
  let {
10
10
  controlled,
11
- default: defaultValue
11
+ default: defaultValue,
12
+ onChange
12
13
  } = _ref;
13
14
  const {
14
15
  current: isControlled
@@ -19,6 +20,9 @@ function useControlled(_ref) {
19
20
  if (!isControlled) {
20
21
  setValue(newValue);
21
22
  }
22
- }, [isControlled]);
23
+ const setter = newValue;
24
+ const onChangeValue = typeof newValue === 'function' ? setter(controlled) : newValue;
25
+ onChange?.(onChangeValue);
26
+ }, [controlled, isControlled, onChange]);
23
27
  return [value, setValueIfUncontrolled];
24
28
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@festo-ui/react",
3
- "version": "7.3.0-dev.464",
3
+ "version": "7.3.0-dev.468",
4
4
  "author": "Festo UI (styleguide@festo.com)",
5
5
  "license": "apache-2.0",
6
6
  "type": "module",
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- export interface ListItemProps extends React.ComponentPropsWithoutRef<'li'> {
3
- empty?: boolean;
4
- }
5
- declare const ListItem: (props: ListItemProps & React.RefAttributes<HTMLLIElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
6
- export default ListItem;
@@ -1,24 +0,0 @@
1
- import cn from 'classnames';
2
- import React, { forwardRef } from 'react';
3
- import { jsx as _jsx } from "react/jsx-runtime";
4
- const ListItem = /*#__PURE__*/forwardRef((_ref, ref) => {
5
- let {
6
- children,
7
- className,
8
- 'aria-selected': ariaSelected,
9
- empty,
10
- ...props
11
- } = _ref;
12
- return /*#__PURE__*/_jsx("li", {
13
- ref: ref,
14
- role: "option",
15
- "aria-selected": ariaSelected,
16
- className: cn('fwe-select-option', {
17
- 'fwe-empty': empty
18
- }, className),
19
- tabIndex: 0,
20
- ...props,
21
- children: children
22
- });
23
- });
24
- export default ListItem;
@@ -1,33 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _classnames = _interopRequireDefault(require("classnames"));
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _jsxRuntime = require("react/jsx-runtime");
10
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- const ListItem = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
14
- let {
15
- children,
16
- className,
17
- 'aria-selected': ariaSelected,
18
- empty,
19
- ...props
20
- } = _ref;
21
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
22
- ref: ref,
23
- role: "option",
24
- "aria-selected": ariaSelected,
25
- className: (0, _classnames.default)('fwe-select-option', {
26
- 'fwe-empty': empty
27
- }, className),
28
- tabIndex: 0,
29
- ...props,
30
- children: children
31
- });
32
- });
33
- var _default = exports.default = ListItem;