@spaced-out/ui-design-system 0.2.5 → 0.2.6-beta.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
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.2.6-beta.0](https://github.com/spaced-out/ui-design-system/compare/v0.2.5...v0.2.6-beta.0) (2024-10-21)
6
+
7
+
8
+ ### Features
9
+
10
+ * adding custom staticLabels prop in menu ([#282](https://github.com/spaced-out/ui-design-system/issues/282)) ([696a433](https://github.com/spaced-out/ui-design-system/commit/696a433a6d2b2c15ac1f4946c7018e17116dc612))
11
+
5
12
  ### [0.2.5](https://github.com/spaced-out/ui-design-system/compare/v0.2.4...v0.2.5) (2024-10-18)
6
13
 
7
14
 
@@ -28,6 +28,11 @@ const RenderOption = _ref => {
28
28
  classNames,
29
29
  searchText = '',
30
30
  showResultText = true,
31
+ staticLabels = {
32
+ RESULT: 'result',
33
+ RESULTS: 'results',
34
+ SEARCH_PLACEHOLDER: 'Search...'
35
+ },
31
36
  ...restProps
32
37
  } = _ref;
33
38
  const {
@@ -41,7 +46,7 @@ const RenderOption = _ref => {
41
46
  } = restProps;
42
47
  if (options && Array.isArray(options) && options.length) {
43
48
  const optionsFiltered = !allowSearch ? options : (0, _menu.getFilteredOptionsFromSearchText)(options, searchText);
44
- const resultText = !allowSearch ? '' : (0, _menu.getFilteredOptionsResultText)(optionsFiltered);
49
+ const finalResultText = !allowSearch ? '' : (0, _menu.getFilteredOptionsResultText)(optionsFiltered, staticLabels);
45
50
  const {
46
51
  enable: isVirtualizationEnabled,
47
52
  menuHeight,
@@ -50,7 +55,7 @@ const RenderOption = _ref => {
50
55
  return /*#__PURE__*/React.createElement(React.Fragment, null, allowSearch && showResultText && /*#__PURE__*/React.createElement(_Text.FormLabelSmall, {
51
56
  className: _MenuModule.default.filterOptionsResultText,
52
57
  color: "tertiary"
53
- }, resultText), virtualization && isVirtualizationEnabled ? /*#__PURE__*/React.createElement(_reactWindow.FixedSizeList, {
58
+ }, finalResultText), virtualization && isVirtualizationEnabled ? /*#__PURE__*/React.createElement(_reactWindow.FixedSizeList, {
54
59
  height: menuHeight || (size === 'medium' ? menuSizeMedium : menuSizeSmall),
55
60
  itemSize: itemHeight || (size === 'medium' ? buttonSizeMedium : buttonSizeSmall),
56
61
  itemCount: optionsFiltered.length
@@ -80,11 +85,11 @@ const RenderOption = _ref => {
80
85
  }
81
86
  if (composeOptions && Array.isArray(composeOptions) && composeOptions.length) {
82
87
  const optionsFiltered = !allowSearch ? composeOptions : (0, _menu.getFilteredComposeOptionsFromSearchText)(composeOptions, searchText);
83
- const resultText = !allowSearch ? '' : (0, _menu.getFilteredComposeOptionsResultText)(optionsFiltered);
88
+ const finalResultText = !allowSearch ? '' : (0, _menu.getFilteredComposeOptionsResultText)(optionsFiltered, staticLabels);
84
89
  return /*#__PURE__*/React.createElement(React.Fragment, null, allowSearch && showResultText && /*#__PURE__*/React.createElement(_Text.FormLabelSmall, {
85
90
  className: _MenuModule.default.filterOptionsResultText,
86
91
  color: "tertiary"
87
- }, resultText), optionsFiltered.map((composeMenuOptions, index) =>
92
+ }, finalResultText), optionsFiltered.map((composeMenuOptions, index) =>
88
93
  /*#__PURE__*/
89
94
  // eslint-disable-next-line react/no-array-index-key
90
95
  React.createElement("span", {
@@ -101,11 +106,11 @@ const RenderOption = _ref => {
101
106
  }
102
107
  if (groupTitleOptions && Array.isArray(groupTitleOptions) && groupTitleOptions.length) {
103
108
  const optionsFiltered = !allowSearch ? groupTitleOptions : (0, _menu.getFilteredGroupTitleOptionsFromSearchText)(groupTitleOptions, searchText);
104
- const resultText = !allowSearch ? '' : (0, _menu.getFilteredGroupTitleOptionsResultText)(optionsFiltered);
109
+ const finalResultText = !allowSearch ? '' : (0, _menu.getFilteredGroupTitleOptionsResultText)(optionsFiltered, staticLabels);
105
110
  return /*#__PURE__*/React.createElement(React.Fragment, null, allowSearch && showResultText && /*#__PURE__*/React.createElement(_Text.FormLabelSmall, {
106
111
  className: _MenuModule.default.filterOptionsResultText,
107
112
  color: "tertiary"
108
- }, resultText), optionsFiltered.map((optionsGroup, index) =>
113
+ }, finalResultText), optionsFiltered.map((optionsGroup, index) =>
109
114
  /*#__PURE__*/
110
115
  // eslint-disable-next-line react/no-array-index-key
111
116
  React.createElement(React.Fragment, {
@@ -136,7 +141,8 @@ const Menu = /*#__PURE__*/React.forwardRef((props, ref) => {
136
141
  itemHeight: null
137
142
  },
138
143
  header,
139
- footer
144
+ footer,
145
+ staticLabels
140
146
  } = props;
141
147
  const [searchText, setSearchText] = React.useState('');
142
148
  const {
@@ -169,7 +175,8 @@ const Menu = /*#__PURE__*/React.forwardRef((props, ref) => {
169
175
  value: searchText,
170
176
  onChange: e => setSearchText(e.target.value),
171
177
  onClear: () => setSearchText(''),
172
- size: size
178
+ size: size,
179
+ placeholder: staticLabels?.SEARCH_PLACEHOLDER ?? 'Search...'
173
180
  }), /*#__PURE__*/React.createElement(RenderOption, _extends({}, props, {
174
181
  searchText: searchText
175
182
  })), hasFooter && /*#__PURE__*/React.createElement("div", {
@@ -76,6 +76,11 @@ export type BaseMenuProps = {
76
76
  header?: React.Node,
77
77
  footer?: React.Node,
78
78
  showResultText?: boolean,
79
+ staticLabels?: {
80
+ RESULT?: string,
81
+ RESULTS?: string,
82
+ SEARCH_PLACEHOLDER?: string,
83
+ },
79
84
  };
80
85
 
81
86
  export type MenuOptionTypes = {
@@ -116,6 +121,11 @@ const RenderOption = ({
116
121
  classNames,
117
122
  searchText = '',
118
123
  showResultText = true,
124
+ staticLabels = {
125
+ RESULT: 'result',
126
+ RESULTS: 'results',
127
+ SEARCH_PLACEHOLDER: 'Search...',
128
+ },
119
129
  ...restProps
120
130
  }: RenderOptionProps): React.Node => {
121
131
  const {
@@ -131,9 +141,9 @@ const RenderOption = ({
131
141
  const optionsFiltered = !allowSearch
132
142
  ? options
133
143
  : getFilteredOptionsFromSearchText(options, searchText);
134
- const resultText = !allowSearch
144
+ const finalResultText = !allowSearch
135
145
  ? ''
136
- : getFilteredOptionsResultText(optionsFiltered);
146
+ : getFilteredOptionsResultText(optionsFiltered, staticLabels);
137
147
 
138
148
  const {
139
149
  enable: isVirtualizationEnabled,
@@ -148,7 +158,7 @@ const RenderOption = ({
148
158
  className={css.filterOptionsResultText}
149
159
  color="tertiary"
150
160
  >
151
- {resultText}
161
+ {finalResultText}
152
162
  </FormLabelSmall>
153
163
  )}
154
164
  {virtualization && isVirtualizationEnabled ? (
@@ -200,9 +210,9 @@ const RenderOption = ({
200
210
  const optionsFiltered = !allowSearch
201
211
  ? composeOptions
202
212
  : getFilteredComposeOptionsFromSearchText(composeOptions, searchText);
203
- const resultText = !allowSearch
213
+ const finalResultText = !allowSearch
204
214
  ? ''
205
- : getFilteredComposeOptionsResultText(optionsFiltered);
215
+ : getFilteredComposeOptionsResultText(optionsFiltered, staticLabels);
206
216
 
207
217
  return (
208
218
  <>
@@ -211,7 +221,7 @@ const RenderOption = ({
211
221
  className={css.filterOptionsResultText}
212
222
  color="tertiary"
213
223
  >
214
- {resultText}
224
+ {finalResultText}
215
225
  </FormLabelSmall>
216
226
  )}
217
227
  {optionsFiltered.map((composeMenuOptions, index) => (
@@ -246,9 +256,9 @@ const RenderOption = ({
246
256
  groupTitleOptions,
247
257
  searchText,
248
258
  );
249
- const resultText = !allowSearch
259
+ const finalResultText = !allowSearch
250
260
  ? ''
251
- : getFilteredGroupTitleOptionsResultText(optionsFiltered);
261
+ : getFilteredGroupTitleOptionsResultText(optionsFiltered, staticLabels);
252
262
 
253
263
  return (
254
264
  <>
@@ -257,7 +267,7 @@ const RenderOption = ({
257
267
  className={css.filterOptionsResultText}
258
268
  color="tertiary"
259
269
  >
260
- {resultText}
270
+ {finalResultText}
261
271
  </FormLabelSmall>
262
272
  )}
263
273
  {optionsFiltered.map((optionsGroup, index) => (
@@ -312,6 +322,7 @@ export const Menu: React$AbstractComponent<MenuProps, HTMLDivElement> =
312
322
  },
313
323
  header,
314
324
  footer,
325
+ staticLabels,
315
326
  } = props;
316
327
  const [searchText, setSearchText] = React.useState('');
317
328
  const {menuHeight} = virtualization;
@@ -361,6 +372,7 @@ export const Menu: React$AbstractComponent<MenuProps, HTMLDivElement> =
361
372
  onChange={(e) => setSearchText(e.target.value)}
362
373
  onClear={() => setSearchText('')}
363
374
  size={size}
375
+ placeholder={staticLabels?.SEARCH_PLACEHOLDER ?? 'Search...'}
364
376
  />
365
377
  )}
366
378
  <RenderOption {...props} searchText={searchText} />
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getTextLabelFromSelectedKeys = exports.getSelectedKeysFromSelectedOption = exports.getOptionsFromKeys = exports.getOptionFromKey = exports.getFilteredOptionsResultText = exports.getFilteredOptionsFromSearchText = exports.getFilteredGroupTitleOptionsResultText = exports.getFilteredGroupTitleOptionsFromSearchText = exports.getFilteredComposeOptionsResultText = exports.getFilteredComposeOptionsFromSearchText = exports.getButtonLabelFromSelectedKeys = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
- var _string = require("../string");
9
8
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
9
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
10
 
@@ -58,11 +57,12 @@ const getFilteredOptionsFromSearchText = (options, searchText) => {
58
57
  return options.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()));
59
58
  };
60
59
  exports.getFilteredOptionsFromSearchText = getFilteredOptionsFromSearchText;
61
- const getFilteredOptionsResultText = function (options) {
62
- let resultText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'result';
60
+ const getFilteredOptionsResultText = (options, staticLabels) => {
63
61
  let resultCount = 0;
64
62
  resultCount += options.length;
65
- const generatedResultText = `${resultCount} ${(0, _string.formatWord)(resultText, resultCount)}`;
63
+ const singleResultMessage = staticLabels.RESULT ?? 'result';
64
+ const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
65
+ const generatedResultText = `${resultCount} ${resultCount > 1 ? multipleResultsMessage : singleResultMessage}`;
66
66
  return generatedResultText;
67
67
  };
68
68
  exports.getFilteredOptionsResultText = getFilteredOptionsResultText;
@@ -73,13 +73,14 @@ const getFilteredComposeOptionsFromSearchText = (composeOptions, searchText) =>
73
73
  return composeOptions.map(optionGroup => optionGroup.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()))).filter(group => group.length > 0);
74
74
  };
75
75
  exports.getFilteredComposeOptionsFromSearchText = getFilteredComposeOptionsFromSearchText;
76
- const getFilteredComposeOptionsResultText = function (composeOptions) {
77
- let resultText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'result';
76
+ const getFilteredComposeOptionsResultText = (composeOptions, staticLabels) => {
78
77
  let resultCount = 0;
79
78
  composeOptions.forEach(optionGroup => {
80
79
  resultCount += optionGroup.length;
81
80
  });
82
- const generatedResultText = `${resultCount} ${(0, _string.formatWord)(resultText, resultCount)}`;
81
+ const singleResultMessage = staticLabels.RESULT ?? 'result';
82
+ const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
83
+ const generatedResultText = `${resultCount} ${resultCount > 1 ? multipleResultsMessage : singleResultMessage}`;
83
84
  return generatedResultText;
84
85
  };
85
86
  exports.getFilteredComposeOptionsResultText = getFilteredComposeOptionsResultText;
@@ -93,15 +94,16 @@ const getFilteredGroupTitleOptionsFromSearchText = (groupTitleOptions, searchTex
93
94
  })).filter(group => group.options && group.options.length > 0);
94
95
  };
95
96
  exports.getFilteredGroupTitleOptionsFromSearchText = getFilteredGroupTitleOptionsFromSearchText;
96
- const getFilteredGroupTitleOptionsResultText = function (groupTitleOptions) {
97
- let resultText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'result';
97
+ const getFilteredGroupTitleOptionsResultText = (groupTitleOptions, staticLabels) => {
98
98
  let resultCount = 0;
99
99
  groupTitleOptions.forEach(group => {
100
100
  if (group.options) {
101
101
  resultCount += group.options.length;
102
102
  }
103
103
  });
104
- const generatedResultText = `${resultCount} ${(0, _string.formatWord)(resultText, resultCount)}`;
104
+ const singleResultMessage = staticLabels.RESULT ?? 'result';
105
+ const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
106
+ const generatedResultText = `${resultCount} ${resultCount > 1 ? multipleResultsMessage : singleResultMessage}`;
105
107
  return generatedResultText;
106
108
  };
107
109
  exports.getFilteredGroupTitleOptionsResultText = getFilteredGroupTitleOptionsResultText;
@@ -2,7 +2,6 @@
2
2
  import * as React from 'react';
3
3
 
4
4
  import type {MenuGroupTitleOption, MenuOption} from '../../components/Menu';
5
- import {formatWord} from '../string';
6
5
 
7
6
 
8
7
  export const getSelectedKeysFromSelectedOption = (
@@ -96,16 +95,18 @@ export const getFilteredOptionsFromSearchText = (
96
95
 
97
96
  export const getFilteredOptionsResultText = (
98
97
  options: MenuOption[],
99
- resultText: string = 'result',
98
+ staticLabels: {[key: string]: string},
100
99
  ): string => {
101
100
  let resultCount = 0;
102
101
 
103
102
  resultCount += options.length;
104
103
 
105
- const generatedResultText = `${resultCount} ${formatWord(
106
- resultText,
107
- resultCount,
108
- )}`;
104
+ const singleResultMessage = staticLabels.RESULT ?? 'result';
105
+ const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
106
+
107
+ const generatedResultText = `${resultCount} ${
108
+ resultCount > 1 ? multipleResultsMessage : singleResultMessage
109
+ }`;
109
110
 
110
111
  return generatedResultText;
111
112
  };
@@ -129,7 +130,7 @@ export const getFilteredComposeOptionsFromSearchText = (
129
130
 
130
131
  export const getFilteredComposeOptionsResultText = (
131
132
  composeOptions: Array<Array<MenuOption>>,
132
- resultText: string = 'result',
133
+ staticLabels: {[key: string]: string},
133
134
  ): string => {
134
135
  let resultCount = 0;
135
136
 
@@ -137,10 +138,12 @@ export const getFilteredComposeOptionsResultText = (
137
138
  resultCount += optionGroup.length;
138
139
  });
139
140
 
140
- const generatedResultText = `${resultCount} ${formatWord(
141
- resultText,
142
- resultCount,
143
- )}`;
141
+ const singleResultMessage = staticLabels.RESULT ?? 'result';
142
+ const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
143
+
144
+ const generatedResultText = `${resultCount} ${
145
+ resultCount > 1 ? multipleResultsMessage : singleResultMessage
146
+ }`;
144
147
 
145
148
  return generatedResultText;
146
149
  };
@@ -169,7 +172,7 @@ export const getFilteredGroupTitleOptionsFromSearchText = (
169
172
 
170
173
  export const getFilteredGroupTitleOptionsResultText = (
171
174
  groupTitleOptions: Array<MenuGroupTitleOption>,
172
- resultText: string = 'result',
175
+ staticLabels: {[key: string]: string},
173
176
  ): string => {
174
177
  let resultCount = 0;
175
178
 
@@ -179,10 +182,12 @@ export const getFilteredGroupTitleOptionsResultText = (
179
182
  }
180
183
  });
181
184
 
182
- const generatedResultText = `${resultCount} ${formatWord(
183
- resultText,
184
- resultCount,
185
- )}`;
185
+ const singleResultMessage = staticLabels.RESULT ?? 'result';
186
+ const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
187
+
188
+ const generatedResultText = `${resultCount} ${
189
+ resultCount > 1 ? multipleResultsMessage : singleResultMessage
190
+ }`;
186
191
 
187
192
  return generatedResultText;
188
193
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spaced-out/ui-design-system",
3
- "version": "0.2.5",
3
+ "version": "0.2.6-beta.0",
4
4
  "main": "index.js",
5
5
  "description": "Sense UI components library",
6
6
  "author": {