@terraware/web-components 2.1.3 → 2.1.5

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,115 @@
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 _Icon = _interopRequireDefault(require("../Icon/Icon"));
19
+
20
+ var _PillList = _interopRequireDefault(require("../PillList"));
21
+
22
+ 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); }
23
+
24
+ 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; }
25
+
26
+ function MultiSelect(props) {
27
+ var className = props.className,
28
+ fullWidth = props.fullWidth,
29
+ helperText = props.helperText,
30
+ id = props.id,
31
+ label = props.label,
32
+ missingValuePlaceholder = props.missingValuePlaceholder,
33
+ onAdd = props.onAdd,
34
+ onRemove = props.onRemove,
35
+ onPillClick = props.onPillClick,
36
+ options = props.options,
37
+ pillListClassName = props.pillListClassName,
38
+ placeHolder = props.placeHolder,
39
+ valueRenderer = props.valueRenderer,
40
+ selectedOptions = props.selectedOptions,
41
+ tooltipTitle = props.tooltipTitle;
42
+
43
+ var _useState = (0, _react.useState)(false),
44
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
45
+ openedOptions = _useState2[0],
46
+ setOpenedOptions = _useState2[1];
47
+
48
+ var toggleOptions = function toggleOptions() {
49
+ setOpenedOptions(function (isOpen) {
50
+ return !isOpen;
51
+ });
52
+ };
53
+
54
+ var closeOptions = function closeOptions() {
55
+ setOpenedOptions(false);
56
+ };
57
+
58
+ var unselectedOptions = Array.from(options.keys()).filter(function (key) {
59
+ return !selectedOptions.includes(key);
60
+ });
61
+ var valuesPillData = selectedOptions.map(function (item) {
62
+ var value = options.get(item);
63
+ return {
64
+ id: item,
65
+ value: value ? valueRenderer(value) : missingValuePlaceholder || ''
66
+ };
67
+ }).filter(function (data) {
68
+ return data.value;
69
+ });
70
+ return /*#__PURE__*/_react.default.createElement("div", {
71
+ className: "multi-select ".concat(className)
72
+ }, label && /*#__PURE__*/_react.default.createElement("label", {
73
+ htmlFor: id,
74
+ className: "multi-select__label"
75
+ }, label, " ", tooltipTitle && /*#__PURE__*/_react.default.createElement(_IconTooltip.default, {
76
+ title: tooltipTitle
77
+ })), /*#__PURE__*/_react.default.createElement("div", {
78
+ className: "multi-select__container ".concat(fullWidth ? 'multi-select__container--fullWidth' : ''),
79
+ onBlur: closeOptions,
80
+ tabIndex: 0
81
+ }, /*#__PURE__*/_react.default.createElement("div", {
82
+ id: id,
83
+ className: "multi-select__values",
84
+ onClick: toggleOptions
85
+ }, selectedOptions.length > 0 ? /*#__PURE__*/_react.default.createElement(_PillList.default, {
86
+ data: valuesPillData,
87
+ onRemove: onRemove,
88
+ onClick: onPillClick,
89
+ className: pillListClassName
90
+ }) : /*#__PURE__*/_react.default.createElement("p", {
91
+ className: "multi-select__placeholder-text"
92
+ }, placeHolder), /*#__PURE__*/_react.default.createElement("div", {
93
+ className: 'multi-select__values__icon-button',
94
+ "aria-label": "show-options"
95
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
96
+ name: openedOptions ? 'chevronUp' : 'chevronDown',
97
+ className: "multi-select__values__icon-right"
98
+ }))), options && unselectedOptions.length > 0 && openedOptions && /*#__PURE__*/_react.default.createElement("div", {
99
+ className: "multi-select__options-container"
100
+ }, /*#__PURE__*/_react.default.createElement("ul", {
101
+ className: 'multi-select__options'
102
+ }, unselectedOptions.map(function (optionKey, index) {
103
+ var optionValue = options.get(optionKey);
104
+ return /*#__PURE__*/_react.default.createElement("li", {
105
+ key: index,
106
+ className: "select-value",
107
+ onClick: function onClick() {
108
+ return onAdd(optionKey);
109
+ }
110
+ }, optionValue ? valueRenderer(optionValue) : missingValuePlaceholder || '');
111
+ })))), helperText && /*#__PURE__*/_react.default.createElement("label", {
112
+ htmlFor: id,
113
+ className: "multi-select__help-text"
114
+ }, helperText));
115
+ }
@@ -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: flex-start;
65
+ justify-content: space-between;
66
+
67
+ &__icon-button {
68
+ width: $tw-fnt-frm-fld-text-value-line-height;
69
+ height: $tw-fnt-frm-fld-text-value-line-height;
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
- className: "value"
37
+ className: "value".concat(label ? '' : ' value--no-label')
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;
@@ -28,6 +26,10 @@
28
26
  color: $tw-clr-txt;
29
27
  font-weight: 600;
30
28
  margin: 0;
29
+
30
+ &--no-label {
31
+ padding-left: 0;
32
+ }
31
33
  }
32
34
 
33
35
  .icon {
@@ -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/index.d.ts CHANGED
@@ -9,6 +9,7 @@ import ErrorBox from './components/ErrorBox/ErrorBox';
9
9
  import Icon from './components/Icon/Icon';
10
10
  import IconTooltip from './components/IconTooltip';
11
11
  import icons from './components/Icon/icons';
12
+ import MultiSelect from './components/MultiSelect';
12
13
  import Navbar from './components/Navbar/Navbar';
13
14
  import NavFooter from './components/Navbar/NavFooter';
14
15
  import NavItem from './components/Navbar/NavItem';
@@ -35,5 +36,5 @@ export type { IconName } from './components/Icon/icons/';
35
36
  export type { Size } from './components/Size';
36
37
  export type { DropdownItem } from './components/types';
37
38
  export type { EnhancedTableDetailsRow, RendererProps, TableColumnType, TableRowType, SortOrder };
38
- export { Autocomplete, Button, CellRenderer, CellDateRenderer, Checkbox, DatePicker, descendingComparator, DialogBox, Divisor, Dropdown, DropdownV1, ErrorBox, getComparator, icons, Icon, IconTooltip, Message, NavFooter, NavItem, NavSection, Navbar, Note, Pill, PillList, ProgressCircle, RadioButton, Select, SelectT, stableSort, SummaryBox, Svg, Textfield, TextTruncated, Table, theme, };
39
+ export { Autocomplete, Button, CellRenderer, CellDateRenderer, Checkbox, DatePicker, descendingComparator, DialogBox, Divisor, Dropdown, DropdownV1, ErrorBox, getComparator, icons, Icon, IconTooltip, Message, MultiSelect, NavFooter, NavItem, NavSection, Navbar, Note, Pill, PillList, ProgressCircle, RadioButton, Select, SelectT, stableSort, SummaryBox, Svg, Textfield, TextTruncated, Table, theme, };
39
40
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAClE,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,QAAQ,MAAM,gCAAgC,CAAC;AACtD,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,cAAc,MAAM,4CAA4C,CAAC;AACxE,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,YAAY,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,OAAO,MAAM,8BAA8B,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AAEjG,OAAO,EACL,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,KAAK,EACL,IAAI,EACJ,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,EACP,UAAU,EACV,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,GAAG,EACH,SAAS,EACT,aAAa,EACb,KAAK,EACL,KAAK,GACN,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAClE,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,QAAQ,MAAM,gCAAgC,CAAC;AACtD,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,cAAc,MAAM,4CAA4C,CAAC;AACxE,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,YAAY,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,OAAO,MAAM,8BAA8B,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AAEjG,OAAO,EACL,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,KAAK,EACL,IAAI,EACJ,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,OAAO,EACP,UAAU,EACV,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,GAAG,EACH,SAAS,EACT,aAAa,EACb,KAAK,EACL,KAAK,GACN,CAAC"}
package/index.js CHANGED
@@ -77,6 +77,12 @@ Object.defineProperty(exports, "icons", {
77
77
  return _icons.default;
78
78
  }
79
79
  });
80
+ Object.defineProperty(exports, "MultiSelect", {
81
+ enumerable: true,
82
+ get: function get() {
83
+ return _MultiSelect.default;
84
+ }
85
+ });
80
86
  Object.defineProperty(exports, "Navbar", {
81
87
  enumerable: true,
82
88
  get: function get() {
@@ -233,6 +239,8 @@ var _IconTooltip = _interopRequireDefault(require("./components/IconTooltip"));
233
239
 
234
240
  var _icons = _interopRequireDefault(require("./components/Icon/icons"));
235
241
 
242
+ var _MultiSelect = _interopRequireDefault(require("./components/MultiSelect"));
243
+
236
244
  var _Navbar = _interopRequireDefault(require("./components/Navbar/Navbar"));
237
245
 
238
246
  var _NavFooter = _interopRequireDefault(require("./components/Navbar/NavFooter"));
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.5",
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"}