@spaced-out/ui-design-system
Version:
Sense UI components library
105 lines (104 loc) • 5.24 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;
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;