suomifi-ui-components
Version:
Suomi.fi UI component library
144 lines (138 loc) • 6.11 kB
JavaScript
;
var tslib = require('tslib');
var React = require('react');
var styled = require('styled-components');
var classnames = require('classnames');
var suomifiIcons = require('suomifi-icons');
var common = require('../../../../../utils/common/common.js');
require('../../../../../reset/HtmlA/HtmlA.js');
require('../../../../../reset/HtmlButton/HtmlButton.js');
require('../../../../../reset/HtmlDiv/HtmlDiv.js');
require('../../../../../reset/HtmlFieldSet/HtmlFieldSet.js');
require('../../../../../reset/HtmlH/HtmlH.js');
require('../../../../../reset/HtmlInput/HtmlInput.js');
require('../../../../../reset/HtmlLabel/HtmlLabel.js');
require('../../../../../reset/HtmlLegend/HtmlLegend.js');
var HtmlLi = require('../../../../../reset/HtmlLi/HtmlLi.js');
require('../../../../../reset/HtmlNav/HtmlNav.js');
require('../../../../../reset/HtmlOl/HtmlOl.js');
require('../../../../../reset/HtmlSpan/HtmlSpan.js');
require('../../../../../reset/HtmlTextarea/HtmlTextarea.js');
require('../../../../../reset/HtmlUl/HtmlUl.js');
require('../../../../../reset/HtmlTable/HtmlTable.js');
require('../../../../../reset/HtmlTable/HtmlTableCaption.js');
require('../../../../../reset/HtmlTable/HtmlTableHeader.js');
require('../../../../../reset/HtmlTable/HtmlTableRow.js');
require('../../../../../reset/HtmlTable/HtmlTableBody.js');
require('../../../../../reset/HtmlTable/HtmlTableHeaderCell.js');
require('../../../../../reset/HtmlTable/HtmlTableCell.js');
var SuomifiThemeProvider = require('../../../../theme/SuomifiThemeProvider/SuomifiThemeProvider.js');
require('../../../../theme/SuomifiTheme/SuomifiTheme.js');
require('../../../../theme/SpacingProvider/SpacingProvider.js');
var SelectItem_baseStyles = require('./SelectItem.baseStyles.js');
var HtmlMark = require('../../../../../reset/HtmlMark/HtmlMark.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
var baseClassName = 'fi-select-item';
var selectItemClassNames = {
wrapper: "".concat(baseClassName, "_wrapper"),
hasKeyboardFocus: "".concat(baseClassName, "--hasKeyboardFocus"),
queryHighlight: "".concat(baseClassName, "--query_highlight"),
selected: "".concat(baseClassName, "--selected"),
disabled: "".concat(baseClassName, "--disabled"),
icon: "".concat(baseClassName, "_icon")
};
var BaseSelectItem = function (_super) {
tslib.__extends(BaseSelectItem, _super);
function BaseSelectItem() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.highlightQuery = function (text, query) {
if (query === void 0) {
query = '';
}
if (query.length > 0) {
var substrings = text.split(new RegExp("(".concat(common.escapeStringRegexp(query), ")"), 'gi'));
return substrings.map(function (substring, i) {
var isMatch = substring.toLowerCase() === query.toLowerCase();
if (!isMatch && substring.length > 0) {
return /*#__PURE__*/React__default.default.createElement(HtmlMark.HtmlMark, {
className: selectItemClassNames.queryHighlight,
key: i
}, substring);
}
return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, {
key: i
}, substring);
});
}
return text;
};
return _this;
}
BaseSelectItem.prototype.render = function () {
var _a;
var _this = this;
var _b = this.props,
className = _b.className;
_b.theme;
var children = _b.children,
checked = _b.checked,
hasKeyboardFocus = _b.hasKeyboardFocus,
hightlightQuery = _b.hightlightQuery,
disabled = _b.disabled,
id = _b.id,
_onClick = _b.onClick,
passProps = tslib.__rest(_b, ["className", "theme", "children", "checked", "hasKeyboardFocus", "hightlightQuery", "disabled", "id", "onClick"]);
return /*#__PURE__*/React__default.default.createElement(HtmlLi.HtmlLi, tslib.__assign({
className: classnames__default.default(baseClassName, className, (_a = {}, _a[selectItemClassNames.hasKeyboardFocus] = hasKeyboardFocus, _a[selectItemClassNames.selected] = checked, _a[selectItemClassNames.disabled] = disabled, _a)),
tabIndex: -1,
role: "option",
"aria-selected": checked,
"aria-disabled": disabled || false,
id: id,
onClick: function onClick(event) {
if (!!_onClick) {
_onClick(event);
}
},
onMouseDown: function onMouseDown(event) {
event.preventDefault();
}
}, passProps), React__default.default.Children.map(children, function (child) {
if (typeof child === 'string') {
return _this.highlightQuery(child, hightlightQuery);
}
return child;
}), checked && ( /*#__PURE__*/React__default.default.createElement(suomifiIcons.IconCheck, {
className: selectItemClassNames.icon,
"aria-hidden": true
})));
};
return BaseSelectItem;
}(React.Component);
var StyledSelectItem = styled.styled(BaseSelectItem).withConfig({
componentId: "sc-tljhbw-0"
})(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (_a) {
var theme = _a.theme;
return SelectItem_baseStyles.baseStyles(theme);
});
var SelectItem = function (_super) {
tslib.__extends(SelectItem, _super);
function SelectItem() {
return _super !== null && _super.apply(this, arguments) || this;
}
SelectItem.prototype.render = function () {
var _this = this;
return /*#__PURE__*/React__default.default.createElement(SuomifiThemeProvider.SuomifiThemeConsumer, null, function (_a) {
var suomifiTheme = _a.suomifiTheme;
return /*#__PURE__*/React__default.default.createElement(StyledSelectItem, tslib.__assign({
theme: suomifiTheme
}, _this.props));
});
};
return SelectItem;
}(React.Component);
var templateObject_1;
exports.SelectItem = SelectItem;
//# sourceMappingURL=SelectItem.js.map