Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | 31x 975x 975x 864x 111x 75x 36x 36x 137x 453x 3x 3x 3x 3x 1x 3x 3x 27x 27x 27x 27x 27x 31x 72x | export const reflectAttribute = (element, attrName, value) => {
Iif (!element) {
return;
}
if (typeof value === 'string') {
element.setAttribute(attrName, value);
} else if (value === true) {
element.setAttribute(attrName, '');
} else if (!value) {
element.removeAttribute(attrName);
} else E{
console.warn(`Invalid attribute value for "${attrName}": ${value}`);
}
};
export const normalizeBoolean = (value) => {
return typeof value === 'string' || !!value;
};
export function normalizeInput(value) {
if (typeof value === 'number' || typeof value === 'string') {
return String(value);
}
return '';
}
/**
* A string normalization utility for attributes.
*
* @param {string} value - The value to normalize.
* @param {object} config - The optional configuration object.
* @param {string} [config.fallbackValue] - The optional fallback value to use if the given value is not provided or invalid. Defaults to an empty string.
* @param {array} [config.validValues] - An optional array of valid values. Assumes all input is valid if not provided.
* @return {string} - The normalized value.
*/
export function normalizeString(value, config = {}) {
const { fallbackValue = '', validValues, toLowerCase = true } = config;
let normalized = (typeof value === 'string' && value.trim()) || '';
normalized = toLowerCase ? normalized.toLowerCase() : normalized;
if (validValues && validValues.indexOf(normalized) === -1) {
normalized = fallbackValue;
}
return normalized;
}
export function oneOf(value, options) {
if (!options.includes(value)) {
I throw new Error(`Invalid value: ${value}. Valid options are: ${options.join(', ')}`);
}
return value;
}
// TODO: Move to date utils
export class DateFormatter {
locale = 'en-US';
constructor(locale, day, month, year, config) {
this.date = new Date(year, month - 1, day);
this.locale = locale;
this.config = config || { day: 'numeric', month: 'long', year: 'numeric' };
}
format(locale = this.locale) {
const options = {
day: this.config.day,
month: this.config.month,
year: this.config.year,
};
return new Intl.DateTimeFormat(locale, options).format(this.date);
}
}
// TODO: Move to date utils
export const dateRegexIso = /^(\d{4})[-](\d{1,2})[-](\d{1,2})$/;
/**
* Check if the given value is defined.
*
* @param {*} value - The value to check.
*
* @returns {boolean} - True if the value is defined.
*/
export function isDefined(value) {
return typeof value !== 'undefined' && value !== null;
}
/**
* Check if the SLDS2 (Cosmos) theme is enabled.
* Currently used only for sds-figure component
*
* @returns {boolean} - True if the value is defined.
*/
export function sldsIsV2Enabled() {
return getComputedStyle(document.head).getPropertyValue('--_slds-is-v2-enabled');
}
/**
* Library exports.
*
* @TODO: needs clean up when we get a breather. 'index' is required cause LWC
* looks for the module name.
*/
export { autoResize } from './resize/index.js';
export {
createControlAndTargetContract,
validateControlType,
validateIsButtonType,
validateIsInputType,
} from './contract/index.js';
export { setToMidnight } from './date/index.js';
export { dispatchCustomEvent } from './event/index.js';
export { getOverflowContainer } from './overflow/index.js';
export { closePopover, openPopover, togglePopover } from './popover/index.js';
export { position, validatePlacement } from './position/index.js';
export { handleSlotChangeWithState } from './slot/index.js';
export { hasSlotText } from './slot/index.js';
|