UNPKG

@spaced-out/ui-design-system

Version:
105 lines (104 loc) 5.24 kB
"use strict"; 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;