@elliemae/ds-pills 2.2.0-alpha.2 → 2.2.0-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.
Files changed (133) hide show
  1. package/cjs/components/Pill.js +49 -56
  2. package/cjs/components/PillButton.js +52 -54
  3. package/cjs/components/PillGroup.js +53 -61
  4. package/cjs/components/index.js +17 -30
  5. package/cjs/components/styled.js +78 -228
  6. package/cjs/components/types/DropdownPill.js +77 -79
  7. package/cjs/components/types/InputPill.js +48 -58
  8. package/cjs/components/types/LabelPill.js +38 -44
  9. package/cjs/components/types/ReadOnlyPill.js +43 -48
  10. package/cjs/components/types/RemovablePill.js +53 -60
  11. package/cjs/components/types/ValuePill.js +43 -48
  12. package/cjs/components/types/index.js +19 -33
  13. package/cjs/deprecated/DropdownPill.js +101 -80
  14. package/cjs/deprecated/InputPill.js +69 -67
  15. package/cjs/deprecated/LabeledDropdownPills.js +96 -92
  16. package/cjs/deprecated/LabeledDropdownPillsTypes/LabeledDropdownCascadeMenuPill.js +94 -91
  17. package/cjs/deprecated/LabeledDropdownPillsTypes/LabeledDropdownMultiPill.js +114 -106
  18. package/cjs/deprecated/LabeledDropdownPillsTypes/LabeledDropdownSinglePill.js +127 -119
  19. package/cjs/deprecated/LabeledDropdownPillsTypes/utils.js +15 -39
  20. package/cjs/deprecated/LabeledPills.js +52 -65
  21. package/cjs/deprecated/OverflowPill.js +53 -59
  22. package/cjs/deprecated/Pill.js +82 -67
  23. package/cjs/deprecated/PillGroup.js +68 -68
  24. package/cjs/deprecated/ReadOnlyPill.js +94 -93
  25. package/cjs/deprecated/RemovablePill.js +57 -61
  26. package/cjs/deprecated/index.js +33 -43
  27. package/cjs/index.d.js +2 -27
  28. package/cjs/index.js +43 -37
  29. package/cjs/props.js +46 -72
  30. package/cjs/utils.js +25 -43
  31. package/esm/components/Pill.js +31 -18
  32. package/esm/components/PillButton.js +39 -22
  33. package/esm/components/PillGroup.js +38 -28
  34. package/esm/components/index.js +3 -5
  35. package/esm/components/styled.js +66 -205
  36. package/esm/components/types/DropdownPill.js +67 -50
  37. package/esm/components/types/InputPill.js +35 -25
  38. package/esm/components/types/LabelPill.js +29 -15
  39. package/esm/components/types/ReadOnlyPill.js +34 -19
  40. package/esm/components/types/RemovablePill.js +44 -31
  41. package/esm/components/types/ValuePill.js +34 -19
  42. package/esm/components/types/index.js +6 -8
  43. package/esm/deprecated/DropdownPill.js +86 -49
  44. package/esm/deprecated/InputPill.js +59 -38
  45. package/esm/deprecated/LabeledDropdownPills.js +81 -59
  46. package/esm/deprecated/LabeledDropdownPillsTypes/LabeledDropdownCascadeMenuPill.js +84 -60
  47. package/esm/deprecated/LabeledDropdownPillsTypes/LabeledDropdownMultiPill.js +94 -65
  48. package/esm/deprecated/LabeledDropdownPillsTypes/LabeledDropdownSinglePill.js +108 -79
  49. package/esm/deprecated/LabeledDropdownPillsTypes/utils.js +10 -9
  50. package/esm/deprecated/LabeledPills.js +41 -34
  51. package/esm/deprecated/OverflowPill.js +37 -25
  52. package/esm/deprecated/Pill.js +71 -39
  53. package/esm/deprecated/PillGroup.js +56 -39
  54. package/esm/deprecated/ReadOnlyPill.js +79 -60
  55. package/esm/deprecated/RemovablePill.js +45 -30
  56. package/esm/deprecated/index.js +8 -14
  57. package/esm/index.d.js +1 -2
  58. package/esm/index.js +11 -8
  59. package/esm/props.js +36 -42
  60. package/esm/utils.js +23 -16
  61. package/package.json +15 -15
  62. package/types/components/PillGroup.d.ts +1 -1
  63. package/types/deprecated/DropdownPill.d.ts +1 -10
  64. package/types/deprecated/LabeledDropdownPills.d.ts +1 -12
  65. package/types/deprecated/LabeledDropdownPillsTypes/LabeledDropdownCascadeMenuPill.d.ts +1 -3
  66. package/types/deprecated/LabeledDropdownPillsTypes/LabeledDropdownMultiPill.d.ts +1 -3
  67. package/types/deprecated/LabeledDropdownPillsTypes/LabeledDropdownSinglePill.d.ts +0 -1
  68. package/types/deprecated/LabeledPills.d.ts +1 -8
  69. package/types/deprecated/OverflowPill.d.ts +1 -5
  70. package/types/deprecated/Pill.d.ts +1 -9
  71. package/types/deprecated/PillGroup.d.ts +1 -7
  72. package/types/deprecated/ReadOnlyPill.d.ts +1 -8
  73. package/types/deprecated/RemovablePill.d.ts +1 -7
  74. package/cjs/components/Pill.js.map +0 -7
  75. package/cjs/components/PillButton.js.map +0 -7
  76. package/cjs/components/PillGroup.js.map +0 -7
  77. package/cjs/components/index.js.map +0 -7
  78. package/cjs/components/styled.js.map +0 -7
  79. package/cjs/components/types/DropdownPill.js.map +0 -7
  80. package/cjs/components/types/InputPill.js.map +0 -7
  81. package/cjs/components/types/LabelPill.js.map +0 -7
  82. package/cjs/components/types/ReadOnlyPill.js.map +0 -7
  83. package/cjs/components/types/RemovablePill.js.map +0 -7
  84. package/cjs/components/types/ValuePill.js.map +0 -7
  85. package/cjs/components/types/index.js.map +0 -7
  86. package/cjs/deprecated/DropdownPill.js.map +0 -7
  87. package/cjs/deprecated/InputPill.js.map +0 -7
  88. package/cjs/deprecated/LabeledDropdownPills.js.map +0 -7
  89. package/cjs/deprecated/LabeledDropdownPillsTypes/LabeledDropdownCascadeMenuPill.js.map +0 -7
  90. package/cjs/deprecated/LabeledDropdownPillsTypes/LabeledDropdownMultiPill.js.map +0 -7
  91. package/cjs/deprecated/LabeledDropdownPillsTypes/LabeledDropdownSinglePill.js.map +0 -7
  92. package/cjs/deprecated/LabeledDropdownPillsTypes/utils.js.map +0 -7
  93. package/cjs/deprecated/LabeledPills.js.map +0 -7
  94. package/cjs/deprecated/OverflowPill.js.map +0 -7
  95. package/cjs/deprecated/Pill.js.map +0 -7
  96. package/cjs/deprecated/PillGroup.js.map +0 -7
  97. package/cjs/deprecated/ReadOnlyPill.js.map +0 -7
  98. package/cjs/deprecated/RemovablePill.js.map +0 -7
  99. package/cjs/deprecated/index.js.map +0 -7
  100. package/cjs/index.d.js.map +0 -7
  101. package/cjs/index.js.map +0 -7
  102. package/cjs/props.js.map +0 -7
  103. package/cjs/utils.js.map +0 -7
  104. package/esm/components/Pill.js.map +0 -7
  105. package/esm/components/PillButton.js.map +0 -7
  106. package/esm/components/PillGroup.js.map +0 -7
  107. package/esm/components/index.js.map +0 -7
  108. package/esm/components/styled.js.map +0 -7
  109. package/esm/components/types/DropdownPill.js.map +0 -7
  110. package/esm/components/types/InputPill.js.map +0 -7
  111. package/esm/components/types/LabelPill.js.map +0 -7
  112. package/esm/components/types/ReadOnlyPill.js.map +0 -7
  113. package/esm/components/types/RemovablePill.js.map +0 -7
  114. package/esm/components/types/ValuePill.js.map +0 -7
  115. package/esm/components/types/index.js.map +0 -7
  116. package/esm/deprecated/DropdownPill.js.map +0 -7
  117. package/esm/deprecated/InputPill.js.map +0 -7
  118. package/esm/deprecated/LabeledDropdownPills.js.map +0 -7
  119. package/esm/deprecated/LabeledDropdownPillsTypes/LabeledDropdownCascadeMenuPill.js.map +0 -7
  120. package/esm/deprecated/LabeledDropdownPillsTypes/LabeledDropdownMultiPill.js.map +0 -7
  121. package/esm/deprecated/LabeledDropdownPillsTypes/LabeledDropdownSinglePill.js.map +0 -7
  122. package/esm/deprecated/LabeledDropdownPillsTypes/utils.js.map +0 -7
  123. package/esm/deprecated/LabeledPills.js.map +0 -7
  124. package/esm/deprecated/OverflowPill.js.map +0 -7
  125. package/esm/deprecated/Pill.js.map +0 -7
  126. package/esm/deprecated/PillGroup.js.map +0 -7
  127. package/esm/deprecated/ReadOnlyPill.js.map +0 -7
  128. package/esm/deprecated/RemovablePill.js.map +0 -7
  129. package/esm/deprecated/index.js.map +0 -7
  130. package/esm/index.d.js.map +0 -7
  131. package/esm/index.js.map +0 -7
  132. package/esm/props.js.map +0 -7
  133. package/esm/utils.js.map +0 -7
@@ -1,131 +1,134 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __reExport = (target, module2, copyDefault, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
- }
18
- return target;
19
- };
20
- var __toESM = (module2, isNodeMode) => {
21
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
- };
23
- var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
- return (module2, temp) => {
25
- return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
- };
27
- })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
- var LabeledDropdownCascadeMenuPill_exports = {};
29
- __export(LabeledDropdownCascadeMenuPill_exports, {
30
- LabeledDropdownCascadeMenuPill: () => LabeledDropdownCascadeMenuPill,
31
- default: () => LabeledDropdownCascadeMenuPill_default
32
- });
33
- var React = __toESM(require("react"));
34
- var import_react = __toESM(require("react"));
35
- var import_ds_utilities = __toESM(require("@elliemae/ds-utilities"));
36
- var import_PillGroup = __toESM(require("../PillGroup"));
37
- var import_RemovablePill = __toESM(require("../RemovablePill"));
38
- var import_DropdownPill = __toESM(require("../DropdownPill"));
1
+ 'use strict';
2
+
3
+ var _jsx = require('@babel/runtime/helpers/jsx');
4
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
+ require('core-js/modules/esnext.async-iterator.map.js');
7
+ require('core-js/modules/esnext.iterator.map.js');
8
+ require('core-js/modules/web.dom-collections.iterator.js');
9
+ require('core-js/modules/esnext.async-iterator.filter.js');
10
+ require('core-js/modules/esnext.iterator.constructor.js');
11
+ require('core-js/modules/esnext.iterator.filter.js');
12
+ require('core-js/modules/esnext.async-iterator.for-each.js');
13
+ require('core-js/modules/esnext.iterator.for-each.js');
14
+ var React = require('react');
15
+ var dsUtilities = require('@elliemae/ds-utilities');
16
+ var PillGroup = require('../PillGroup.js');
17
+ var RemovablePill = require('../RemovablePill.js');
18
+ var DropdownPill = require('../DropdownPill.js');
19
+ var jsxRuntime = require('react/jsx-runtime');
20
+
21
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
+
23
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
24
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
25
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
26
+
27
+ const _excluded = ["label", "options", "value", "onChange", "onRemove", "value", "placeholder", "onFocusNextGroup", "onFocusPreviousGroup", "onFocusGroupSet", "maxWidth", "minWidth"];
28
+
29
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30
+
31
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
32
+
39
33
  function renderMenuItems(options, factory) {
40
34
  return options.map((option, index) => {
41
- const ItemComponent = factory("radio");
42
- if (option.type === "submenu") {
43
- const SubmenuComponent = factory("submenu");
44
- const ChildComponent = factory("selection-group");
45
- return /* @__PURE__ */ import_react.default.createElement(SubmenuComponent, {
46
- ...option,
35
+ const ItemComponent = factory('radio');
36
+
37
+ if (option.type === 'submenu') {
38
+ const SubmenuComponent = factory('submenu');
39
+ const ChildComponent = factory('selection-group');
40
+ return /*#__PURE__*/React.createElement(SubmenuComponent, _objectSpread(_objectSpread({}, option), {}, {
47
41
  key: option.id,
48
42
  item: option
49
- }, /* @__PURE__ */ import_react.default.createElement(ChildComponent, {
50
- ...option,
43
+ }), /*#__PURE__*/jsxRuntime.jsx(ChildComponent, _objectSpread(_objectSpread({}, option), {}, {
51
44
  id: option.id,
52
45
  item: option,
53
46
  items: option.items,
54
- itemValueAccessor: (item) => item,
47
+ itemValueAccessor: item => item,
55
48
  multi: true
56
- }));
49
+ })));
57
50
  }
58
- return /* @__PURE__ */ import_react.default.createElement(ItemComponent, {
59
- ...option,
51
+
52
+ return /*#__PURE__*/React.createElement(ItemComponent, _objectSpread(_objectSpread({}, option), {}, {
60
53
  key: option.id || index,
61
54
  item: option
62
- });
55
+ }));
63
56
  });
64
57
  }
58
+
65
59
  const getSubmenuOptionLabelById = (options, id) => {
66
- const index = options.findIndex((option) => option.id === id);
67
- return index ? options[index].label : "";
60
+ const index = options.findIndex(option => option.id === id);
61
+ return index ? options[index].label : '';
68
62
  };
69
- function LabeledDropdownCascadeMenuPill({
70
- label,
71
- options,
72
- value: optionValue,
73
- onChange,
74
- onRemove,
75
- value: selection = {},
76
- placeholder = "---",
77
- onFocusNextGroup,
78
- onFocusPreviousGroup,
79
- onFocusGroupSet,
80
- maxWidth,
81
- minWidth,
82
- ...menuProps
83
- }) {
63
+
64
+ function LabeledDropdownCascadeMenuPill(_ref) {
65
+ let {
66
+ label,
67
+ options,
68
+ value: optionValue,
69
+ onChange,
70
+ onRemove,
71
+ value: selection = {},
72
+ placeholder = '---',
73
+ onFocusNextGroup,
74
+ onFocusPreviousGroup,
75
+ onFocusGroupSet,
76
+ maxWidth,
77
+ minWidth
78
+ } = _ref,
79
+ menuProps = _objectWithoutProperties__default["default"](_ref, _excluded);
80
+
84
81
  const selectionId = Object.keys(selection)[0];
85
- const selectionValues = selection[selectionId] || "";
82
+ const selectionValues = selection[selectionId] || '';
86
83
  const dropdownLabel = Array.isArray(selectionValues) ? getSubmenuOptionLabelById(options, selectionId) : selectionValues;
87
- const handleSelectChange = ({ item, group }) => {
88
- if ((0, import_ds_utilities.isFunction)(onChange)) {
84
+
85
+ const handleSelectChange = _ref2 => {
86
+ let {
87
+ item,
88
+ group
89
+ } = _ref2;
90
+
91
+ if (dsUtilities.isFunction(onChange)) {
89
92
  const nextSelection = group ? {
90
- [group.id]: (0, import_ds_utilities.addOrRemove)([...selection[group.id] || []], item, (o) => o.id)
93
+ [group.id]: dsUtilities.addOrRemove([...(selection[group.id] || [])], item, o => o.id)
91
94
  } : {
92
95
  [item.id]: item.label
93
96
  };
94
97
  onChange(nextSelection);
95
98
  }
96
99
  };
97
- const removeOption = (option) => {
98
- if ((0, import_ds_utilities.isFunction)(onChange)) {
100
+
101
+ const removeOption = option => {
102
+ if (dsUtilities.isFunction(onChange)) {
99
103
  const nextSelection = {
100
- [selectionId]: selectionValues.filter((val) => option.id !== val.id)
104
+ [selectionId]: selectionValues.filter(val => option.id !== val.id)
101
105
  };
102
106
  onChange(nextSelection);
103
107
  }
108
+
104
109
  onRemove(option);
105
110
  };
106
- return /* @__PURE__ */ import_react.default.createElement(import_PillGroup.PillGroup, {
107
- onFocusGroupSet,
108
- onFocusNextGroup,
109
- onFocusPreviousGroup
110
- }, /* @__PURE__ */ import_react.default.createElement(import_DropdownPill.DropdownPill, {
111
- ...menuProps,
111
+
112
+ return /*#__PURE__*/_jsx__default["default"](PillGroup.PillGroup, {
113
+ onFocusGroupSet: onFocusGroupSet,
114
+ onFocusNextGroup: onFocusNextGroup,
115
+ onFocusPreviousGroup: onFocusPreviousGroup
116
+ }, void 0, /*#__PURE__*/jsxRuntime.jsx(DropdownPill.DropdownPill, _objectSpread(_objectSpread({}, menuProps), {}, {
112
117
  itemsRenderer: renderMenuItems,
113
118
  label: dropdownLabel || placeholder,
114
- maxWidth,
115
- minWidth,
119
+ maxWidth: maxWidth,
120
+ minWidth: minWidth,
116
121
  onSelectChange: handleSelectChange,
117
- options,
122
+ options: options,
118
123
  selection: {
119
- [selectionId]: Array.isArray(selectionValues) ? selectionValues.map((v) => v.id) : selectionValues
124
+ [selectionId]: Array.isArray(selectionValues) ? selectionValues.map(v => v.id) : selectionValues
120
125
  },
121
126
  singleGroupSelection: true,
122
127
  variant: "title"
123
- }), Array.isArray(selectionValues) && selectionValues.map((option) => /* @__PURE__ */ import_react.default.createElement(import_RemovablePill.RemovablePill, {
124
- key: option.id,
128
+ })), Array.isArray(selectionValues) && selectionValues.map(option => /*#__PURE__*/_jsx__default["default"](RemovablePill.RemovablePill, {
125
129
  label: option.label,
126
130
  onRemove: () => removeOption(option)
127
- })));
131
+ }, option.id)));
128
132
  }
129
- var LabeledDropdownCascadeMenuPill_default = LabeledDropdownCascadeMenuPill;
130
- module.exports = __toCommonJS(LabeledDropdownCascadeMenuPill_exports);
131
- //# sourceMappingURL=LabeledDropdownCascadeMenuPill.js.map
133
+
134
+ module.exports = LabeledDropdownCascadeMenuPill;
@@ -1,145 +1,153 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __reExport = (target, module2, copyDefault, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
- }
18
- return target;
19
- };
20
- var __toESM = (module2, isNodeMode) => {
21
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
- };
23
- var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
- return (module2, temp) => {
25
- return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
- };
27
- })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
- var LabeledDropdownMultiPill_exports = {};
29
- __export(LabeledDropdownMultiPill_exports, {
30
- LabeledDropdownMultiPills: () => LabeledDropdownMultiPills,
31
- default: () => LabeledDropdownMultiPill_default
32
- });
33
- var React = __toESM(require("react"));
34
- var import_react = __toESM(require("react"));
35
- var import_lodash = __toESM(require("lodash"));
36
- var import_ds_utilities = __toESM(require("@elliemae/ds-utilities"));
37
- var import_RemovablePill = __toESM(require("../RemovablePill"));
38
- var import_Pill = __toESM(require("../Pill"));
39
- var import_OverflowPill = __toESM(require("../OverflowPill"));
40
- var import_DropdownPill = __toESM(require("../DropdownPill"));
41
- function LabeledDropdownMultiPills({
42
- label,
43
- options = [],
44
- value = [],
45
- onSelect = () => null,
46
- onRemove = () => null,
47
- onChange,
48
- maxWidth,
49
- minWidth,
50
- ...menuProps
51
- }) {
52
- const [totalDefaultOptions, setTotalDefaultOptions] = (0, import_react.useState)(0);
53
- const [selectedOptions, setSelectedOptions] = (0, import_react.useState)(value);
54
- const [allOptions, setAllOptions] = (0, import_react.useState)(options);
55
- const [overflowOptions, setOverflowOptions] = (0, import_react.useState)([]);
1
+ 'use strict';
2
+
3
+ var _jsx = require('@babel/runtime/helpers/jsx');
4
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
5
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ require('core-js/modules/web.dom-collections.iterator.js');
7
+ require('core-js/modules/esnext.async-iterator.filter.js');
8
+ require('core-js/modules/esnext.iterator.constructor.js');
9
+ require('core-js/modules/esnext.iterator.filter.js');
10
+ require('core-js/modules/esnext.async-iterator.map.js');
11
+ require('core-js/modules/esnext.iterator.map.js');
12
+ require('core-js/modules/esnext.async-iterator.for-each.js');
13
+ require('core-js/modules/esnext.iterator.for-each.js');
14
+ var React = require('react');
15
+ var lodash = require('lodash');
16
+ var dsUtilities = require('@elliemae/ds-utilities');
17
+ var RemovablePill = require('../RemovablePill.js');
18
+ var Pill = require('../Pill.js');
19
+ var OverflowPill = require('../OverflowPill.js');
20
+ var DropdownPill = require('../DropdownPill.js');
21
+ var jsxRuntime = require('react/jsx-runtime');
22
+
23
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
+
25
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
26
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
27
+ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
28
+
29
+ const _excluded = ["label", "options", "value", "onSelect", "onRemove", "onChange", "maxWidth", "minWidth"];
30
+
31
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
32
+
33
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
34
+ function LabeledDropdownMultiPills(_ref) {
35
+ let {
36
+ label,
37
+ options = [],
38
+ value = [],
39
+ onSelect = () => null,
40
+ onRemove = () => null,
41
+ onChange,
42
+ // if this is defined, then it's calculating the next result onSelect or onRemove
43
+ maxWidth,
44
+ minWidth
45
+ } = _ref,
46
+ menuProps = _objectWithoutProperties__default["default"](_ref, _excluded);
47
+
48
+ const [totalDefaultOptions, setTotalDefaultOptions] = React.useState(0);
49
+ const [selectedOptions, setSelectedOptions] = React.useState(value);
50
+ const [allOptions, setAllOptions] = React.useState(options);
51
+ const [overflowOptions, setOverflowOptions] = React.useState([]);
56
52
  const overflowQuantity = 3;
57
- (0, import_react.useEffect)(() => setSelectedOptions(value), [value]);
58
- (0, import_react.useEffect)(() => {
59
- const newOptions = allOptions.filter((option) => option.fixedItem);
53
+ React.useEffect(() => setSelectedOptions(value), [value]);
54
+ React.useEffect(() => {
55
+ const newOptions = allOptions.filter(option => option.fixedItem);
56
+
60
57
  if (newOptions.length > 0) {
61
58
  setSelectedOptions(newOptions);
62
59
  }
60
+
63
61
  setTotalDefaultOptions(newOptions.length);
64
62
  }, []);
65
- (0, import_react.useEffect)(() => {
63
+ React.useEffect(() => {
66
64
  if (totalDefaultOptions) {
67
- const newOptions = allOptions.map((opt) => {
68
- if (selectedOptions.length <= totalDefaultOptions && (0, import_lodash.find)(selectedOptions, { id: opt.id })) {
69
- return { ...opt, fixedItem: true };
65
+ const newOptions = allOptions.map(opt => {
66
+ if (selectedOptions.length <= totalDefaultOptions && lodash.find(selectedOptions, {
67
+ id: opt.id
68
+ })) {
69
+ return _objectSpread(_objectSpread({}, opt), {}, {
70
+ fixedItem: true
71
+ });
70
72
  }
71
- return { ...opt, fixedItem: false };
73
+
74
+ return _objectSpread(_objectSpread({}, opt), {}, {
75
+ fixedItem: false
76
+ });
72
77
  });
73
78
  setAllOptions(newOptions);
74
79
  }
75
80
  }, [onSelect, onRemove, selectedOptions]);
76
- (0, import_react.useEffect)(() => {
81
+ React.useEffect(() => {
77
82
  if (selectedOptions.length > overflowQuantity) {
78
83
  const overflow = selectedOptions.filter((val, index) => index >= overflowQuantity);
79
84
  setOverflowOptions(overflow);
80
85
  }
81
86
  }, [selectedOptions]);
82
- const selectOption = (0, import_react.useCallback)((option) => {
87
+ const selectOption = React.useCallback(option => {
83
88
  if (!option.fixedItem) {
84
- if ((0, import_ds_utilities.isFunction)(onChange)) {
85
- const nextValue = (0, import_ds_utilities.addOrRemove)(selectedOptions, option, (item) => item.id);
89
+ if (dsUtilities.isFunction(onChange)) {
90
+ const nextValue = dsUtilities.addOrRemove(selectedOptions, option, item => item.id);
86
91
  setSelectedOptions(nextValue);
87
92
  onChange(nextValue);
88
93
  }
94
+
89
95
  onSelect(option);
90
96
  }
91
97
  }, [selectedOptions]);
92
- const removeOption = (0, import_react.useCallback)((option) => {
98
+ const removeOption = React.useCallback(option => {
93
99
  if (!option.fixedItem || selectedOptions.length > totalDefaultOptions) {
94
- if ((0, import_ds_utilities.isFunction)(onChange)) {
95
- const nextValue = selectedOptions.filter((val) => option.id !== val.id);
100
+ if (dsUtilities.isFunction(onChange)) {
101
+ const nextValue = selectedOptions.filter(val => option.id !== val.id);
96
102
  setSelectedOptions(nextValue);
97
103
  onChange(nextValue);
98
104
  }
105
+
99
106
  onRemove(option);
100
107
  }
101
108
  }, [selectedOptions]);
109
+
102
110
  const typeOfPill = () => {
103
111
  if (selectedOptions.length > totalDefaultOptions) {
104
- return import_RemovablePill.RemovablePill;
112
+ return RemovablePill.RemovablePill;
105
113
  }
106
- return import_Pill.Pill;
114
+
115
+ return Pill.Pill;
107
116
  };
108
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_DropdownPill.DropdownPill, {
109
- ...menuProps,
110
- focusOnOpen: false,
111
- label,
112
- maxWidth,
113
- minWidth,
114
- onSelectMenuItem: selectOption,
115
- options: [
116
- {
117
- ...menuProps,
118
- type: "SelectionGroup",
119
- id: "multi-selection-views",
117
+
118
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
119
+ children: [/*#__PURE__*/jsxRuntime.jsx(DropdownPill.DropdownPill, _objectSpread(_objectSpread({}, menuProps), {}, {
120
+ focusOnOpen: false,
121
+ label: label,
122
+ maxWidth: maxWidth,
123
+ minWidth: minWidth,
124
+ onSelectMenuItem: selectOption,
125
+ options: [_objectSpread(_objectSpread({}, menuProps), {}, {
126
+ type: 'SelectionGroup',
127
+ id: 'multi-selection-views',
120
128
  multi: true,
121
129
  items: allOptions
130
+ })],
131
+ selection: {
132
+ 'multi-selection-views': selectedOptions ? selectedOptions.map(o => o.id) : ''
133
+ },
134
+ variant: "title"
135
+ })), selectedOptions && selectedOptions.map((option, index) => {
136
+ const TypeOfPill = typeOfPill();
137
+
138
+ if (index < overflowQuantity) {
139
+ return /*#__PURE__*/_jsx__default["default"](TypeOfPill, {
140
+ label: option.label,
141
+ onRemove: () => removeOption(option)
142
+ }, option.id);
122
143
  }
123
- ],
124
- selection: {
125
- "multi-selection-views": selectedOptions ? selectedOptions.map((o) => o.id) : ""
126
- },
127
- variant: "title"
128
- }), selectedOptions && selectedOptions.map((option, index) => {
129
- const TypeOfPill = typeOfPill();
130
- if (index < overflowQuantity) {
131
- return /* @__PURE__ */ import_react.default.createElement(TypeOfPill, {
132
- key: option.id,
133
- label: option.label,
134
- onRemove: () => removeOption(option)
135
- });
136
- }
137
- return null;
138
- }), selectedOptions && selectedOptions.length > overflowQuantity && /* @__PURE__ */ import_react.default.createElement(import_OverflowPill.OverflowPill, {
139
- label: `+ ${selectedOptions.length - overflowQuantity}`,
140
- options: overflowOptions
141
- }));
144
+
145
+ return null;
146
+ }), selectedOptions && selectedOptions.length > overflowQuantity && /*#__PURE__*/_jsx__default["default"](OverflowPill.OverflowPill, {
147
+ label: "+ ".concat(selectedOptions.length - overflowQuantity),
148
+ options: overflowOptions
149
+ })]
150
+ });
142
151
  }
143
- var LabeledDropdownMultiPill_default = LabeledDropdownMultiPills;
144
- module.exports = __toCommonJS(LabeledDropdownMultiPill_exports);
145
- //# sourceMappingURL=LabeledDropdownMultiPill.js.map
152
+
153
+ module.exports = LabeledDropdownMultiPills;