@awsui/components-react
Version:
On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en
77 lines • 3.29 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { joinDateTime, splitDateTime } from '../internal/utils/date-time';
import { isIsoDateOnly, isIsoMonthOnly } from '../internal/utils/date-time';
import { normalizeTimeString } from '../internal/utils/date-time/join-date-time';
import { setTimeOffset, shiftTimeOffset } from './time-offset';
function isAbsoluteValue(value) {
return value !== null && (value === null || value === void 0 ? void 0 : value.type) === 'absolute';
}
function isEmptyAbsoluteValue(value) {
return value.type === 'absolute' && value.startDate === '' && value.endDate === '';
}
function isDateOrMonthOnly(value, checkFn) {
return checkFn(value.startDate) && checkFn(value.endDate);
}
export function formatValue(value, { timeOffset, monthOnly, dateOnly, }) {
if (!isAbsoluteValue(value) || isEmptyAbsoluteValue(value)) {
return value;
}
if (monthOnly || dateOnly) {
const [startPart, endPart] = [value.startDate, value.endDate].map(date =>
//strip out time or day+time text from dates
monthOnly ? date.split('T')[0].split('-').slice(0, 2).join('-') : date.split('T')[0]);
return { type: 'absolute', startDate: startPart, endDate: endPart };
}
return setTimeOffset(value, timeOffset === null
? {
startDate: undefined,
endDate: undefined,
}
: timeOffset);
}
export function getDefaultMode(value, relativeOptions, rangeSelectorMode) {
if (value === null || value === void 0 ? void 0 : value.type) {
return value.type;
}
if (rangeSelectorMode === 'relative-only') {
return 'relative';
}
if (rangeSelectorMode === 'absolute-only') {
return 'absolute';
}
return relativeOptions.length > 0 ? 'relative' : 'absolute';
}
export function splitAbsoluteValue(value, hideTime = false) {
if (!value) {
return { start: { date: '', time: '' }, end: { date: '', time: '' } };
}
return {
start: Object.assign(Object.assign({}, splitDateTime(value.startDate)), (hideTime ? { time: '' } : {})),
end: Object.assign(Object.assign({}, splitDateTime(value.endDate)), (hideTime ? { time: '' } : {})),
};
}
export function joinAbsoluteValue(value, hideTime = false) {
const [startTime, endTime] = [value.start.time || '00:00:00', value.end.time || '23:59:59'].map(normalizeTimeString);
return {
type: 'absolute',
startDate: hideTime ? value.start.date : joinDateTime(value.start.date, startTime),
endDate: hideTime ? value.end.date : joinDateTime(value.end.date, endTime),
};
}
export function formatInitialValue(value, dateOnly, monthOnly, normalizedTimeOffset) {
if (!isAbsoluteValue(value)) {
return shiftTimeOffset(value, normalizedTimeOffset);
}
if (isEmptyAbsoluteValue(value)) {
return value;
}
if (dateOnly || monthOnly) {
return formatValue(value, { dateOnly, monthOnly, timeOffset: normalizedTimeOffset });
}
if (isDateOrMonthOnly(value, isIsoDateOnly) || isDateOrMonthOnly(value, isIsoMonthOnly)) {
return value;
}
return shiftTimeOffset(value, normalizedTimeOffset);
}
//# sourceMappingURL=utils.js.map