import type { Formatter } from './models/index.js'; import { Utils as Utils_ } from './slick.core.js'; // for (iife) load Slick methods from global Slick object, or use imports for (esm) const Utils = IIFE_ONLY ? Slick.Utils : Utils_; /*** * Contains basic SlickGrid formatters. * * NOTE: These are merely examples. You will most likely need to implement something more * robust/extensible/localizable/etc. for your use! * * @module Formatters * @namespace Slick */ export const PercentCompleteFormatter: Formatter = (_row, _cell, value) => { if (!Utils.isDefined(value) || value === '') { return '-'; } else if (value < 50) { return `${value}%`; } else { return `${value}%`; } }; export const PercentCompleteBarFormatter: Formatter = (_row, _cell, value) => { if (!Utils.isDefined(value) || value === '') { return ''; } let color; if (value < 30) { color = 'red'; } else if (value < 70) { color = 'silver'; } else { color = 'green'; } return ``; }; export const YesNoFormatter: Formatter = (_row, _cell, value) => { return value ? 'Yes' : 'No'; }; export const CheckboxFormatter: Formatter = (_row, _cell, value) => { return ``; }; export const CheckmarkFormatter: Formatter = (_row, _cell, value) => { return value ? `` : ''; }; export const Formatters = { PercentComplete: PercentCompleteFormatter, PercentCompleteBar: PercentCompleteBarFormatter, YesNo: YesNoFormatter, Checkmark: CheckmarkFormatter, Checkbox: CheckboxFormatter }; // extend Slick namespace on window object when building as iife if (IIFE_ONLY && window.Slick) { Utils.extend(Slick, { Formatters }); }