UNPKG

@zohodesk/hooks

Version:

Unified Component Library - Hooks

136 lines (133 loc) 3.62 kB
export function addOption(_ref) { let { option, list, filteredOptions } = _ref; // NEED TO CHECK OPTION IS ALREADY AVAILABLE let newState = { list, filteredOptions }; newState.list.push(option); newState.filteredOptions.push(option); return newState; } // export function getAllOptions(state) { // return state.list; // } // export function getFilteredOptions(state) { // return state && state.filteredOptions; // } // export function getselectedOptions(state) { // return state.selectedOptions; // } export function updateFilteredOptions(_ref2) { let { selectedOptions, list } = _ref2; let filteredOptions = []; list.map(obj => { if (!isArrayContainsOption(obj, selectedOptions)) { filteredOptions.push(obj); } }); return { filteredOptions }; } export function isArrayContainsOption(obj, array) { let key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'value'; // NEED TO UPDATE THE OBJECT COMPARISON // return array.filter((item) => JSON.stringify(item) === JSON.stringify(obj)).length > 0; return array.filter(item => item[key] === obj[key]).length > 0; } export function filterOptionsArray(obj, array) { let key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'value'; // NEED TO UPDATE THE OBJECT COMPARISON // return array.filter((item) => JSON.stringify(item) !== JSON.stringify(obj)); return array.filter(item => item[key] !== obj[key]); } // export function searchFilter(str, key = 'value', state) { // state.searchString = str; // const searchStr = str.toLowerCase(); // const data = []; // state.list.map((obj) => { // const text = obj[key] && obj[key].toLowerCase(); // if (isArrayContainsOption(obj, state.list) && !isArrayContainsOption(obj, state.selectedOptions) && text.indexOf(searchStr) !== -1) { // data.push(obj); // } // }); // state.filteredOptions = data; // return state; // } // Updated export function handleSearch(_ref3) { let { searchString, searchKey = 'value', selectedOptions, list } = _ref3; let newState = { searchString, filteredOptions: [] }; const searchStr = searchString.toLowerCase(); list.map(obj => { const text = obj[searchKey] && obj[searchKey].toLowerCase(); if (isArrayContainsOption(obj, list) && !isArrayContainsOption(obj, selectedOptions) && text.indexOf(searchStr) !== -1) { newState.filteredOptions.push(obj); } }); return newState; } export function handleSelect(_ref4) { let { option, filteredOptions, selectedOptions } = _ref4; let newState = { selectedOptions }; newState.selectedOptions.push(option); newState.filteredOptions = filterOptionsArray(option, filteredOptions); return newState; } export function handleRemove(_ref5) { let { option, selectedOptions, list } = _ref5; let newState = {}; newState.selectedOptions = filterOptionsArray(option, selectedOptions); newState.filteredOptions = list.filter(opt => !isArrayContainsOption(opt, newState.selectedOptions)); return newState; } export function handleSelectAll(_ref6) { let { list, selectedOptions } = _ref6; let newState = { selectedOptions, filteredOptions: [] }; list.map(obj => { if (!isArrayContainsOption(obj, selectedOptions)) { newState.selectedOptions.push(obj); } }); return newState; } export function handleRemoveAll(_ref7) { let { list } = _ref7; let newState = { selectedOptions: [], filteredOptions: list }; return newState; }