UNPKG

design-react-kit

Version:

Componenti React per Bootstrap 5

1 lines 6.54 kB
{"version":3,"sources":["../../src/Progress/Progress.tsx","../../src/utils.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport isNumber from 'is-number';\nimport React, { ElementType, FC, HTMLAttributes } from 'react';\nimport { logError } from '../utils';\n\nexport interface ProgressProps extends HTMLAttributes<HTMLElement> {\n /** Utilizzarlo in caso di utilizzo di componenti personalizzati */\n tag?: ElementType;\n /**\n * Classi aggiuntive da usare per il componente contenitore del Progress\n * Per replicare il comportamento precedente, in cui `className` veniva applicato anche al wrapper,\n * passare `true`.\n * */\n wrapperClassName?: string | true;\n /** Classi aggiuntive da usare per il componente interno del Progress */\n className?: string;\n /** Valore corrente (numerico) */\n value?: number | string;\n /** Etichetta con testo per indicare il progresso corrente da mostrare ai dispositivi screen reader */\n label?: string;\n /** Quando non è possibile stabilire una percentuale di progressione utilizzare una Progress Bar di tipo indeterminato */\n indeterminate?: boolean;\n /** Le varianti di colore definite in Bootstrap Italia */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | string;\n testId?: string;\n}\n\nexport const Progress: FC<ProgressProps> = ({\n wrapperClassName,\n className,\n tag = 'div',\n value,\n label,\n indeterminate = false,\n color,\n testId,\n ...attributes\n}) => {\n const Tag = tag;\n if (!isNumber(value) && !indeterminate) {\n logError(`The passed \"value\" is not a valid number. You passed \"${value}\"`);\n }\n const numericValue = Number(value);\n const wrapperClasses = classNames('progress-bar-wrapper');\n const secondaryWrapperClasses = classNames(wrapperClassName === true ? className : wrapperClassName, 'progress', {\n 'progress-indeterminate': indeterminate,\n 'progress-color': color\n });\n const classes = classNames(className, 'progress-bar', {\n [`bg-${color}`]: color\n });\n\n if (label && numericValue) {\n return (\n <Tag className={wrapperClasses} data-testid={testId}>\n <div className='progress-bar-label'>\n <span className='visually-hidden'>{label}</span>\n {numericValue + '%'}\n </div>\n <Tag className={secondaryWrapperClasses}>\n <div\n {...attributes}\n className={classes}\n role='progressbar'\n style={{ width: numericValue + '%' }}\n aria-valuenow={numericValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </Tag>\n </Tag>\n );\n }\n\n return (\n <Tag className={secondaryWrapperClasses} data-testid={testId}>\n <div className='progress-bar-label'>\n <span className='visually-hidden'>{label}</span>\n </div>\n <div\n {...attributes}\n className={classes}\n role='progressbar'\n style={{ width: numericValue + '%' }}\n aria-valuenow={numericValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </Tag>\n );\n};\n","export const noop = () => {};\n\nexport const logError = (message: string) => {\n if (typeof console !== 'undefined') {\n if (console.error) {\n console.error(message);\n } else {\n console.log(message);\n }\n }\n};\n\n// @internal Used for testing purposes only\nexport const flushMessageCache = () => {\n for (const key in messages) {\n delete messages[key];\n }\n};\n\nconst messages: Record<string, 1> = {};\nexport const notifyDeprecation = (message: string, options: { once: boolean } = { once: true }) => {\n if (!options.once) {\n logError(message);\n } else {\n if (!messages[message]) {\n logError(message);\n messages[message] = 1;\n }\n }\n};\n\nexport function mapToCssModules(className: string | null, cssModules?: Record<string, string>) {\n const finalClassNames = className == null ? '' : className;\n if (!cssModules) {\n return finalClassNames;\n }\n return finalClassNames\n .split(' ')\n .map((klass) => cssModules[klass] ?? klass)\n .join(' ');\n}\n\ntype UnknownObject = Record<string, unknown>;\n\nexport function pick<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n const keysArray = Array.isArray(keys) ? keys : [keys];\n const newObj: Partial<T> = {};\n for (const key of keysArray) {\n if (key in obj) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport function omit<T extends UnknownObject>(obj: T, keys: keyof T | Array<keyof T>): Partial<T> {\n const keysLookup = new Set(Array.isArray(keys) ? keys : [keys]);\n\n const newObj: Partial<T> = {};\n for (const key in obj) {\n if (!keysLookup.has(key)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,2BACvBC,EAAqB,0BACrBC,EAAuD,sBCAhD,IAAMC,EAAYC,GAAoB,CACvC,OAAO,QAAY,MACjB,QAAQ,MACV,QAAQ,MAAMA,CAAO,EAErB,QAAQ,IAAIA,CAAO,EAGzB,EDiBO,IAAMC,EAA8B,CAAC,CAC1C,iBAAAC,EACA,UAAAC,EACA,IAAAC,EAAM,MACN,MAAAC,EACA,MAAAC,EACA,cAAAC,EAAgB,GAChB,MAAAC,EACA,OAAAC,EACA,GAAGC,CACL,IAAM,CACJ,IAAMC,EAAMP,EACR,IAAC,EAAAQ,SAASP,CAAK,GAAK,CAACE,GACvBM,EAAS,yDAAyDR,CAAK,GAAG,EAE5E,IAAMS,EAAe,OAAOT,CAAK,EAC3BU,KAAiB,EAAAC,SAAW,sBAAsB,EAClDC,KAA0B,EAAAD,SAAWd,IAAqB,GAAOC,EAAYD,EAAkB,WAAY,CAC/G,yBAA0BK,EAC1B,iBAAkBC,CACpB,CAAC,EACKU,KAAU,EAAAF,SAAWb,EAAW,eAAgB,CACpD,CAAC,MAAMK,CAAK,EAAE,EAAGA,CACnB,CAAC,EAED,OAAIF,GAASQ,EAET,EAAAK,QAAA,cAACR,EAAA,CAAI,UAAWI,EAAgB,cAAaN,GAC3C,EAAAU,QAAA,cAAC,OAAI,UAAU,sBACb,EAAAA,QAAA,cAAC,QAAK,UAAU,mBAAmBb,CAAM,EACxCQ,EAAe,GAClB,EACA,EAAAK,QAAA,cAACR,EAAA,CAAI,UAAWM,GACd,EAAAE,QAAA,cAAC,OACE,GAAGT,EACJ,UAAWQ,EACX,KAAK,cACL,MAAO,CAAE,MAAOJ,EAAe,GAAI,EACnC,gBAAeA,EACf,gBAAe,EACf,gBAAe,IACjB,CACF,CACF,EAKF,EAAAK,QAAA,cAACR,EAAA,CAAI,UAAWM,EAAyB,cAAaR,GACpD,EAAAU,QAAA,cAAC,OAAI,UAAU,sBACb,EAAAA,QAAA,cAAC,QAAK,UAAU,mBAAmBb,CAAM,CAC3C,EACA,EAAAa,QAAA,cAAC,OACE,GAAGT,EACJ,UAAWQ,EACX,KAAK,cACL,MAAO,CAAE,MAAOJ,EAAe,GAAI,EACnC,gBAAeA,EACf,gBAAe,EACf,gBAAe,IACjB,CACF,CAEJ","names":["Progress_exports","__export","Progress","__toCommonJS","import_classnames","import_is_number","import_react","logError","message","Progress","wrapperClassName","className","tag","value","label","indeterminate","color","testId","attributes","Tag","isNumber","logError","numericValue","wrapperClasses","classNames","secondaryWrapperClasses","classes","React"]}