@inseefr/lunatic 2.5.0-fix-last-reached-page → 2.5.1-beta

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 (53) hide show
  1. package/lib/components/commons/components/combo-box/combo-box.js +2 -2
  2. package/lib/components/commons/components/{default-option-renderer.js → combo-box/panel/combo-box-option.js} +3 -2
  3. package/lib/components/commons/components/{default-option-renderer.spec.js → combo-box/panel/combo-box-option.spec.js} +5 -5
  4. package/lib/components/commons/components/combo-box/panel/panel.js +4 -4
  5. package/lib/components/commons/components/combo-box/selection/LabelOrInput.js +51 -0
  6. package/lib/components/commons/components/combo-box/selection/LabelOrInput.spec.js +23 -0
  7. package/lib/components/commons/components/combo-box/selection/__snapshots__/selection.spec.tsx.snap +14 -12
  8. package/lib/components/commons/components/combo-box/selection/{delete.js → clear-button.js} +6 -3
  9. package/lib/components/commons/components/combo-box/selection/{delete.spec.js → clear-button.spec.js} +9 -9
  10. package/lib/components/commons/components/combo-box/selection/combo-box-label-selection.js +47 -0
  11. package/lib/components/commons/components/{default-label-renderer.spec.js → combo-box/selection/combo-box-label-selection.spec.js} +4 -4
  12. package/lib/components/commons/components/combo-box/selection/input.js +2 -2
  13. package/lib/components/commons/components/combo-box/selection/label-selection.js +8 -12
  14. package/lib/components/commons/components/combo-box/selection/label-selection.spec.js +3 -11
  15. package/lib/components/commons/components/combo-box/selection/selection.js +5 -11
  16. package/lib/components/commons/components/combo-box/selection/selection.spec.js +5 -30
  17. package/lib/components/commons/index.js +1 -12
  18. package/lib/components/suggester/html/suggester.js +2 -4
  19. package/lib/src/components/commons/components/combo-box/combo-box.d.ts +3 -3
  20. package/lib/src/components/commons/components/combo-box/combo-box.stories.d.ts +3 -3
  21. package/lib/src/components/commons/components/combo-box/combo-box.type.d.ts +1 -1
  22. package/lib/src/components/commons/components/combo-box/panel/combo-box-option.d.ts +8 -0
  23. package/lib/src/components/commons/components/combo-box/panel/panel.d.ts +7 -4
  24. package/lib/src/components/commons/components/combo-box/selection/LabelOrInput.d.ts +16 -0
  25. package/lib/src/components/commons/components/combo-box/selection/clear-button.d.ts +9 -0
  26. package/lib/src/components/commons/components/combo-box/selection/combo-box-label-selection.d.ts +10 -0
  27. package/lib/src/components/commons/components/combo-box/selection/input.d.ts +9 -4
  28. package/lib/src/components/commons/components/combo-box/selection/label-selection.d.ts +9 -9
  29. package/lib/src/components/commons/components/combo-box/state-management/actions.d.ts +5 -5
  30. package/lib/src/components/commons/index.d.ts +0 -3
  31. package/lib/src/components/dropdown/html/dropdown-simple/simple-label-renderer.d.ts +2 -2
  32. package/lib/src/components/dropdown/html/dropdown-simple/simple-option-renderer.d.ts +2 -2
  33. package/lib/src/components/dropdown/html/dropdown-writable/dropdown-writable.d.ts +2 -2
  34. package/lib/src/components/dropdown/html/dropdown-writable/writable-label-renderer.d.ts +2 -2
  35. package/lib/src/components/dropdown/html/dropdown-writable/writable-option-renderer.d.ts +2 -2
  36. package/lib/src/components/loop/block-for-loop/block-for-loop-ochestrator.d.ts +1 -1
  37. package/lib/src/components/loop/roster-for-loop/roster-for-loop-orchestrator.d.ts +1 -1
  38. package/lib/src/components/suggester/html/suggester.d.ts +2 -2
  39. package/lib/src/components/suggester/searching/create-searching.d.ts +2 -2
  40. package/lib/src/i18n/index.d.ts +2 -2
  41. package/lib/src/i18n/inputNumberProps.d.ts +1 -1
  42. package/package.json +1 -1
  43. package/lib/components/commons/components/combo-box/selection/displayLabelOrInput.js +0 -26
  44. package/lib/components/commons/components/combo-box/selection/displayLabelOrInput.spec.js +0 -56
  45. package/lib/components/commons/components/default-label-renderer.js +0 -37
  46. package/lib/src/components/commons/components/combo-box/selection/delete.d.ts +0 -8
  47. package/lib/src/components/commons/components/combo-box/selection/displayLabelOrInput.d.ts +0 -5
  48. package/lib/src/components/commons/components/default-label-renderer.d.ts +0 -8
  49. package/lib/src/components/commons/components/default-option-renderer.d.ts +0 -7
  50. /package/lib/src/components/commons/components/combo-box/{selection/delete.spec.d.ts → panel/combo-box-option.spec.d.ts} +0 -0
  51. /package/lib/src/components/commons/components/combo-box/selection/{displayLabelOrInput.spec.d.ts → LabelOrInput.spec.d.ts} +0 -0
  52. /package/lib/src/components/commons/components/{default-label-renderer.spec.d.ts → combo-box/selection/clear-button.spec.d.ts} +0 -0
  53. /package/lib/src/components/commons/components/{default-option-renderer.spec.d.ts → combo-box/selection/combo-box-label-selection.spec.d.ts} +0 -0
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = void 0;
8
8
  var _react = require("react");
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _delete = require("./selection/delete");
10
+ var _clearButton = require("./selection/clear-button");
11
11
  var _stateManagement = require("./state-management");
12
12
  require("./combo-box.scss");
13
13
  var _selection = require("./selection/selection");
@@ -140,7 +140,7 @@ function ComboBox(_ref) {
140
140
  search: search,
141
141
  onSelect: handleSelect
142
142
  })]
143
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
143
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
144
144
  className: (0, _classnames["default"])({
145
145
  focused: focused
146
146
  }),
@@ -5,9 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
  var _classnames = _interopRequireDefault(require("classnames"));
8
+ var _createCustomizableField = _interopRequireDefault(require("../../../create-customizable-field"));
8
9
  var _jsxRuntime = require("react/jsx-runtime");
9
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
- function DefaultOptionRenderer(_ref) {
11
+ function ComboBoxOption(_ref) {
11
12
  var option = _ref.option,
12
13
  selected = _ref.selected;
13
14
  var id = option.id,
@@ -39,5 +40,5 @@ function DefaultOptionRenderer(_ref) {
39
40
  })
40
41
  });
41
42
  }
42
- var _default = DefaultOptionRenderer;
43
+ var _default = (0, _createCustomizableField["default"])(ComboBoxOption, 'ComboboxOption');
43
44
  exports["default"] = _default;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _react = _interopRequireDefault(require("react"));
4
4
  var _react2 = require("@testing-library/react");
5
- var _defaultOptionRenderer = _interopRequireDefault(require("./default-option-renderer"));
5
+ var _comboBoxOption = _interopRequireDefault(require("./combo-box-option"));
6
6
  var _vitest = require("vitest");
7
7
  var _jsxRuntime = require("react/jsx-runtime");
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -12,7 +12,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
12
12
  id: '1',
13
13
  value: 'Value'
14
14
  };
15
- var _render = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_defaultOptionRenderer["default"], {
15
+ var _render = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_comboBoxOption["default"], {
16
16
  option: option
17
17
  })),
18
18
  getByText = _render.getByText,
@@ -28,7 +28,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
28
28
  value: 'Value',
29
29
  label: 'Label'
30
30
  };
31
- var _render2 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_defaultOptionRenderer["default"], {
31
+ var _render2 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_comboBoxOption["default"], {
32
32
  option: option
33
33
  })),
34
34
  getByText = _render2.getByText;
@@ -43,7 +43,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
43
43
  value: 'Value',
44
44
  label: 'Label'
45
45
  };
46
- var _render3 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_defaultOptionRenderer["default"], {
46
+ var _render3 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_comboBoxOption["default"], {
47
47
  option: option,
48
48
  selected: true
49
49
  })),
@@ -56,7 +56,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
56
56
  value: 'Value',
57
57
  label: 'Label'
58
58
  };
59
- var _render4 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_defaultOptionRenderer["default"], {
59
+ var _render4 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_comboBoxOption["default"], {
60
60
  option: option
61
61
  })),
62
62
  container = _render4.container;
@@ -7,12 +7,11 @@ exports.Panel = Panel;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _panelContainer = require("./panel-container");
9
9
  var _optionContainer = require("./option-container");
10
- var _index = require("../../../index");
10
+ var _comboBoxOption = _interopRequireDefault(require("./combo-box-option"));
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
13
  function Panel(_ref) {
14
- var _ref$optionRenderer = _ref.optionRenderer,
15
- OptionRender = _ref$optionRenderer === void 0 ? _index.DefaultOptionRenderer : _ref$optionRenderer,
14
+ var OptionRender = _ref.optionRenderer,
16
15
  _ref$options = _ref.options,
17
16
  options = _ref$options === void 0 ? [] : _ref$options,
18
17
  focused = _ref.focused,
@@ -22,6 +21,7 @@ function Panel(_ref) {
22
21
  search = _ref.search,
23
22
  onSelect = _ref.onSelect;
24
23
  var visibleOptions = expanded ? options : [];
24
+ var ComboBoxOptionComponent = OptionRender !== null && OptionRender !== void 0 ? OptionRender : _comboBoxOption["default"];
25
25
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_panelContainer.PanelContainer, {
26
26
  expanded: expanded,
27
27
  focused: focused,
@@ -32,7 +32,7 @@ function Panel(_ref) {
32
32
  index: index.toString(),
33
33
  selected: selectedIndex === index,
34
34
  onSelect: onSelect,
35
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(OptionRender, {
35
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ComboBoxOptionComponent, {
36
36
  option: option,
37
37
  selected: selectedIndex === index,
38
38
  search: search
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LabelOrInput = LabelOrInput;
7
+ var _labelSelection = _interopRequireDefault(require("./label-selection"));
8
+ var _input = _interopRequireDefault(require("./input"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+ /**
12
+ * Display the input or the label of the selection based on the state of the Suggester.
13
+ *
14
+ * When the component is not focused, a representation of what is being searched
15
+ * is presented instead of the Input. This is related to what the user searched
16
+ * (i.e. the letters entered), not directly to the option chosen among the suggestions.
17
+ * Using the input directly to represent the selection causes a conflict with that which the user enters in order to search.
18
+ */
19
+ function LabelOrInput(props) {
20
+ var editable = props.editable,
21
+ expanded = props.expanded;
22
+ var displayLabel = !editable || !expanded;
23
+ var labelRenderer = props.labelRenderer,
24
+ placeholder = props.placeholder,
25
+ selectedIndex = props.selectedIndex,
26
+ options = props.options,
27
+ search = props.search,
28
+ disabled = props.disabled,
29
+ id = props.id,
30
+ focused = props.focused,
31
+ onChange = props.onChange;
32
+ if (displayLabel) {
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_labelSelection["default"], {
34
+ labelRenderer: labelRenderer,
35
+ placeholder: placeholder,
36
+ selectedIndex: selectedIndex,
37
+ options: options,
38
+ search: search,
39
+ disabled: disabled
40
+ });
41
+ }
42
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_input["default"], {
43
+ id: "combobox-input-".concat(id),
44
+ className: "lunatic-combo-box-input",
45
+ onChange: onChange,
46
+ value: search,
47
+ placeholder: placeholder,
48
+ disabled: disabled,
49
+ focused: focused
50
+ });
51
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _react2 = require("@testing-library/react");
5
+ var _LabelOrInput = require("./LabelOrInput");
6
+ var _vitest = require("vitest");
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ (0, _vitest.describe)('displayLabelOrInput', function () {
10
+ (0, _vitest.it)('Render Label when not expended', function () {
11
+ var _render = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_LabelOrInput.LabelOrInput, {
12
+ editable: true,
13
+ expanded: false,
14
+ options: [{
15
+ label: 'hello',
16
+ value: '-1'
17
+ }],
18
+ selectedIndex: 0
19
+ })),
20
+ getByText = _render.getByText;
21
+ (0, _vitest.expect)(getByText('-1 - hello')).toBeInTheDocument();
22
+ });
23
+ });
@@ -13,9 +13,11 @@ exports[`Selection component > should render correctly when it is disabled 1`] =
13
13
  <div
14
14
  class="lunatic-combo-box-selected disabled"
15
15
  >
16
- <div>
17
- No selection
18
- </div>
16
+ <span
17
+ class="placeholder"
18
+ >
19
+ hello!
20
+ </span>
19
21
  </div>
20
22
  </div>
21
23
  `;
@@ -33,9 +35,9 @@ exports[`Selection component > should render correctly when it is editable 1`] =
33
35
  <div
34
36
  class="lunatic-combo-box-selected"
35
37
  >
36
- <div>
37
- No selection
38
- </div>
38
+ <span
39
+ class="placeholder"
40
+ />
39
41
  </div>
40
42
  </div>
41
43
  `;
@@ -54,9 +56,9 @@ exports[`Selection component > should render correctly when it is expanded 1`] =
54
56
  <div
55
57
  class="lunatic-combo-box-selected"
56
58
  >
57
- <div>
58
- No selection
59
- </div>
59
+ <span
60
+ class="placeholder"
61
+ />
60
62
  </div>
61
63
  </div>
62
64
  `;
@@ -74,9 +76,9 @@ exports[`Selection component > should render correctly with default props 1`] =
74
76
  <div
75
77
  class="lunatic-combo-box-selected"
76
78
  >
77
- <div>
78
- No selection
79
- </div>
79
+ <span
80
+ class="placeholder"
81
+ />
80
82
  </div>
81
83
  </div>
82
84
  `;
@@ -3,11 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Delete = Delete;
6
+ exports.ClearButton = void 0;
7
7
  var _react = require("react");
8
8
  var _classnames = _interopRequireDefault(require("classnames"));
9
9
  var _icons = require("../../../icons");
10
10
  var _fab = require("../../fab");
11
+ var _createCustomizableField = _interopRequireDefault(require("../../../create-customizable-field"));
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
14
  function isDisabled(search) {
@@ -23,7 +24,7 @@ function createOnKeyDown(onClick) {
23
24
  }
24
25
  };
25
26
  }
26
- function Delete(_ref) {
27
+ function ClearButtonComponent(_ref) {
27
28
  var className = _ref.className,
28
29
  search = _ref.search,
29
30
  onClick = _ref.onClick,
@@ -44,4 +45,6 @@ function Delete(_ref) {
44
45
  className: "lunatic-combo-box-icon"
45
46
  })
46
47
  });
47
- }
48
+ }
49
+ var ClearButton = (0, _createCustomizableField["default"])(ClearButtonComponent, 'ComboboxClearButton');
50
+ exports.ClearButton = ClearButton;
@@ -3,7 +3,7 @@
3
3
  var _react = require("@testing-library/react");
4
4
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
5
5
  var _vitest = require("vitest");
6
- var _delete = require("./delete");
6
+ var _clearButton = require("./clear-button");
7
7
  var _jsxRuntime = require("react/jsx-runtime");
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
9
  (0, _vitest.describe)('Delete', function () {
@@ -14,13 +14,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
14
14
  onClickMock.mockClear();
15
15
  });
16
16
  (0, _vitest.it)('should not render when editable is false', function () {
17
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
17
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
18
18
  editable: false
19
19
  }));
20
20
  (0, _vitest.expect)(_react.screen.queryByRole('button')).not.toBeInTheDocument();
21
21
  });
22
22
  (0, _vitest.it)('should call onClick when clicked and search is not empty', function () {
23
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
23
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
24
24
  editable: true,
25
25
  search: search,
26
26
  onClick: onClickMock
@@ -29,7 +29,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
29
29
  (0, _vitest.expect)(onClickMock).toHaveBeenCalledTimes(1);
30
30
  });
31
31
  (0, _vitest.it)('should not call onClick when clicked and search is empty', function () {
32
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
32
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
33
33
  editable: true,
34
34
  search: "",
35
35
  onClick: onClickMock
@@ -40,7 +40,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
40
40
  (0, _vitest.it)('should call onClick when the Enter key is pressed and search is not empty', function () {
41
41
  var search = 'test';
42
42
  var onClick = _vitest.vi.fn();
43
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
43
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
44
44
  search: search,
45
45
  onClick: onClick,
46
46
  editable: true
@@ -52,7 +52,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
52
52
  (0, _vitest.expect)(onClick).toHaveBeenCalledTimes(1);
53
53
  });
54
54
  (0, _vitest.it)('should not call onClick when the Enter key is pressed and search is empty', function () {
55
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
55
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
56
56
  editable: true,
57
57
  search: "",
58
58
  onClick: onClickMock
@@ -61,7 +61,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
61
61
  (0, _vitest.expect)(onClickMock).toHaveBeenCalledTimes(0);
62
62
  });
63
63
  (0, _vitest.it)('should apply the className prop', function () {
64
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
64
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
65
65
  className: className,
66
66
  editable: true,
67
67
  search: search,
@@ -70,7 +70,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
70
70
  (0, _vitest.expect)(_react.screen.getByRole('button')).toHaveClass(className);
71
71
  });
72
72
  (0, _vitest.it)('should be disabled when search is empty', function () {
73
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
73
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
74
74
  editable: true,
75
75
  search: "",
76
76
  onClick: onClickMock
@@ -78,7 +78,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
78
78
  (0, _vitest.expect)(_react.screen.getByRole('button')).toBeDisabled();
79
79
  });
80
80
  (0, _vitest.it)('should not be disabled when search is not empty', function () {
81
- (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.Delete, {
81
+ (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_clearButton.ClearButton, {
82
82
  editable: true,
83
83
  search: search,
84
84
  onClick: onClickMock
@@ -0,0 +1,47 @@
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 _createCustomizableField = _interopRequireDefault(require("../../../create-customizable-field"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+ function isPlaceholder(option, search) {
12
+ return !option && (!search || search.length === 0);
13
+ }
14
+ function getContent(option, search, placeholder) {
15
+ if (option) {
16
+ var id = option.id,
17
+ value = option.value,
18
+ label = option.label;
19
+ return label ? "".concat(id || value, " - ").concat(label) : id || value;
20
+ }
21
+ if (search && search.trim().length) {
22
+ return search;
23
+ }
24
+ return placeholder !== null && placeholder !== void 0 ? placeholder : '';
25
+ }
26
+ function ComboBoxLabelSelection(_ref) {
27
+ var option = _ref.option,
28
+ placeholder = _ref.placeholder,
29
+ search = _ref.search,
30
+ _ref$disabled = _ref.disabled,
31
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled;
32
+ var isPh = isPlaceholder(option, search);
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
34
+ className: (0, _classnames["default"])('lunatic-combo-box-selected', {
35
+ disabled: disabled
36
+ }),
37
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
38
+ className: (0, _classnames["default"])({
39
+ placeholder: isPh,
40
+ selection: !isPh
41
+ }),
42
+ children: getContent(option, search, placeholder)
43
+ })
44
+ });
45
+ }
46
+ var _default = (0, _createCustomizableField["default"])(ComboBoxLabelSelection, 'ComboboxLabelSelection');
47
+ exports["default"] = _default;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _react = _interopRequireDefault(require("react"));
4
4
  var _react2 = require("@testing-library/react");
5
- var _defaultLabelRenderer = _interopRequireDefault(require("./default-label-renderer"));
5
+ var _comboBoxLabelSelection = _interopRequireDefault(require("./combo-box-label-selection"));
6
6
  var _vitest = require("vitest");
7
7
  var _jsxRuntime = require("react/jsx-runtime");
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -14,7 +14,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
14
14
  label: 'Label'
15
15
  };
16
16
  (0, _vitest.it)('should render with selected option', function () {
17
- var _render = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_defaultLabelRenderer["default"], {
17
+ var _render = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_comboBoxLabelSelection["default"], {
18
18
  option: option,
19
19
  placeholder: "Select an option"
20
20
  })),
@@ -23,7 +23,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
23
23
  (0, _vitest.expect)(getByText(expectedContent)).toBeInTheDocument();
24
24
  });
25
25
  (0, _vitest.it)('should render with placeholder', function () {
26
- var _render2 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_defaultLabelRenderer["default"], {
26
+ var _render2 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_comboBoxLabelSelection["default"], {
27
27
  option: null,
28
28
  placeholder: "Select an option"
29
29
  })),
@@ -31,7 +31,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
31
31
  (0, _vitest.expect)(getByText('Select an option')).toBeInTheDocument();
32
32
  });
33
33
  (0, _vitest.it)('should render with search value', function () {
34
- var _render3 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_defaultLabelRenderer["default"], {
34
+ var _render3 = (0, _react2.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_comboBoxLabelSelection["default"], {
35
35
  option: null,
36
36
  search: "Search value",
37
37
  placeholder: "Select an option"
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _displayLabelOrInput = require("./displayLabelOrInput");
10
+ var _createCustomizableField = _interopRequireDefault(require("../../../create-customizable-field"));
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
13
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -52,5 +52,5 @@ function Input(_ref) {
52
52
  onKeyDown: onKeydown
53
53
  });
54
54
  }
55
- var _default = (0, _displayLabelOrInput.displayLabelOrInput)(Input, 'Input');
55
+ var _default = (0, _createCustomizableField["default"])(Input, 'ComboboxInput');
56
56
  exports["default"] = _default;
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.LabelSelection = LabelSelection;
7
7
  exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _classnames = _interopRequireDefault(require("classnames"));
10
- var _displayLabelOrInput = require("./displayLabelOrInput");
9
+ var _comboBoxLabelSelection = _interopRequireDefault(require("./combo-box-label-selection"));
11
10
  var _jsxRuntime = require("react/jsx-runtime");
12
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
12
  function LabelSelection(_ref) {
@@ -18,16 +17,13 @@ function LabelSelection(_ref) {
18
17
  search = _ref.search,
19
18
  disabled = _ref.disabled;
20
19
  var option = selectedIndex !== undefined ? options[selectedIndex] : undefined;
21
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
22
- className: (0, _classnames["default"])('lunatic-combo-box-selected', {
23
- disabled: disabled
24
- }),
25
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Renderer, {
26
- option: option,
27
- placeholder: placeholder,
28
- search: search
29
- })
20
+ var LabelSelectionComponent = Renderer !== null && Renderer !== void 0 ? Renderer : _comboBoxLabelSelection["default"];
21
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(LabelSelectionComponent, {
22
+ option: option,
23
+ placeholder: placeholder,
24
+ search: search,
25
+ disabled: disabled
30
26
  });
31
27
  }
32
- var _default = (0, _displayLabelOrInput.displayLabelOrInput)(LabelSelection, 'LabelSelection');
28
+ var _default = LabelSelection;
33
29
  exports["default"] = _default;
@@ -16,15 +16,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
16
16
  label: 'Option 3',
17
17
  value: 'banana'
18
18
  }];
19
- var LabelRenderer = function LabelRenderer(props) {
20
- var _props$option$label, _props$option;
21
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
22
- children: (_props$option$label = (_props$option = props.option) === null || _props$option === void 0 ? void 0 : _props$option.label) !== null && _props$option$label !== void 0 ? _props$option$label : 'Unknown'
23
- });
24
- };
25
19
  (0, _vitest.it)('should render the labelRenderer when expanded is true and editable is false', function () {
26
20
  var _render = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_labelSelection["default"], {
27
- labelRenderer: LabelRenderer,
28
21
  selectedIndex: 0,
29
22
  options: options,
30
23
  placeholder: "Select an option...",
@@ -32,18 +25,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
32
25
  disabled: false
33
26
  })),
34
27
  getByText = _render.getByText;
35
- (0, _vitest.expect)(getByText('Option 1')).toBeInTheDocument();
28
+ (0, _vitest.expect)(getByText('apple - Option 1')).toBeInTheDocument();
36
29
  });
37
30
  (0, _vitest.it)('should add the disabled class when disabled is true', function () {
38
31
  var _render2 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_labelSelection["default"], {
39
- labelRenderer: LabelRenderer,
40
32
  selectedIndex: 0,
41
33
  options: options,
42
34
  placeholder: "Select an option...",
43
35
  search: "search term",
44
36
  disabled: true
45
37
  })),
46
- container = _render2.container;
47
- (0, _vitest.expect)(container.firstChild).toHaveClass('disabled');
38
+ getByText = _render2.getByText;
39
+ (0, _vitest.expect)(getByText('apple - Option 1').parentElement).toHaveClass('disabled');
48
40
  });
49
41
  });
@@ -5,9 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Selection = Selection;
7
7
  var _react = require("react");
8
- var _labelSelection = require("./label-selection");
9
- var _input = _interopRequireDefault(require("./input"));
10
8
  var _selectionContainer = _interopRequireDefault(require("./selection-container"));
9
+ var _LabelOrInput = require("./LabelOrInput");
11
10
  var _jsxRuntime = require("react/jsx-runtime");
12
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
12
  function Selection(_ref) {
@@ -26,28 +25,23 @@ function Selection(_ref) {
26
25
  var onChangeEx = (0, _react.useCallback)(function (e) {
27
26
  onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value);
28
27
  }, [onChange]);
29
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_selectionContainer["default"], {
28
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_selectionContainer["default"], {
30
29
  id: id,
31
30
  labelId: labelId,
32
31
  expanded: expanded,
33
32
  "aria-owns": "".concat(id, "-list"),
34
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_labelSelection.LabelSelection, {
33
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LabelOrInput.LabelOrInput, {
35
34
  labelRenderer: labelRenderer,
36
35
  placeholder: placeholder,
37
36
  selectedIndex: selectedIndex,
38
37
  options: options,
39
38
  search: search,
40
- disabled: disabled
41
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_input["default"], {
42
- id: "combobox-input-".concat(id),
43
- className: "lunatic-combo-box-input",
39
+ disabled: disabled,
44
40
  onChange: onChangeEx,
45
41
  value: search,
46
- placeholder: placeholder,
47
- disabled: disabled,
48
42
  focused: focused,
49
43
  editable: editable,
50
44
  expanded: expanded
51
- })]
45
+ })
52
46
  });
53
47
  }
@@ -15,15 +15,8 @@ var options = [{
15
15
  value: 'banana'
16
16
  }];
17
17
  (0, _vitest.describe)('Selection component', function () {
18
- var LabelRenderer = function LabelRenderer(_ref) {
19
- var option = _ref.option;
20
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
21
- children: option ? option.label : 'No selection'
22
- });
23
- };
24
18
  (0, _vitest.it)('should render correctly with default props', function () {
25
19
  var _render = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_selection.Selection, {
26
- labelRenderer: LabelRenderer,
27
20
  options: options
28
21
  })),
29
22
  container = _render.container;
@@ -31,7 +24,6 @@ var options = [{
31
24
  });
32
25
  (0, _vitest.it)('should render correctly when it is editable', function () {
33
26
  var _render2 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_selection.Selection, {
34
- labelRenderer: LabelRenderer,
35
27
  options: options,
36
28
  editable: true
37
29
  })),
@@ -40,7 +32,6 @@ var options = [{
40
32
  });
41
33
  (0, _vitest.it)('should render correctly when it is expanded', function () {
42
34
  var _render3 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_selection.Selection, {
43
- labelRenderer: LabelRenderer,
44
35
  options: options,
45
36
  expanded: true
46
37
  })),
@@ -49,40 +40,24 @@ var options = [{
49
40
  });
50
41
  (0, _vitest.it)('should render correctly when it is disabled', function () {
51
42
  var _render4 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_selection.Selection, {
52
- labelRenderer: function labelRenderer(_ref2) {
53
- var option = _ref2.option;
54
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
55
- children: option ? option.label : 'No selection'
56
- });
57
- },
58
43
  options: options,
59
- disabled: true
44
+ disabled: true,
45
+ placeholder: "hello!"
60
46
  })),
61
47
  container = _render4.container;
62
48
  (0, _vitest.expect)(container.firstChild).toMatchSnapshot();
63
49
  });
64
50
  (0, _vitest.it)('should render the selected option when there is a selection', function () {
65
51
  var _render5 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_selection.Selection, {
66
- labelRenderer: function labelRenderer(_ref3) {
67
- var option = _ref3.option;
68
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
69
- children: option ? option.label : 'No selection'
70
- });
71
- },
72
52
  options: options,
73
- selectedIndex: 0
53
+ selectedIndex: 0,
54
+ expanded: false
74
55
  })),
75
56
  getByText = _render5.getByText;
76
- (0, _vitest.expect)(getByText('Apple')).toBeInTheDocument();
57
+ (0, _vitest.expect)(getByText('apple - Apple')).toBeInTheDocument();
77
58
  });
78
59
  (0, _vitest.it)('should not render the input when it is not editable', function () {
79
60
  var _render6 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_selection.Selection, {
80
- labelRenderer: function labelRenderer(_ref4) {
81
- var option = _ref4.option;
82
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
83
- children: option ? option.label : 'No selection'
84
- });
85
- },
86
61
  options: options,
87
62
  placeholder: "Search fruits",
88
63
  editable: false