@fleetbase/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
49 lines (37 loc) • 1.5 kB
JavaScript
import { htmlSafe } from '@ember/template';
import { isBlank } from '@ember/utils';
function escapeHtml(value) {
return String(value).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
}
function line(content, className = '') {
const classAttribute = className ? ` class="${className}"` : '';
return `<div${classAttribute}>${escapeHtml(content)}</div>`;
}
export default function placeAddress(place, options = {}) {
const address = place?.place ?? place;
if (!address) {
return htmlSafe('');
}
const { showTitle = true } = options;
const name = address.name === address.street1 ? null : address.name;
const cityStatePostalCode = [address.city, address.province, address.postal_code].filter((value) => !isBlank(value)).join(', ');
const lines = [];
if (name) {
if (showTitle) {
lines.push(line(name, 'font-semibold'));
}
lines.push(line(address.street1));
} else if (address.street1) {
lines.push(line(address.street1, 'font-semibold'));
}
if (address.street2) {
lines.push(line(address.street2));
}
if (cityStatePostalCode) {
lines.push(line(cityStatePostalCode));
}
if (address.country_name || address.country) {
lines.push(line(address.country_name ?? address.country));
}
return htmlSafe(`<address class="uppercase truncate w-full">${lines.join('')}</address>`);
}