@spaced-out/ui-design-system
Version:
Sense UI components library
107 lines (106 loc) • 5.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getTextLabelFromSelectedKeys = exports.getSelectedKeysFromSelectedOption = exports.getOptionsFromKeys = exports.getOptionFromKey = exports.getFilteredOptionsResultText = exports.getFilteredOptionsFromSearchText = exports.getFilteredGroupTitleOptionsResultText = exports.getFilteredGroupTitleOptionsFromSearchText = exports.getFilteredComposeOptionsResultText = exports.getFilteredComposeOptionsFromSearchText = exports.getButtonLabelFromSelectedKeys = void 0;
var React = _interopRequireWildcard(require("react"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
const getSelectedKeysFromSelectedOption = (currentOption, currentSelectedKeys) => {
if (!Array.isArray(currentSelectedKeys) || !currentOption?.key) {
return [];
}
let newSelectedKeys = [];
if (currentSelectedKeys.includes(currentOption.key)) {
newSelectedKeys = currentSelectedKeys.filter(item => item !== currentOption.key);
} else {
newSelectedKeys = [...currentSelectedKeys, currentOption.key];
}
return newSelectedKeys;
};
exports.getSelectedKeysFromSelectedOption = getSelectedKeysFromSelectedOption;
const getTextLabelFromSelectedKeys = (currentSelectedKeys, options) => {
if (!Array.isArray(currentSelectedKeys) || !Array.isArray(options)) {
return '';
}
const selectedOptions = getOptionsFromKeys(options, currentSelectedKeys);
return selectedOptions.map(option => option.label).join(', ');
};
exports.getTextLabelFromSelectedKeys = getTextLabelFromSelectedKeys;
const getButtonLabelFromSelectedKeys = (currentSelectedKeys, label) => {
if (!Array.isArray(currentSelectedKeys) || typeof label !== 'string' || !currentSelectedKeys.length) {
return label;
}
return `(${currentSelectedKeys.length}) ${label}`;
};
exports.getButtonLabelFromSelectedKeys = getButtonLabelFromSelectedKeys;
const getOptionFromKey = (options, key) => {
if (!Array.isArray(options) || !key || !options.length) {
return null;
}
return options.find(option => option.key === key);
};
exports.getOptionFromKey = getOptionFromKey;
const getOptionsFromKeys = (options, keys) => {
if (!Array.isArray(options) || !Array.isArray(keys) || !options.length || !keys.length) {
return [];
}
return options.filter(option => keys.includes(option.key));
};
exports.getOptionsFromKeys = getOptionsFromKeys;
const getFilteredOptionsFromSearchText = (options, searchText) => {
if (!Array.isArray(options) || !options.length || !searchText) {
return options;
}
return options.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()));
};
exports.getFilteredOptionsFromSearchText = getFilteredOptionsFromSearchText;
const getFilteredOptionsResultText = (options, staticLabels) => {
let resultCount = 0;
resultCount += options.length;
const singleResultMessage = staticLabels.RESULT ?? 'result';
const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
const generatedResultText = `${resultCount} ${resultCount > 1 ? multipleResultsMessage : singleResultMessage}`;
return generatedResultText;
};
exports.getFilteredOptionsResultText = getFilteredOptionsResultText;
const getFilteredComposeOptionsFromSearchText = (composeOptions, searchText) => {
if (!Array.isArray(composeOptions) || !composeOptions.length || !searchText) {
return composeOptions;
}
return composeOptions.map(optionGroup => optionGroup.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()))).filter(group => group.length > 0);
};
exports.getFilteredComposeOptionsFromSearchText = getFilteredComposeOptionsFromSearchText;
const getFilteredComposeOptionsResultText = (composeOptions, staticLabels) => {
let resultCount = 0;
composeOptions.forEach(optionGroup => {
resultCount += optionGroup.length;
});
const singleResultMessage = staticLabels.RESULT ?? 'result';
const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
const generatedResultText = `${resultCount} ${resultCount > 1 ? multipleResultsMessage : singleResultMessage}`;
return generatedResultText;
};
exports.getFilteredComposeOptionsResultText = getFilteredComposeOptionsResultText;
const getFilteredGroupTitleOptionsFromSearchText = (groupTitleOptions, searchText) => {
if (!Array.isArray(groupTitleOptions) || !groupTitleOptions.length || !searchText) {
return groupTitleOptions;
}
return groupTitleOptions.map(group => ({
...group,
options: group.options?.filter(option => option.label?.toLowerCase().includes(searchText.toLowerCase()))
})).filter(group => group.options && group.options.length > 0);
};
exports.getFilteredGroupTitleOptionsFromSearchText = getFilteredGroupTitleOptionsFromSearchText;
const getFilteredGroupTitleOptionsResultText = (groupTitleOptions, staticLabels) => {
let resultCount = 0;
groupTitleOptions.forEach(group => {
if (group.options) {
resultCount += group.options.length;
}
});
const singleResultMessage = staticLabels.RESULT ?? 'result';
const multipleResultsMessage = staticLabels.RESULTS ?? 'results';
const generatedResultText = `${resultCount} ${resultCount > 1 ? multipleResultsMessage : singleResultMessage}`;
return generatedResultText;
};
exports.getFilteredGroupTitleOptionsResultText = getFilteredGroupTitleOptionsResultText;