react-elegant-ui
Version:
Elegant UI components, made by BEM best practices for react
169 lines • 4.32 kB
JavaScript
var __assign = this && this.__assign || function () {
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __read = this && this.__read || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o),
r,
ar = [],
e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
} catch (error) {
e = {
error: error
};
} finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
} finally {
if (e) throw e.error;
}
}
return ar;
};
import React, { useState } from 'react';
import { Icon } from '../../Icon/Icon.bundle/desktop';
import { Menu as MenuControl } from '../Menu.bundle/desktop';
var Menu = function (props) {
var _a = __read(useState(props.value), 2),
value = _a[0],
setValue = _a[1];
var _b = __read(useState(false), 2),
isFocused = _b[0],
setFocus = _b[1];
var _c = __read(useState(), 2),
cursorIdRef = _c[0],
cursorIdRefSet = _c[1];
return /*#__PURE__*/React.createElement(MenuControl, __assign({
"aria-activedescendant": !isFocused ? undefined : cursorIdRef !== null && cursorIdRef !== void 0 ? cursorIdRef : undefined,
cursorIdRef: cursorIdRefSet
}, props, {
value: value,
setValue: setValue,
isFocused: isFocused,
onFocus: function () {
return setFocus(true);
},
onBlur: function () {
return setFocus(false);
},
tabIndex: 0,
style: {
width: 'max-content'
}
}));
};
var demoList = [{
id: 'apple',
content: 'Apple',
disabled: true
}, {
id: 'banana',
content: 'Banana'
}, {
id: 'meat',
content: 'Meat'
}, {
id: 'hidden',
content: 'Hidden value',
hidden: true
}, {
title: 'Group name',
items: [{
id: 'sosage',
content: 'Sosage',
disabled: true
}, {
id: 'butter',
content: 'Butter',
disabled: true
}, {
id: 'bread',
content: 'Bread'
}]
}, {
id: 'milk',
content: 'Milk',
disabled: true
}];
export var Base = function () {
return /*#__PURE__*/React.createElement(Menu, {
items: demoList,
onPick: function (id) {
return console.log("Pick by item \"".concat(id, "\""));
}
});
};
export var WithSearch = function () {
return /*#__PURE__*/React.createElement(Menu, {
items: demoList,
onPick: function (id) {
return console.log("Pick by item \"".concat(id, "\""));
},
searchable: true,
searchPlaceholder: "Search"
});
};
export var Complex = function () {
return /*#__PURE__*/React.createElement(Menu, {
items: [{
id: 'item1',
content: ( /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Icon, {
glyph: "check"
}), " complex item #1", ' ', /*#__PURE__*/React.createElement(Icon, {
glyph: "close"
}))),
textContent: 'item 1'
}, {
id: 'item2',
content: ( /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Icon, {
glyph: "check"
}), " complex item #2", ' ', /*#__PURE__*/React.createElement(Icon, {
glyph: "close"
}))),
textContent: 'item 2'
}, {
id: 'item3',
content: ( /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Icon, {
glyph: "check"
}), " complex item #3", ' ', /*#__PURE__*/React.createElement(Icon, {
glyph: "close"
}))),
textContent: 'item 3'
}],
onPick: function (id) {
return console.log("Pick by complex item \"".concat(id, "\""));
}
});
};
export var Radio = function () {
return /*#__PURE__*/React.createElement(Menu, {
items: demoList,
type: "radio",
value: 'banana'
});
};
export var Checkbox = function () {
return /*#__PURE__*/React.createElement(Menu, {
items: demoList,
type: "checkbox",
value: ['meat', 'sosage']
});
};
export var Disabled = function () {
return /*#__PURE__*/React.createElement(Menu, {
items: demoList,
type: "radio",
value: 'banana',
disabled: true
});
};