UNPKG

suomifi-ui-components

Version:
144 lines (138 loc) 6.11 kB
'use strict'; 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