@synerise/ds-context-selector 0.16.13 → 0.17.0

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,35 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.17.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-context-selector@0.16.14...@synerise/ds-context-selector@0.17.0) (2023-05-23)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * types fix ([5f877b8](https://github.com/Synerise/synerise-design/commit/5f877b8d38c81a40f2c21d6e89795297f88407ea))
12
+ * **context-selector:** fix handling readOnly ([c88b710](https://github.com/Synerise/synerise-design/commit/c88b7108c52cd4e2c3192bddcecb81dac2b560fc))
13
+ * **factors:** reuse FactorsProps type ([5743065](https://github.com/Synerise/synerise-design/commit/574306564fb5c2b8f78f75a36a937960f0c7c609))
14
+
15
+
16
+ ### Features
17
+
18
+ * **factors:** allow changing tooltip ([6da9e97](https://github.com/Synerise/synerise-design/commit/6da9e979e972ca042fce6b2c79d05735257155d9))
19
+
20
+
21
+
22
+
23
+
24
+ ## [0.16.14](https://github.com/Synerise/synerise-design/compare/@synerise/ds-context-selector@0.16.13...@synerise/ds-context-selector@0.16.14) (2023-05-20)
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **condition:** adds validation errors support ([0da0a99](https://github.com/Synerise/synerise-design/commit/0da0a99436920398787a1128e26d5432af2d89e2))
30
+
31
+
32
+
33
+
34
+
6
35
  ## [0.16.13](https://github.com/Synerise/synerise-design/compare/@synerise/ds-context-selector@0.16.12...@synerise/ds-context-selector@0.16.13) (2023-04-26)
7
36
 
8
37
  **Note:** Version bump only for package @synerise/ds-context-selector
package/README.md CHANGED
@@ -97,6 +97,7 @@ import ContextSelector from '@synerise/ds-context-selector'
97
97
  | addMode | If true trigger doesn't change style when value is set | ContextItem \ undefined | undefined |
98
98
  | customTriggerComponent | Add custom trigger | React.ReactNode | undefined |
99
99
  | trigger | Add custom trigger to modal | 'click' \ 'hover' \ 'contextMenu' | 'click |
100
+ | getMenuEntryProps | Configure tooltip (information-card by default) | (arg: ParameterValueType) => MenuItemProps \ undefined | undefined |
100
101
  | dropdownWrapperStyles | Apply custom styles to dropdown wrapper | CSSProperties \ undefined | - |
101
102
  | onClickOutsideEvents | Overwrite default events for document listener | HandledEventsType[] \ undefined | - |
102
103
  | onClickOutside | Callback called when user click outside dropdown | () => void \ undefined | - |
@@ -1,5 +1,11 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+
3
9
  import * as React from 'react';
4
10
  import Button from '@synerise/ds-button';
5
11
  import Icon, { Add3M, AngleDownS } from '@synerise/ds-icon';
@@ -8,7 +14,7 @@ import Dropdown from '@synerise/ds-dropdown';
8
14
  import InformationCard from '@synerise/ds-information-card';
9
15
  import { getPopupContainer } from '@synerise/ds-utils';
10
16
  import ContextSelectorDropdown from './ContextSelectorDropdown/ContextSelectorDropdown';
11
- import { ItemWrapper } from './ContextSelector.styles';
17
+ import { ItemWrapper, ErrorWrapper } from './ContextSelector.styles';
12
18
 
13
19
  var ContextSelector = function ContextSelector(_ref) {
14
20
  var defaultDropdownVisibility = _ref.defaultDropdownVisibility,
@@ -38,8 +44,10 @@ var ContextSelector = function ContextSelector(_ref) {
38
44
  type = _ref.type,
39
45
  dropdownProps = _ref.dropdownProps,
40
46
  disabled = _ref.disabled,
47
+ errorText = _ref.errorText,
41
48
  _ref$readOnly = _ref.readOnly,
42
- readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly;
49
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
50
+ getMenuEntryProps = _ref.getMenuEntryProps;
43
51
 
44
52
  var _React$useState = React.useState(defaultDropdownVisibility != null ? defaultDropdownVisibility : false),
45
53
  dropdownVisible = _React$useState[0],
@@ -77,24 +85,29 @@ var ContextSelector = function ContextSelector(_ref) {
77
85
  }, [onOpen]);
78
86
  var triggerButton = React.useMemo(function () {
79
87
  var buttonLabel = texts.buttonLabel;
88
+ var hasError = Boolean(errorText);
80
89
  return addMode && !selectedItem ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
90
+ error: hasError,
81
91
  disabled: disabled,
82
92
  type: "primary",
83
93
  mode: "icon-label",
84
- onClick: !readOnly ? handleClick : undefined
94
+ onClick: !readOnly ? handleClick : undefined,
95
+ readOnly: readOnly
85
96
  }, /*#__PURE__*/React.createElement(Icon, {
86
97
  component: /*#__PURE__*/React.createElement(Add3M, null)
87
98
  }), buttonLabel)) : /*#__PURE__*/React.createElement(Menu, {
88
99
  asDropdownMenu: true,
89
100
  showTextTooltip: true,
90
101
  asInfoCardContainer: true,
91
- dataSource: [{
102
+ dataSource: [_objectSpread({
92
103
  text: /*#__PURE__*/React.createElement(Button, {
104
+ error: hasError,
93
105
  disabled: disabled,
94
106
  type: "custom-color",
95
107
  color: triggerColor,
96
108
  mode: triggerMode,
97
- onClick: !readOnly ? handleClick : undefined
109
+ onClick: !readOnly ? handleClick : undefined,
110
+ readOnly: readOnly
98
111
  }, selectedItem ? /*#__PURE__*/React.createElement(Icon, {
99
112
  component: selectedItem.icon
100
113
  }) : null, /*#__PURE__*/React.createElement(ItemWrapper, null, selectedItem ? selectedItem.name : buttonLabel), !readOnly && /*#__PURE__*/React.createElement(Icon, {
@@ -116,9 +129,9 @@ var ContextSelector = function ContextSelector(_ref) {
116
129
  } : undefined
117
130
  });
118
131
  } : undefined
119
- }]
132
+ }, getMenuEntryProps == null ? void 0 : getMenuEntryProps(selectedItem))]
120
133
  });
121
- }, [texts, addMode, selectedItem, disabled, readOnly, handleClick, triggerColor, triggerMode, getPopupContainerOverride]);
134
+ }, [texts, addMode, selectedItem, disabled, readOnly, handleClick, triggerColor, triggerMode, getPopupContainerOverride, errorText, getMenuEntryProps]);
122
135
  var onDropdownVisibilityChange = React.useCallback(function (value) {
123
136
  if (value) {
124
137
  onActivate && onActivate('');
@@ -129,7 +142,7 @@ var ContextSelector = function ContextSelector(_ref) {
129
142
  }
130
143
  }, [onActivate, onDeactivate]);
131
144
  if (readOnly) return /*#__PURE__*/React.createElement(React.Fragment, null, customTriggerComponent != null ? customTriggerComponent : triggerButton);
132
- return /*#__PURE__*/React.createElement("div", {
145
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
133
146
  "data-popup-container": true
134
147
  }, /*#__PURE__*/React.createElement(Dropdown, _extends({}, dropdownProps, {
135
148
  getPopupContainer: getPopupContainerOverride || getPopupContainer,
@@ -154,7 +167,7 @@ var ContextSelector = function ContextSelector(_ref) {
154
167
  hasMoreItems: hasMoreItems,
155
168
  onFetchData: onFetchData
156
169
  })
157
- }), customTriggerComponent != null ? customTriggerComponent : triggerButton));
170
+ }), customTriggerComponent != null ? customTriggerComponent : triggerButton)), errorText && /*#__PURE__*/React.createElement(ErrorWrapper, null, errorText));
158
171
  };
159
172
 
160
173
  export default ContextSelector;
@@ -5,5 +5,6 @@ export declare const ItemsList: import("styled-components").StyledComponent<type
5
5
  export declare const SearchResult: import("styled-components").StyledComponent<"span", any, {}, never>;
6
6
  export declare const SearchResultHighlight: import("styled-components").StyledComponent<"span", any, {}, never>;
7
7
  export declare const Title: import("styled-components").StyledComponent<"div", any, {}, never>;
8
- export declare const ItemWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
8
+ export declare const ItemWrapper: import("styled-components").StyledComponent<"span", any, {}, never>;
9
+ export declare const ErrorWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
9
10
  export declare const LoaderWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -30,13 +30,17 @@ export var Title = styled.div.withConfig({
30
30
  })(["font-size:10px;line-height:1.6;font-weight:500;text-transform:uppercase;color:", ";padding:8px 12px;"], function (props) {
31
31
  return props.theme.palette['grey-500'];
32
32
  });
33
- export var ItemWrapper = styled.div.withConfig({
33
+ export var ItemWrapper = styled.span.withConfig({
34
34
  displayName: "ContextSelectorstyles__ItemWrapper",
35
35
  componentId: "sc-1tuu6xk-6"
36
- })(["max-width:200px;overflow:hidden;text-overflow:ellipsis;color:", ";"], function (props) {
37
- return props.theme.palette.white;
36
+ })(["max-width:200px;overflow:hidden;text-overflow:ellipsis;"]);
37
+ export var ErrorWrapper = styled.div.withConfig({
38
+ displayName: "ContextSelectorstyles__ErrorWrapper",
39
+ componentId: "sc-1tuu6xk-7"
40
+ })(["color:", ";margin-top:8px;"], function (props) {
41
+ return props.theme.palette['red-600'];
38
42
  });
39
43
  export var LoaderWrapper = styled.div.withConfig({
40
44
  displayName: "ContextSelectorstyles__LoaderWrapper",
41
- componentId: "sc-1tuu6xk-7"
45
+ componentId: "sc-1tuu6xk-8"
42
46
  })(["width:100%;display:flex;align-items:center;justify-content:center;padding:32px 0;"]);
@@ -3,6 +3,7 @@ import { CSSProperties } from 'react';
3
3
  import { HandledEventsType } from '@synerise/ds-utils';
4
4
  import { ItemSize } from '@synerise/ds-menu';
5
5
  import { DropdownProps } from '@synerise/ds-dropdown/dist/Dropdown';
6
+ import type { FactorsProps } from '@synerise/ds-factors';
6
7
  export declare type ContextTexts = {
7
8
  buttonLabel: string;
8
9
  searchPlaceholder: string;
@@ -64,6 +65,8 @@ export declare type ContextProps = {
64
65
  hasMoreItems?: boolean;
65
66
  type?: 'default' | 'attribute' | 'event';
66
67
  dropdownProps?: Omit<DropdownProps, 'trigger' | 'getPopupContainer' | 'onVisibleChange' | 'visible' | 'overlay'>;
68
+ errorText?: React.ReactNode | string;
69
+ getMenuEntryProps?: FactorsProps['getMenuEntryProps'];
67
70
  };
68
71
  export declare type ContextDropdownProps = {
69
72
  setDropdownVisible: (show: boolean) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-context-selector",
3
- "version": "0.16.13",
3
+ "version": "0.17.0",
4
4
  "description": "ContextSelector UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -26,21 +26,22 @@
26
26
  "test:watch": "npm run test -- --watchAll",
27
27
  "types": "tsc --noEmit"
28
28
  },
29
- "gitHead": "41163901b144e78a83329029519cb9eb48bf4787",
29
+ "gitHead": "9a0fe37374409f1830fa642965975a26a72116c8",
30
30
  "sideEffects": [
31
31
  "dist/style/*",
32
32
  "*.less"
33
33
  ],
34
34
  "types": "dist/index.d.ts",
35
35
  "dependencies": {
36
- "@synerise/ds-button": "^0.17.14",
37
- "@synerise/ds-dropdown": "^0.17.63",
36
+ "@synerise/ds-button": "^0.17.16",
37
+ "@synerise/ds-dropdown": "^0.17.65",
38
+ "@synerise/ds-factors": "^0.18.0",
38
39
  "@synerise/ds-icon": "^0.56.0",
39
- "@synerise/ds-information-card": "^0.3.13",
40
- "@synerise/ds-menu": "^0.17.7",
41
- "@synerise/ds-result": "^0.6.21",
40
+ "@synerise/ds-information-card": "^0.3.15",
41
+ "@synerise/ds-menu": "^0.17.9",
42
+ "@synerise/ds-result": "^0.6.23",
42
43
  "@synerise/ds-scrollbar": "^0.6.2",
43
- "@synerise/ds-tabs": "^0.13.59",
44
+ "@synerise/ds-tabs": "^0.13.61",
44
45
  "@synerise/ds-utils": "^0.19.0",
45
46
  "classnames": "^2.2.6",
46
47
  "react-window": "1.8.5"