@terraware/web-components 2.1.3 → 2.1.4

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MultiSelect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelect.test.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSelect/MultiSelect.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = require("@testing-library/react");
6
+
7
+ var _react2 = _interopRequireDefault(require("react"));
8
+
9
+ var _ = _interopRequireDefault(require("."));
10
+
11
+ test('show options when placeholder is clicked', function () {
12
+ (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_.default, {
13
+ onAdd: function onAdd() {
14
+ return undefined;
15
+ },
16
+ onRemove: function onRemove() {
17
+ return undefined;
18
+ },
19
+ options: new Map([[1, 'foo'], [2, 'bar'], [3, 'baz']]),
20
+ valueRenderer: function valueRenderer(v) {
21
+ return v;
22
+ },
23
+ selectedOptions: [],
24
+ placeHolder: "Select..."
25
+ })); // we should find the placeholder text
26
+
27
+ var placeHolder = _react.screen.getByText('Select...');
28
+
29
+ expect(placeHolder).toBeInTheDocument(); // we should not find the options yet
30
+
31
+ expect(_react.screen.queryByText('foo')).not.toBeInTheDocument();
32
+ expect(_react.screen.queryByText('bar')).not.toBeInTheDocument();
33
+ expect(_react.screen.queryByText('baz')).not.toBeInTheDocument(); // click the placeholder
34
+
35
+ _react.fireEvent.click(placeHolder); // now the options should be visible
36
+
37
+
38
+ expect(_react.screen.queryByText('foo')).toBeInTheDocument();
39
+ expect(_react.screen.queryByText('bar')).toBeInTheDocument();
40
+ expect(_react.screen.queryByText('baz')).toBeInTheDocument();
41
+ });
42
+ test('clicking an option calls the onAdd handler', function () {
43
+ var handleAdd = jest.fn();
44
+ (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_.default, {
45
+ onAdd: handleAdd,
46
+ onRemove: function onRemove() {
47
+ return undefined;
48
+ },
49
+ options: new Map([[1, 'foo'], [2, 'bar'], [3, 'baz']]),
50
+ valueRenderer: function valueRenderer(v) {
51
+ return v;
52
+ },
53
+ selectedOptions: [],
54
+ placeHolder: "Select..."
55
+ })); // click the dropdown chevron
56
+
57
+ var dropdown = _react.screen.getByLabelText('show-options');
58
+
59
+ _react.fireEvent.click(dropdown); // click one of the options
60
+
61
+
62
+ var option = _react.screen.getByText('bar');
63
+
64
+ _react.fireEvent.click(option); // addHandler should have been called with id 2
65
+
66
+
67
+ expect(handleAdd).toBeCalledWith(2);
68
+ });
69
+ test('clicking the pill remove button calls the onRemove handler', function () {
70
+ var handleRemove = jest.fn();
71
+ (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_.default, {
72
+ onAdd: function onAdd() {
73
+ return undefined;
74
+ },
75
+ onRemove: handleRemove,
76
+ options: new Map([[1, 'foo']]),
77
+ valueRenderer: function valueRenderer(v) {
78
+ return v;
79
+ },
80
+ selectedOptions: [1]
81
+ })); // find a pill with the 'foo' text
82
+
83
+ expect(_react.screen.queryByText('foo')).toBeInTheDocument(); // click the remove button
84
+
85
+ var removeButton = _react.screen.getByLabelText('remove');
86
+
87
+ _react.fireEvent.click(removeButton); // handleRemove should have been called with id 1
88
+
89
+
90
+ expect(handleRemove).toBeCalledWith(1);
91
+ });
@@ -0,0 +1,21 @@
1
+ import './styles.scss';
2
+ import { TooltipProps } from '@mui/material';
3
+ export type MultiSelectProps<K, V> = {
4
+ className?: string;
5
+ fullWidth?: boolean;
6
+ helperText?: string;
7
+ id?: string;
8
+ label?: string;
9
+ missingValuePlaceholder?: string;
10
+ onAdd: (item: K) => void;
11
+ onRemove: (item: K) => void;
12
+ onPillClick?: (item: K) => void;
13
+ options: Map<K, V>;
14
+ pillListClassName?: string;
15
+ placeHolder?: string;
16
+ valueRenderer: (value: V) => string;
17
+ selectedOptions: K[];
18
+ tooltipTitle?: TooltipProps['title'];
19
+ };
20
+ export default function MultiSelect<K, V>(props: MultiSelectProps<K, V>): JSX.Element;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MultiSelect/index.tsx"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAa,YAAY,EAAC,MAAM,eAAe,CAAC;AAIvD,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IACpC,eAAe,EAAE,CAAC,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAyFpF"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = MultiSelect;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ require("./styles.scss");
15
+
16
+ var _IconTooltip = _interopRequireDefault(require("../IconTooltip"));
17
+
18
+ var _material = require("@mui/material");
19
+
20
+ var _Icon = _interopRequireDefault(require("../Icon/Icon"));
21
+
22
+ var _PillList = _interopRequireDefault(require("../PillList"));
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ function MultiSelect(props) {
29
+ var className = props.className,
30
+ fullWidth = props.fullWidth,
31
+ helperText = props.helperText,
32
+ id = props.id,
33
+ label = props.label,
34
+ missingValuePlaceholder = props.missingValuePlaceholder,
35
+ onAdd = props.onAdd,
36
+ onRemove = props.onRemove,
37
+ onPillClick = props.onPillClick,
38
+ options = props.options,
39
+ pillListClassName = props.pillListClassName,
40
+ placeHolder = props.placeHolder,
41
+ valueRenderer = props.valueRenderer,
42
+ selectedOptions = props.selectedOptions,
43
+ tooltipTitle = props.tooltipTitle;
44
+
45
+ var _useState = (0, _react.useState)(false),
46
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
47
+ openedOptions = _useState2[0],
48
+ setOpenedOptions = _useState2[1];
49
+
50
+ var toggleOptions = function toggleOptions() {
51
+ setOpenedOptions(function (isOpen) {
52
+ return !isOpen;
53
+ });
54
+ };
55
+
56
+ var closeOptions = function closeOptions() {
57
+ setOpenedOptions(false);
58
+ };
59
+
60
+ var unselectedOptions = Array.from(options.keys()).filter(function (key) {
61
+ return !selectedOptions.includes(key);
62
+ });
63
+ var valuesPillData = selectedOptions.map(function (item) {
64
+ var value = options.get(item);
65
+ return {
66
+ id: item,
67
+ value: value ? valueRenderer(value) : missingValuePlaceholder || ''
68
+ };
69
+ }).filter(function (data) {
70
+ return data.value;
71
+ });
72
+ return /*#__PURE__*/_react.default.createElement("div", {
73
+ className: "multi-select ".concat(className)
74
+ }, label && /*#__PURE__*/_react.default.createElement("label", {
75
+ htmlFor: id,
76
+ className: "multi-select__label"
77
+ }, label, " ", tooltipTitle && /*#__PURE__*/_react.default.createElement(_IconTooltip.default, {
78
+ title: tooltipTitle
79
+ })), /*#__PURE__*/_react.default.createElement("div", {
80
+ className: "multi-select__container ".concat(fullWidth ? 'multi-select__container--fullWidth' : ''),
81
+ onBlur: closeOptions,
82
+ tabIndex: 0
83
+ }, /*#__PURE__*/_react.default.createElement("div", {
84
+ id: id,
85
+ className: "multi-select__values",
86
+ onClick: toggleOptions
87
+ }, selectedOptions.length > 0 ? /*#__PURE__*/_react.default.createElement(_PillList.default, {
88
+ data: valuesPillData,
89
+ onRemove: onRemove,
90
+ onClick: onPillClick,
91
+ className: pillListClassName
92
+ }) : /*#__PURE__*/_react.default.createElement("p", {
93
+ className: "multi-select__placeholder-text"
94
+ }, placeHolder), /*#__PURE__*/_react.default.createElement(_material.IconButton, {
95
+ className: 'multi-select__values__icon-button',
96
+ "aria-label": "show-options"
97
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
98
+ name: openedOptions ? 'chevronUp' : 'chevronDown',
99
+ className: "multi-select__values__icon-right"
100
+ }))), options && unselectedOptions.length > 0 && openedOptions && /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "multi-select__options-container"
102
+ }, /*#__PURE__*/_react.default.createElement("ul", {
103
+ className: 'multi-select__options'
104
+ }, unselectedOptions.map(function (optionKey, index) {
105
+ var optionValue = options.get(optionKey);
106
+ return /*#__PURE__*/_react.default.createElement("li", {
107
+ key: index,
108
+ className: "select-value",
109
+ onClick: function onClick() {
110
+ return onAdd(optionKey);
111
+ }
112
+ }, optionValue ? valueRenderer(optionValue) : missingValuePlaceholder || '');
113
+ })))), helperText && /*#__PURE__*/_react.default.createElement("label", {
114
+ htmlFor: id,
115
+ className: "multi-select__help-text"
116
+ }, helperText));
117
+ }
@@ -0,0 +1,124 @@
1
+ @import '../../style-dictionary-dist/terraware.scss';
2
+
3
+ @font-face {
4
+ font-family: 'Inter';
5
+ src: local('Inter'), url(../../fonts/Inter.ttf) format('truetype');
6
+ }
7
+
8
+ .multi-select {
9
+ display: flex;
10
+ flex-direction: column;
11
+
12
+ .multi-select__container {
13
+ position: relative;
14
+ width: 228px;
15
+ cursor: pointer;
16
+
17
+ &--fullWidth {
18
+ position: relative;
19
+ width: 100%;
20
+ cursor: pointer;
21
+ }
22
+ }
23
+
24
+ .multi-select__label {
25
+ font-family: $tw-fnt-frm-fld-label-font-family;
26
+ font-size: $tw-fnt-frm-fld-label-font-size;
27
+ font-weight: $tw-fnt-frm-fld-label-font-weight;
28
+ line-height: $tw-fnt-frm-fld-label-line-height;
29
+ color: $tw-clr-txt-secondary;
30
+ margin-bottom: $tw-spc-base-xx-small;
31
+ display: block;
32
+ width: 100%;
33
+ max-width: 100%;
34
+ }
35
+
36
+ .multi-select__help-text {
37
+ font-family: $tw-fnt-frm-fld-help-text-font-family;
38
+ font-size: $tw-fnt-frm-fld-help-text-font-size;
39
+ font-weight: $tw-fnt-frm-fld-help-text-font-weight;
40
+ line-height: $tw-fnt-frm-fld-help-text-line-height;
41
+ color: $tw-clr-txt-secondary;
42
+ display: block;
43
+ width: 100%;
44
+ max-width: 100%;
45
+ margin-top: $tw-spc-base-xx-small;
46
+ }
47
+
48
+ .multi-select__placeholder-text {
49
+ font-family: $tw-fnt-frm-fld-text-value-font-family;
50
+ font-size: $tw-fnt-frm-fld-text-value-font-size;
51
+ font-weight: $tw-fnt-frm-fld-text-value-font-weight;
52
+ line-height: $tw-fnt-frm-fld-text-value-line-height;
53
+ color: $tw-clr-txt;
54
+ margin: 0;
55
+ }
56
+
57
+ .multi-select__values {
58
+ background-color: $tw-clr-bg;
59
+ border: $tw-sz-frm-fld-text-input-stroke solid $tw-clr-brdr-secondary;
60
+ padding: #{$tw-spc-base-x-small - $tw-sz-frm-fld-text-input-stroke};
61
+ border-radius: $tw-sz-base-x-small;
62
+ border-width: $tw-sz-frm-fld-text-input-stroke;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: space-between;
66
+
67
+ &__icon-button {
68
+ width: fit-content;
69
+ height: fit-content;
70
+ padding: 0;
71
+ }
72
+
73
+ &__icon-right {
74
+ width: $tw-fnt-frm-fld-text-value-line-height;
75
+ height: $tw-fnt-frm-fld-text-value-line-height;
76
+ fill: $tw-clr-icn;
77
+ flex-shrink: 0;
78
+ }
79
+ }
80
+
81
+ .multi-select__options-container {
82
+ position: relative;
83
+ height: 0;
84
+ width: 100%;
85
+
86
+ .multi-select__options {
87
+ z-index: 3;
88
+ width: calc(100% - 2px);
89
+ position: absolute;
90
+ top: 0px;
91
+ list-style-type: none;
92
+ padding: $tw-spc-base-x-small 0;
93
+ background: $tw-clr-bg;
94
+ border: 1px solid $tw-clr-brdr-secondary;
95
+ margin: $tw-spc-base-xx-small 0 0;
96
+ border-radius: $tw-sz-base-x-small;
97
+ max-height: 140px;
98
+ overflow-y: auto;
99
+
100
+ .select-value {
101
+ font-family: $tw-fnt-frm-fld-select-value-font-family;
102
+ font-size: $tw-fnt-frm-fld-select-value-font-size;
103
+ font-weight: $tw-fnt-frm-fld-select-value-font-weight;
104
+ line-height: $tw-fnt-frm-fld-select-value-line-height;
105
+ padding: $tw-spc-base-x-small $tw-spc-base-small;
106
+ cursor: pointer;
107
+
108
+ &:hover {
109
+ background-color: $tw-clr-bg-selected-ghost-hover;
110
+ color: $tw-clr-txt;
111
+ }
112
+
113
+ &:active {
114
+ background-color: $tw-clr-bg-selected-ghost-active;
115
+ color: $tw-clr-txt;
116
+ }
117
+
118
+ &--disabled {
119
+ opacity: $tw-opcty-semantic-off;
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
@@ -1,11 +1,12 @@
1
1
  import './styles.scss';
2
2
  type PillProps<IdType> = {
3
3
  id: IdType;
4
- label: string;
4
+ label?: string;
5
5
  value: string;
6
+ onClick?: (id: IdType) => void;
6
7
  onRemove?: (id: IdType) => void;
7
8
  className?: string;
8
9
  };
9
- export default function Pill<IdType>({ id, label, value, onRemove, className }: PillProps<IdType>): JSX.Element;
10
+ export default function Pill<IdType>(props: PillProps<IdType>): JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Pill/index.tsx"],"names":[],"mappings":"AAGA,OAAO,eAAe,CAAC;AAEvB,KAAK,SAAS,CAAC,MAAM,IAAI;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAc9G"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Pill/index.tsx"],"names":[],"mappings":"AAGA,OAAO,eAAe,CAAC;AAEvB,KAAK,SAAS,CAAC,MAAM,IAAI;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAwB1E"}
@@ -15,23 +15,33 @@ var _Icon = _interopRequireDefault(require("../Icon/Icon"));
15
15
 
16
16
  require("./styles.scss");
17
17
 
18
- function Pill(_ref) {
19
- var id = _ref.id,
20
- label = _ref.label,
21
- value = _ref.value,
22
- onRemove = _ref.onRemove,
23
- className = _ref.className;
18
+ function Pill(props) {
19
+ var id = props.id,
20
+ label = props.label,
21
+ value = props.value,
22
+ _onClick = props.onClick,
23
+ onRemove = props.onRemove,
24
+ className = props.className;
24
25
  return /*#__PURE__*/_react.default.createElement("div", {
25
- className: "pill ".concat(className !== null && className !== void 0 ? className : '')
26
- }, /*#__PURE__*/_react.default.createElement("p", {
26
+ className: "pill ".concat(className !== null && className !== void 0 ? className : ''),
27
+ onClick: function onClick(ev) {
28
+ ev.stopPropagation();
29
+
30
+ if (_onClick) {
31
+ _onClick(id);
32
+ }
33
+ }
34
+ }, label && /*#__PURE__*/_react.default.createElement("p", {
27
35
  className: "label"
28
36
  }, label, ":"), /*#__PURE__*/_react.default.createElement("p", {
29
37
  className: "value"
30
38
  }, value), onRemove ? /*#__PURE__*/_react.default.createElement(_material.IconButton, {
31
- onClick: function onClick() {
32
- return onRemove(id);
39
+ onClick: function onClick(ev) {
40
+ ev.stopPropagation();
41
+ onRemove(id);
33
42
  },
34
- className: "iconContainer"
43
+ className: "iconContainer",
44
+ "aria-label": "remove"
35
45
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
36
46
  name: "close",
37
47
  className: "icon"
@@ -12,8 +12,6 @@
12
12
  display: flex;
13
13
  border-radius: 13px;
14
14
  align-items: center;
15
- margin-right: $tw-spc-base-x-small;
16
- margin-bottom: $tw-spc-base-x-small;
17
15
 
18
16
  .label {
19
17
  font-size: 12px;
@@ -1,12 +1,15 @@
1
+ import './styles.scss';
1
2
  export type PillListItem<IdType> = {
2
3
  id: IdType;
3
- label: string;
4
+ label?: string;
4
5
  value: string;
6
+ onClick?: (id: IdType) => void;
5
7
  onRemove?: (id: IdType) => void;
6
8
  className?: string;
7
9
  };
8
10
  export type PillListProps<IdType> = {
9
11
  data: PillListItem<IdType>[];
12
+ onClick?: (id: IdType) => void;
10
13
  onRemove?: (id: IdType) => void;
11
14
  className?: string;
12
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PillList/index.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI;IAClC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAiBlF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PillList/index.tsx"],"names":[],"mappings":"AAEA,OAAO,eAAe,CAAC;AAEvB,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI;IAClC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAkBlF"}
@@ -11,21 +11,22 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _Pill = _interopRequireDefault(require("../Pill"));
13
13
 
14
- var _material = require("@mui/material");
14
+ require("./styles.scss");
15
15
 
16
16
  function PillList(props) {
17
17
  var data = props.data,
18
+ onClick = props.onClick,
18
19
  onRemove = props.onRemove,
19
20
  className = props.className;
20
- return /*#__PURE__*/_react.default.createElement(_material.Box, {
21
- display: "flex",
22
- flexWrap: "wrap"
21
+ return /*#__PURE__*/_react.default.createElement("div", {
22
+ className: "pill-list"
23
23
  }, data.map(function (item, index) {
24
24
  return /*#__PURE__*/_react.default.createElement(_Pill.default, {
25
25
  key: index,
26
26
  id: item.id,
27
27
  label: item.label,
28
28
  value: item.value,
29
+ onClick: item.onClick || onClick,
29
30
  onRemove: item.onRemove || onRemove,
30
31
  className: item.className || className
31
32
  });
@@ -0,0 +1,12 @@
1
+ @import '../../style-dictionary-dist/terraware.scss';
2
+
3
+ @font-face {
4
+ font-family: 'Inter';
5
+ src: local('Inter'), url(../../fonts/Inter.ttf) format('truetype');
6
+ }
7
+
8
+ .pill-list {
9
+ display: flex;
10
+ flex-wrap: wrap;
11
+ gap: $tw-spc-base-x-small;
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terraware/web-components",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "author": "Terraformation Inc.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -0,0 +1,9 @@
1
+ import { Story } from '@storybook/react';
2
+ import MultiSelect, { MultiSelectProps } from '../components/MultiSelect';
3
+ declare const _default: {
4
+ title: string;
5
+ component: typeof MultiSelect;
6
+ };
7
+ export default _default;
8
+ export declare const Default: Story<MultiSelectProps<number, string>>;
9
+ //# sourceMappingURL=MultiSelect.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelect.stories.d.ts","sourceRoot":"","sources":["../../src/stories/MultiSelect.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,WAAW,EAAE,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;;;;;AAE1E,wBAGE;AAoCF,eAAO,MAAM,OAAO,yCAAoB,CAAC"}