@blueprintjs/select
Version:
Components related to selecting items from a list
42 lines • 1.82 kB
JavaScript
/*
* Copyright 2018 Palantir Technologies, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Utils } from "@blueprintjs/core";
/**
* Utility function for executing the {@link ListItemsProps#itemsEqual} prop to test
* for equality between two items.
*
* @return `true` if the two items are equivalent according to `itemsEqualProp`.
*/
export function executeItemsEqual(itemsEqualProp, itemA, itemB) {
// Use strict equality if:
// A) Default equality check is necessary because itemsEqualProp is undefined.
// OR
// B) Either item is null/undefined. Note that null represents "no item", while
// undefined represents an uncontrolled prop. This strict equality check ensures
// nothing will ever be considered equivalent to an uncontrolled prop.
if (itemsEqualProp === undefined || itemA == null || itemB == null) {
return itemA === itemB;
}
if (Utils.isFunction(itemsEqualProp)) {
// itemsEqualProp is an equality comparator function, so use it
return itemsEqualProp(itemA, itemB);
}
else {
// itemsEqualProp is a property name, so strictly compare the values of the property.
return itemA[itemsEqualProp] === itemB[itemsEqualProp];
}
}
//# sourceMappingURL=listItemsProps.js.map