@superset-ui/core
Version:
80 lines (55 loc) • 2.29 kB
JavaScript
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 { ExtensibleFunction } from '../models';
import { getNumberFormatter, NumberFormats } from '../number-format';
export const getCurrencySymbol = (currency) => {var _Intl$NumberFormat$fo;return (_Intl$NumberFormat$fo =
new Intl.NumberFormat('en-US', {
style: 'currency',
currency: currency.symbol
}).
formatToParts(1).
find((x) => x.type === 'currency')) == null ? void 0 : _Intl$NumberFormat$fo.value;};
class CurrencyFormatter extends ExtensibleFunction {
constructor(config) {
super((value) => this.format(value));this.d3Format = void 0;this.locale = void 0;this.currency = void 0;
this.d3Format = config.d3Format || NumberFormats.SMART_NUMBER;
this.currency = config.currency;
this.locale = config.locale || 'en-US';
}
hasValidCurrency() {var _this$currency;
return Boolean((_this$currency = this.currency) == null ? void 0 : _this$currency.symbol);
}
getNormalizedD3Format() {
return this.d3Format.replace(/\$|%/g, '');
}
format(value) {
const formattedValue = getNumberFormatter(this.getNormalizedD3Format())(
value
);
if (!this.hasValidCurrency()) {
return formattedValue;
}
if (this.currency.symbolPosition === 'prefix') {
return `${getCurrencySymbol(this.currency)} ${formattedValue}`;
}
return `${formattedValue} ${getCurrencySymbol(this.currency)}`;
}
}
export default CurrencyFormatter;
//# sourceMappingURL=CurrencyFormatter.js.map