@iabbb/bds-react 0.62.1 → 0.62.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,4 +7,5 @@ export type FieldCharacterCountdownProps = {
7
7
  label: string;
8
8
  maxCharacters: number;
9
9
  };
10
- export default function FieldCharacterCountdown({ error, hint, id, isOptional, label, maxCharacters, onChange, ...props }: FieldCharacterCountdownProps & React.ComponentPropsWithoutRef<'textarea'>): React.JSX.Element;
10
+ declare const FieldCharacterCountdown: React.ForwardRefExoticComponent<FieldCharacterCountdownProps & React.RefAttributes<HTMLTextAreaElement>>;
11
+ export default FieldCharacterCountdown;
@@ -202,7 +202,7 @@ function useDebounce(callback, delay) {
202
202
  }
203
203
 
204
204
  var _excluded = ["error", "hint", "id", "isOptional", "label", "maxCharacters", "onChange"];
205
- function FieldCharacterCountdown(_ref) {
205
+ var FieldCharacterCountdown = /*#__PURE__*/React__namespace.forwardRef(function (_ref) {
206
206
  var error = _ref.error,
207
207
  hint = _ref.hint,
208
208
  id = _ref.id,
@@ -249,7 +249,7 @@ function FieldCharacterCountdown(_ref) {
249
249
  "aria-live": "polite",
250
250
  className: "visually-hidden"
251
251
  }, characterCountdown.visuallyHiddenAnnouncement));
252
- }
252
+ });
253
253
 
254
254
  exports.default = FieldCharacterCountdown;
255
255
  exports.useCharacterCountdown = useCharacterCountdown;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/ErrorMessage/ErrorMessage.tsx","../../src/FieldCharacterCountdown/useCharacterCountdown.ts","../../src/FieldCharacterCountdown/FieldCharacterCountdown.tsx"],"sourcesContent":["// biome-ignore lint/style/useImportType: following this rule does not work for some reason\nimport * as React from 'react';\n\nexport default function ErrorMessage({ className, children, ...props }: React.ComponentPropsWithoutRef<'span'>) {\n return (\n <span className={['bds-error', className].filter((x) => x).join(' ')} {...props}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n aria-hidden=\"true\"\n height=\"1em\"\n width=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7.2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8.2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32z\" />\n </svg>\n {children}\n </span>\n );\n}\n","import * as React from 'react';\n\nconst visuallyHiddenAnnouncementUpdateTimeInSeconds = 1;\n\nexport default function useCharacterCountdown(maxCharacters: number, currentCharacters = 0) {\n const [remainingCharacters, setRemainingCharacters] = React.useState(maxCharacters - currentCharacters);\n\n // When JS fails to load, the default label 👇 will still let the user know about the limit.\n const [label, setLabel] = React.useState(`You can use up to ${maxCharacters} characters`);\n const [visuallyHiddenAnnouncement, setVisuallyHiddenAnnouncement] = React.useState(label);\n\n // This should lag behind the visual update -- otherwise, screen reader users will be interrupted with a lot of chatter while typing\n const updateVisuallyHiddenAnnouncement = useDebounce((charactersToAnnounce: number) => {\n if (charactersToAnnounce >= 0) {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce} characters remaining`);\n } else {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce * -1} characters too many`);\n }\n }, visuallyHiddenAnnouncementUpdateTimeInSeconds * 1000);\n\n React.useEffect(() => {\n if (remainingCharacters >= 0) {\n setLabel(`<strong>${remainingCharacters}</strong> characters remaining`);\n } else {\n setLabel(`You have <strong>${remainingCharacters * -1}</strong> characters too many`);\n }\n\n updateVisuallyHiddenAnnouncement(remainingCharacters);\n }, [remainingCharacters, updateVisuallyHiddenAnnouncement]);\n\n return {\n hasExceededLimit: remainingCharacters < 0,\n handleTextareaChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setRemainingCharacters(maxCharacters - e.target.value.length);\n },\n label,\n visuallyHiddenAnnouncement,\n };\n}\n\n/**\n * Simple debounce implementation. Will call the given\n * function once after the time given has passed since\n * it was last called.\n * Lifted from downshift/utils (not exposed in lib).\n * @param {Function} fn the function to call after the time\n * @param {Number} time the time to wait\n * @return {Function} the debounced function\n */\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction debounce(fn: (...rest: any[]) => any, time: number) {\n let timeoutId: number | null = 0;\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n\n function wrapper(...args) {\n cancel();\n timeoutId = setTimeout(() => {\n timeoutId = null;\n fn(...args);\n }, time);\n }\n\n wrapper.cancel = cancel;\n\n return wrapper;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction useDebounce<T extends (...rest: any[]) => any>(callback: T, delay: number) {\n return React.useRef(debounce((...params) => callback(...params), delay)).current;\n}\n","import * as React from 'react';\n\nimport ErrorMessage from '../ErrorMessage';\nimport useCharacterCountdown from './useCharacterCountdown';\n\nexport type FieldCharacterCountdownProps = {\n error?: string;\n hint?: React.ReactNode | string;\n id?: string;\n isOptional?: boolean;\n label: string;\n maxCharacters: number;\n};\n\nexport default function FieldCharacterCountdown({\n error,\n hint,\n id,\n isOptional = false,\n label,\n maxCharacters,\n onChange,\n ...props\n}: FieldCharacterCountdownProps & React.ComponentPropsWithoutRef<'textarea'>) {\n const characterCountdown = useCharacterCountdown(\n maxCharacters,\n ((props.value as string) || (props.defaultValue as string) || '').length,\n );\n\n id = id ?? props.name;\n\n const errorId = React.useId();\n const hintId = React.useId();\n\n return (\n <div className=\"bds-form-group\">\n <label htmlFor={id}>\n {label}\n {isOptional && ' (optional)'}\n </label>\n {hint && (\n <span className=\"bds-hint\" id={hintId}>\n {hint}\n </span>\n )}\n {error && <ErrorMessage id={errorId}>{error}</ErrorMessage>}\n <textarea\n aria-invalid={error ? true : undefined}\n aria-describedby={error && hint ? `${hintId} ${errorId}` : error ? errorId : hint ? hintId : undefined}\n className=\"bds-textarea\"\n id={id}\n onChange={(e) => {\n if (onChange) {\n onChange(e);\n }\n\n characterCountdown.handleTextareaChange(e);\n }}\n {...props}\n />\n <div\n aria-hidden=\"true\"\n className=\"bds-character-count\"\n data-exceeds-limit={characterCountdown.hasExceededLimit ? true : undefined}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: HTML is expected and used for highlighting the number itself\n dangerouslySetInnerHTML={{\n __html: characterCountdown.label,\n }}\n />\n <div aria-live=\"polite\" className=\"visually-hidden\">\n {characterCountdown.visuallyHiddenAnnouncement}\n </div>\n </div>\n );\n}\n"],"names":["ErrorMessage","_ref","className","children","props","_objectWithoutProperties","_excluded","React","createElement","_extends","filter","x","join","xmlns","viewBox","height","width","fill","d","visuallyHiddenAnnouncementUpdateTimeInSeconds","useCharacterCountdown","maxCharacters","currentCharacters","arguments","length","undefined","_React$useState","useState","_React$useState2","_slicedToArray","remainingCharacters","setRemainingCharacters","_React$useState3","concat","_React$useState4","label","setLabel","_React$useState5","_React$useState6","visuallyHiddenAnnouncement","setVisuallyHiddenAnnouncement","updateVisuallyHiddenAnnouncement","useDebounce","charactersToAnnounce","useEffect","hasExceededLimit","handleTextareaChange","e","target","value","debounce","fn","time","timeoutId","cancel","clearTimeout","wrapper","_len","args","Array","_key","setTimeout","apply","callback","delay","useRef","current","FieldCharacterCountdown","error","hint","id","_ref$isOptional","isOptional","onChange","characterCountdown","defaultValue","name","errorId","useId","hintId","htmlFor","dangerouslySetInnerHTML","__html"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/ErrorMessage/ErrorMessage.tsx","../../src/FieldCharacterCountdown/useCharacterCountdown.ts","../../src/FieldCharacterCountdown/FieldCharacterCountdown.tsx"],"sourcesContent":["// biome-ignore lint/style/useImportType: following this rule does not work for some reason\nimport * as React from 'react';\n\nexport default function ErrorMessage({ className, children, ...props }: React.ComponentPropsWithoutRef<'span'>) {\n return (\n <span className={['bds-error', className].filter((x) => x).join(' ')} {...props}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n aria-hidden=\"true\"\n height=\"1em\"\n width=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7.2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8.2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32z\" />\n </svg>\n {children}\n </span>\n );\n}\n","import * as React from 'react';\n\nconst visuallyHiddenAnnouncementUpdateTimeInSeconds = 1;\n\nexport default function useCharacterCountdown(maxCharacters: number, currentCharacters = 0) {\n const [remainingCharacters, setRemainingCharacters] = React.useState(maxCharacters - currentCharacters);\n\n // When JS fails to load, the default label 👇 will still let the user know about the limit.\n const [label, setLabel] = React.useState(`You can use up to ${maxCharacters} characters`);\n const [visuallyHiddenAnnouncement, setVisuallyHiddenAnnouncement] = React.useState(label);\n\n // This should lag behind the visual update -- otherwise, screen reader users will be interrupted with a lot of chatter while typing\n const updateVisuallyHiddenAnnouncement = useDebounce((charactersToAnnounce: number) => {\n if (charactersToAnnounce >= 0) {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce} characters remaining`);\n } else {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce * -1} characters too many`);\n }\n }, visuallyHiddenAnnouncementUpdateTimeInSeconds * 1000);\n\n React.useEffect(() => {\n if (remainingCharacters >= 0) {\n setLabel(`<strong>${remainingCharacters}</strong> characters remaining`);\n } else {\n setLabel(`You have <strong>${remainingCharacters * -1}</strong> characters too many`);\n }\n\n updateVisuallyHiddenAnnouncement(remainingCharacters);\n }, [remainingCharacters, updateVisuallyHiddenAnnouncement]);\n\n return {\n hasExceededLimit: remainingCharacters < 0,\n handleTextareaChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setRemainingCharacters(maxCharacters - e.target.value.length);\n },\n label,\n visuallyHiddenAnnouncement,\n };\n}\n\n/**\n * Simple debounce implementation. Will call the given\n * function once after the time given has passed since\n * it was last called.\n * Lifted from downshift/utils (not exposed in lib).\n * @param {Function} fn the function to call after the time\n * @param {Number} time the time to wait\n * @return {Function} the debounced function\n */\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction debounce(fn: (...rest: any[]) => any, time: number) {\n let timeoutId: number | null = 0;\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n\n function wrapper(...args) {\n cancel();\n timeoutId = setTimeout(() => {\n timeoutId = null;\n fn(...args);\n }, time);\n }\n\n wrapper.cancel = cancel;\n\n return wrapper;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction useDebounce<T extends (...rest: any[]) => any>(callback: T, delay: number) {\n return React.useRef(debounce((...params) => callback(...params), delay)).current;\n}\n","import * as React from 'react';\n\nimport ErrorMessage from '../ErrorMessage';\nimport useCharacterCountdown from './useCharacterCountdown';\n\nexport type FieldCharacterCountdownProps = {\n error?: string;\n hint?: React.ReactNode | string;\n id?: string;\n isOptional?: boolean;\n label: string;\n maxCharacters: number;\n};\n\nconst FieldCharacterCountdown = React.forwardRef<HTMLTextAreaElement, FieldCharacterCountdownProps>(\n ({\n error,\n hint,\n id,\n isOptional = false,\n label,\n maxCharacters,\n onChange,\n ...props\n }: FieldCharacterCountdownProps & React.ComponentPropsWithoutRef<'textarea'>) => {\n const characterCountdown = useCharacterCountdown(\n maxCharacters,\n ((props.value as string) || (props.defaultValue as string) || '').length,\n );\n\n id = id ?? props.name;\n\n const errorId = React.useId();\n const hintId = React.useId();\n\n return (\n <div className=\"bds-form-group\">\n <label htmlFor={id}>\n {label}\n {isOptional && ' (optional)'}\n </label>\n {hint && (\n <span className=\"bds-hint\" id={hintId}>\n {hint}\n </span>\n )}\n {error && <ErrorMessage id={errorId}>{error}</ErrorMessage>}\n <textarea\n aria-invalid={error ? true : undefined}\n aria-describedby={error && hint ? `${hintId} ${errorId}` : error ? errorId : hint ? hintId : undefined}\n className=\"bds-textarea\"\n id={id}\n onChange={(e) => {\n if (onChange) {\n onChange(e);\n }\n\n characterCountdown.handleTextareaChange(e);\n }}\n {...props}\n />\n <div\n aria-hidden=\"true\"\n className=\"bds-character-count\"\n data-exceeds-limit={characterCountdown.hasExceededLimit ? true : undefined}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: HTML is expected and used for highlighting the number itself\n dangerouslySetInnerHTML={{\n __html: characterCountdown.label,\n }}\n />\n <div aria-live=\"polite\" className=\"visually-hidden\">\n {characterCountdown.visuallyHiddenAnnouncement}\n </div>\n </div>\n );\n },\n);\n\nexport default FieldCharacterCountdown;\n"],"names":["ErrorMessage","_ref","className","children","props","_objectWithoutProperties","_excluded","React","createElement","_extends","filter","x","join","xmlns","viewBox","height","width","fill","d","visuallyHiddenAnnouncementUpdateTimeInSeconds","useCharacterCountdown","maxCharacters","currentCharacters","arguments","length","undefined","_React$useState","useState","_React$useState2","_slicedToArray","remainingCharacters","setRemainingCharacters","_React$useState3","concat","_React$useState4","label","setLabel","_React$useState5","_React$useState6","visuallyHiddenAnnouncement","setVisuallyHiddenAnnouncement","updateVisuallyHiddenAnnouncement","useDebounce","charactersToAnnounce","useEffect","hasExceededLimit","handleTextareaChange","e","target","value","debounce","fn","time","timeoutId","cancel","clearTimeout","wrapper","_len","args","Array","_key","setTimeout","apply","callback","delay","useRef","current","FieldCharacterCountdown","forwardRef","error","hint","id","_ref$isOptional","isOptional","onChange","characterCountdown","defaultValue","name","errorId","useId","hintId","htmlFor","dangerouslySetInnerHTML","__html"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGe,SAASA,YAAYA,CAAAC,IAAA,EAA4E;AAAA,EAAA,IAAzEC,SAAS,GAAAD,IAAA,CAATC,SAAS;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;AAAKC,IAAAA,KAAK,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,WAAA,CAAA;AAClE,EAAA,oBACEC,gBAAA,CAAAC,aAAA,CAAA,MAAA,EAAAC,QAAA,CAAA;IAAMP,SAAS,EAAE,CAAC,WAAW,EAAEA,SAAS,CAAC,CAACQ,MAAM,CAAC,UAACC,CAAC,EAAA;AAAA,MAAA,OAAKA,CAAC;IAAA,CAAA,CAAC,CAACC,IAAI,CAAC,GAAG;AAAE,GAAA,EAAKR,KAAK,CAAA,eAC7EG,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEK,IAAAA,KAAK,EAAC,4BAA4B;AAClCC,IAAAA,OAAO,EAAC,aAAa;AACrB,IAAA,aAAA,EAAY,MAAM;AAClBC,IAAAA,MAAM,EAAC,KAAK;AACZC,IAAAA,KAAK,EAAC,KAAK;AACXC,IAAAA,IAAI,EAAC;GAAc,eAEnBV,gBAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMU,IAAAA,CAAC,EAAC;AAA4U,GAAE,CACnV,CAAC,EACLf,QACG,CAAC;AAEX;;ACjBA,IAAMgB,6CAA6C,GAAG,CAAC;AAExC,SAASC,qBAAqBA,CAACC,aAAqB,EAAyB;AAAA,EAAA,IAAvBC,iBAAiB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC;EACxF,IAAAG,eAAA,GAAsDnB,gBAAK,CAACoB,QAAQ,CAACN,aAAa,GAAGC,iBAAiB,CAAC;IAAAM,gBAAA,GAAAC,cAAA,CAAAH,eAAA,EAAA,CAAA,CAAA;AAAhGI,IAAAA,mBAAmB,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,sBAAsB,GAAAH,gBAAA,CAAA,CAAA,CAAA;;AAElD;EACA,IAAAI,gBAAA,GAA0BzB,gBAAK,CAACoB,QAAQ,sBAAAM,MAAA,CAAsBZ,aAAa,EAAA,aAAA,CAAa,CAAC;IAAAa,gBAAA,GAAAL,cAAA,CAAAG,gBAAA,EAAA,CAAA,CAAA;AAAlFG,IAAAA,KAAK,GAAAD,gBAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,QAAQ,GAAAF,gBAAA,CAAA,CAAA,CAAA;AACtB,EAAA,IAAAG,gBAAA,GAAoE9B,gBAAK,CAACoB,QAAQ,CAACQ,KAAK,CAAC;IAAAG,gBAAA,GAAAT,cAAA,CAAAQ,gBAAA,EAAA,CAAA,CAAA;AAAlFE,IAAAA,0BAA0B,GAAAD,gBAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,6BAA6B,GAAAF,gBAAA,CAAA,CAAA,CAAA;;AAEhE;AACA,EAAA,IAAMG,gCAAgC,GAAGC,WAAW,CAAC,UAACC,oBAA4B,EAAK;IACrF,IAAIA,oBAAoB,IAAI,CAAC,EAAE;AAC7BH,MAAAA,6BAA6B,CAAA,WAAA,CAAAP,MAAA,CAAaU,oBAAoB,0BAAuB,CAAC;AACxF,IAAA,CAAC,MAAM;MACLH,6BAA6B,CAAA,WAAA,CAAAP,MAAA,CAAaU,oBAAoB,GAAG,EAAE,yBAAsB,CAAC;AAC5F,IAAA;AACF,EAAA,CAAC,EAAExB,6CAA6C,GAAG,IAAI,CAAC;EAExDZ,gBAAK,CAACqC,SAAS,CAAC,YAAM;IACpB,IAAId,mBAAmB,IAAI,CAAC,EAAE;AAC5BM,MAAAA,QAAQ,CAAA,UAAA,CAAAH,MAAA,CAAYH,mBAAmB,mCAAgC,CAAC;AAC1E,IAAA,CAAC,MAAM;MACLM,QAAQ,CAAA,mBAAA,CAAAH,MAAA,CAAqBH,mBAAmB,GAAG,EAAE,kCAA+B,CAAC;AACvF,IAAA;IAEAW,gCAAgC,CAACX,mBAAmB,CAAC;AACvD,EAAA,CAAC,EAAE,CAACA,mBAAmB,EAAEW,gCAAgC,CAAC,CAAC;EAE3D,OAAO;IACLI,gBAAgB,EAAEf,mBAAmB,GAAG,CAAC;AACzCgB,IAAAA,oBAAoB,EAAE,SAAtBA,oBAAoBA,CAAGC,CAAyC,EAAK;MACnEhB,sBAAsB,CAACV,aAAa,GAAG0B,CAAC,CAACC,MAAM,CAACC,KAAK,CAACzB,MAAM,CAAC;IAC/D,CAAC;AACDW,IAAAA,KAAK,EAALA,KAAK;AACLI,IAAAA,0BAA0B,EAA1BA;GACD;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,QAAQA,CAACC,EAA2B,EAAEC,IAAY,EAAE;EAC3D,IAAIC,SAAwB,GAAG,CAAC;EAEhC,SAASC,MAAMA,GAAG;AAChB,IAAA,IAAID,SAAS,EAAE;MACbE,YAAY,CAACF,SAAS,CAAC;AACzB,IAAA;AACF,EAAA;EAEA,SAASG,OAAOA,GAAU;AAAA,IAAA,KAAA,IAAAC,IAAA,GAAAlC,SAAA,CAAAC,MAAA,EAANkC,IAAI,GAAA,IAAAC,KAAA,CAAAF,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAJF,MAAAA,IAAI,CAAAE,IAAA,CAAA,GAAArC,SAAA,CAAAqC,IAAA,CAAA;AAAA,IAAA;AACtBN,IAAAA,MAAM,EAAE;IACRD,SAAS,GAAGQ,UAAU,CAAC,YAAM;AAC3BR,MAAAA,SAAS,GAAG,IAAI;AAChBF,MAAAA,EAAE,CAAAW,KAAA,CAAA,MAAA,EAAIJ,IAAI,CAAC;IACb,CAAC,EAAEN,IAAI,CAAC;AACV,EAAA;EAEAI,OAAO,CAACF,MAAM,GAAGA,MAAM;AAEvB,EAAA,OAAOE,OAAO;AAChB;;AAEA;AACA,SAASd,WAAWA,CAAoCqB,QAAW,EAAEC,KAAa,EAAE;AAClF,EAAA,OAAOzD,gBAAK,CAAC0D,MAAM,CAACf,QAAQ,CAAC,YAAA;AAAA,IAAA,OAAea,QAAQ,CAAAD,KAAA,CAAA,MAAA,EAAAvC,SAAU,CAAC;AAAA,EAAA,CAAA,EAAEyC,KAAK,CAAC,CAAC,CAACE,OAAO;AAClF;;;AC7DA,IAAMC,uBAAuB,gBAAG5D,gBAAK,CAAC6D,UAAU,CAC9C,UAAAnE,IAAA,EASiF;AAAA,EAAA,IAR/EoE,KAAK,GAAApE,IAAA,CAALoE,KAAK;IACLC,IAAI,GAAArE,IAAA,CAAJqE,IAAI;IACJC,EAAE,GAAAtE,IAAA,CAAFsE,EAAE;IAAAC,eAAA,GAAAvE,IAAA,CACFwE,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,eAAA;IAClBrC,KAAK,GAAAlC,IAAA,CAALkC,KAAK;IACLd,aAAa,GAAApB,IAAA,CAAboB,aAAa;IACbqD,SAAQ,GAAAzE,IAAA,CAARyE,QAAQ;AACLtE,IAAAA,KAAK,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA,CAAA;AAER,EAAA,IAAMqE,kBAAkB,GAAGvD,qBAAqB,CAC9CC,aAAa,EACb,CAAEjB,KAAK,CAAC6C,KAAK,IAAgB7C,KAAK,CAACwE,YAAuB,IAAI,EAAE,EAAEpD,MACpE,CAAC;EAED+C,EAAE,GAAGA,EAAE,KAAA,IAAA,IAAFA,EAAE,cAAFA,EAAE,GAAInE,KAAK,CAACyE,IAAI;AAErB,EAAA,IAAMC,OAAO,GAAGvE,gBAAK,CAACwE,KAAK,EAAE;AAC7B,EAAA,IAAMC,MAAM,GAAGzE,gBAAK,CAACwE,KAAK,EAAE;EAE5B,oBACExE,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKN,IAAAA,SAAS,EAAC;GAAgB,eAC7BK,gBAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOyE,IAAAA,OAAO,EAAEV;GAAG,EAChBpC,KAAK,EACLsC,UAAU,IAAI,aACV,CAAC,EACPH,IAAI,iBACH/D,gBAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMN,IAAAA,SAAS,EAAC,UAAU;AAACqE,IAAAA,EAAE,EAAES;GAAO,EACnCV,IACG,CACP,EACAD,KAAK,iBAAI9D,gBAAA,CAAAC,aAAA,CAACR,YAAY,EAAA;AAACuE,IAAAA,EAAE,EAAEO;AAAQ,GAAA,EAAET,KAAoB,CAAC,eAC3D9D,gBAAA,CAAAC,aAAA,aAAAC,QAAA,CAAA;AACE,IAAA,cAAA,EAAc4D,KAAK,GAAG,IAAI,GAAG5C,SAAU;IACvC,kBAAA,EAAkB4C,KAAK,IAAIC,IAAI,GAAA,EAAA,CAAArC,MAAA,CAAM+C,MAAM,OAAA/C,MAAA,CAAI6C,OAAO,CAAA,GAAKT,KAAK,GAAGS,OAAO,GAAGR,IAAI,GAAGU,MAAM,GAAGvD,SAAU;AACvGvB,IAAAA,SAAS,EAAC,cAAc;AACxBqE,IAAAA,EAAE,EAAEA,EAAG;AACPG,IAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAG3B,CAAC,EAAK;AACf,MAAA,IAAI2B,SAAQ,EAAE;QACZA,SAAQ,CAAC3B,CAAC,CAAC;AACb,MAAA;AAEA4B,MAAAA,kBAAkB,CAAC7B,oBAAoB,CAACC,CAAC,CAAC;AAC5C,IAAA;AAAE,GAAA,EACE3C,KAAK,CACV,CAAC,eACFG,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE,IAAA,aAAA,EAAY,MAAM;AAClBN,IAAAA,SAAS,EAAC,qBAAqB;AAC/B,IAAA,oBAAA,EAAoByE,kBAAkB,CAAC9B,gBAAgB,GAAG,IAAI,GAAGpB;AACjE;AAAA;AACAyD,IAAAA,uBAAuB,EAAE;MACvBC,MAAM,EAAER,kBAAkB,CAACxC;AAC7B;AAAE,GACH,CAAC,eACF5B,gBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK,IAAA,WAAA,EAAU,QAAQ;AAACN,IAAAA,SAAS,EAAC;AAAiB,GAAA,EAChDyE,kBAAkB,CAACpC,0BACjB,CACF,CAAC;AAEV,CACF;;;;;"}
@@ -179,7 +179,7 @@ function useDebounce(callback, delay) {
179
179
  }
180
180
 
181
181
  var _excluded = ["error", "hint", "id", "isOptional", "label", "maxCharacters", "onChange"];
182
- function FieldCharacterCountdown(_ref) {
182
+ var FieldCharacterCountdown = /*#__PURE__*/React.forwardRef(function (_ref) {
183
183
  var error = _ref.error,
184
184
  hint = _ref.hint,
185
185
  id = _ref.id,
@@ -226,7 +226,7 @@ function FieldCharacterCountdown(_ref) {
226
226
  "aria-live": "polite",
227
227
  className: "visually-hidden"
228
228
  }, characterCountdown.visuallyHiddenAnnouncement));
229
- }
229
+ });
230
230
 
231
231
  export { FieldCharacterCountdown as default, useCharacterCountdown };
232
232
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/ErrorMessage/ErrorMessage.tsx","../../src/FieldCharacterCountdown/useCharacterCountdown.ts","../../src/FieldCharacterCountdown/FieldCharacterCountdown.tsx"],"sourcesContent":["// biome-ignore lint/style/useImportType: following this rule does not work for some reason\nimport * as React from 'react';\n\nexport default function ErrorMessage({ className, children, ...props }: React.ComponentPropsWithoutRef<'span'>) {\n return (\n <span className={['bds-error', className].filter((x) => x).join(' ')} {...props}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n aria-hidden=\"true\"\n height=\"1em\"\n width=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7.2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8.2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32z\" />\n </svg>\n {children}\n </span>\n );\n}\n","import * as React from 'react';\n\nconst visuallyHiddenAnnouncementUpdateTimeInSeconds = 1;\n\nexport default function useCharacterCountdown(maxCharacters: number, currentCharacters = 0) {\n const [remainingCharacters, setRemainingCharacters] = React.useState(maxCharacters - currentCharacters);\n\n // When JS fails to load, the default label 👇 will still let the user know about the limit.\n const [label, setLabel] = React.useState(`You can use up to ${maxCharacters} characters`);\n const [visuallyHiddenAnnouncement, setVisuallyHiddenAnnouncement] = React.useState(label);\n\n // This should lag behind the visual update -- otherwise, screen reader users will be interrupted with a lot of chatter while typing\n const updateVisuallyHiddenAnnouncement = useDebounce((charactersToAnnounce: number) => {\n if (charactersToAnnounce >= 0) {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce} characters remaining`);\n } else {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce * -1} characters too many`);\n }\n }, visuallyHiddenAnnouncementUpdateTimeInSeconds * 1000);\n\n React.useEffect(() => {\n if (remainingCharacters >= 0) {\n setLabel(`<strong>${remainingCharacters}</strong> characters remaining`);\n } else {\n setLabel(`You have <strong>${remainingCharacters * -1}</strong> characters too many`);\n }\n\n updateVisuallyHiddenAnnouncement(remainingCharacters);\n }, [remainingCharacters, updateVisuallyHiddenAnnouncement]);\n\n return {\n hasExceededLimit: remainingCharacters < 0,\n handleTextareaChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setRemainingCharacters(maxCharacters - e.target.value.length);\n },\n label,\n visuallyHiddenAnnouncement,\n };\n}\n\n/**\n * Simple debounce implementation. Will call the given\n * function once after the time given has passed since\n * it was last called.\n * Lifted from downshift/utils (not exposed in lib).\n * @param {Function} fn the function to call after the time\n * @param {Number} time the time to wait\n * @return {Function} the debounced function\n */\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction debounce(fn: (...rest: any[]) => any, time: number) {\n let timeoutId: number | null = 0;\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n\n function wrapper(...args) {\n cancel();\n timeoutId = setTimeout(() => {\n timeoutId = null;\n fn(...args);\n }, time);\n }\n\n wrapper.cancel = cancel;\n\n return wrapper;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction useDebounce<T extends (...rest: any[]) => any>(callback: T, delay: number) {\n return React.useRef(debounce((...params) => callback(...params), delay)).current;\n}\n","import * as React from 'react';\n\nimport ErrorMessage from '../ErrorMessage';\nimport useCharacterCountdown from './useCharacterCountdown';\n\nexport type FieldCharacterCountdownProps = {\n error?: string;\n hint?: React.ReactNode | string;\n id?: string;\n isOptional?: boolean;\n label: string;\n maxCharacters: number;\n};\n\nexport default function FieldCharacterCountdown({\n error,\n hint,\n id,\n isOptional = false,\n label,\n maxCharacters,\n onChange,\n ...props\n}: FieldCharacterCountdownProps & React.ComponentPropsWithoutRef<'textarea'>) {\n const characterCountdown = useCharacterCountdown(\n maxCharacters,\n ((props.value as string) || (props.defaultValue as string) || '').length,\n );\n\n id = id ?? props.name;\n\n const errorId = React.useId();\n const hintId = React.useId();\n\n return (\n <div className=\"bds-form-group\">\n <label htmlFor={id}>\n {label}\n {isOptional && ' (optional)'}\n </label>\n {hint && (\n <span className=\"bds-hint\" id={hintId}>\n {hint}\n </span>\n )}\n {error && <ErrorMessage id={errorId}>{error}</ErrorMessage>}\n <textarea\n aria-invalid={error ? true : undefined}\n aria-describedby={error && hint ? `${hintId} ${errorId}` : error ? errorId : hint ? hintId : undefined}\n className=\"bds-textarea\"\n id={id}\n onChange={(e) => {\n if (onChange) {\n onChange(e);\n }\n\n characterCountdown.handleTextareaChange(e);\n }}\n {...props}\n />\n <div\n aria-hidden=\"true\"\n className=\"bds-character-count\"\n data-exceeds-limit={characterCountdown.hasExceededLimit ? true : undefined}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: HTML is expected and used for highlighting the number itself\n dangerouslySetInnerHTML={{\n __html: characterCountdown.label,\n }}\n />\n <div aria-live=\"polite\" className=\"visually-hidden\">\n {characterCountdown.visuallyHiddenAnnouncement}\n </div>\n </div>\n );\n}\n"],"names":["ErrorMessage","_ref","className","children","props","_objectWithoutProperties","_excluded","React","createElement","_extends","filter","x","join","xmlns","viewBox","height","width","fill","d","visuallyHiddenAnnouncementUpdateTimeInSeconds","useCharacterCountdown","maxCharacters","currentCharacters","arguments","length","undefined","_React$useState","useState","_React$useState2","_slicedToArray","remainingCharacters","setRemainingCharacters","_React$useState3","concat","_React$useState4","label","setLabel","_React$useState5","_React$useState6","visuallyHiddenAnnouncement","setVisuallyHiddenAnnouncement","updateVisuallyHiddenAnnouncement","useDebounce","charactersToAnnounce","useEffect","hasExceededLimit","handleTextareaChange","e","target","value","debounce","fn","time","timeoutId","cancel","clearTimeout","wrapper","_len","args","Array","_key","setTimeout","apply","callback","delay","useRef","current","FieldCharacterCountdown","error","hint","id","_ref$isOptional","isOptional","onChange","characterCountdown","defaultValue","name","errorId","useId","hintId","htmlFor","dangerouslySetInnerHTML","__html"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/ErrorMessage/ErrorMessage.tsx","../../src/FieldCharacterCountdown/useCharacterCountdown.ts","../../src/FieldCharacterCountdown/FieldCharacterCountdown.tsx"],"sourcesContent":["// biome-ignore lint/style/useImportType: following this rule does not work for some reason\nimport * as React from 'react';\n\nexport default function ErrorMessage({ className, children, ...props }: React.ComponentPropsWithoutRef<'span'>) {\n return (\n <span className={['bds-error', className].filter((x) => x).join(' ')} {...props}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n aria-hidden=\"true\"\n height=\"1em\"\n width=\"1em\"\n fill=\"currentColor\"\n >\n <path d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7.2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8.2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32z\" />\n </svg>\n {children}\n </span>\n );\n}\n","import * as React from 'react';\n\nconst visuallyHiddenAnnouncementUpdateTimeInSeconds = 1;\n\nexport default function useCharacterCountdown(maxCharacters: number, currentCharacters = 0) {\n const [remainingCharacters, setRemainingCharacters] = React.useState(maxCharacters - currentCharacters);\n\n // When JS fails to load, the default label 👇 will still let the user know about the limit.\n const [label, setLabel] = React.useState(`You can use up to ${maxCharacters} characters`);\n const [visuallyHiddenAnnouncement, setVisuallyHiddenAnnouncement] = React.useState(label);\n\n // This should lag behind the visual update -- otherwise, screen reader users will be interrupted with a lot of chatter while typing\n const updateVisuallyHiddenAnnouncement = useDebounce((charactersToAnnounce: number) => {\n if (charactersToAnnounce >= 0) {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce} characters remaining`);\n } else {\n setVisuallyHiddenAnnouncement(`You have ${charactersToAnnounce * -1} characters too many`);\n }\n }, visuallyHiddenAnnouncementUpdateTimeInSeconds * 1000);\n\n React.useEffect(() => {\n if (remainingCharacters >= 0) {\n setLabel(`<strong>${remainingCharacters}</strong> characters remaining`);\n } else {\n setLabel(`You have <strong>${remainingCharacters * -1}</strong> characters too many`);\n }\n\n updateVisuallyHiddenAnnouncement(remainingCharacters);\n }, [remainingCharacters, updateVisuallyHiddenAnnouncement]);\n\n return {\n hasExceededLimit: remainingCharacters < 0,\n handleTextareaChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setRemainingCharacters(maxCharacters - e.target.value.length);\n },\n label,\n visuallyHiddenAnnouncement,\n };\n}\n\n/**\n * Simple debounce implementation. Will call the given\n * function once after the time given has passed since\n * it was last called.\n * Lifted from downshift/utils (not exposed in lib).\n * @param {Function} fn the function to call after the time\n * @param {Number} time the time to wait\n * @return {Function} the debounced function\n */\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction debounce(fn: (...rest: any[]) => any, time: number) {\n let timeoutId: number | null = 0;\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n\n function wrapper(...args) {\n cancel();\n timeoutId = setTimeout(() => {\n timeoutId = null;\n fn(...args);\n }, time);\n }\n\n wrapper.cancel = cancel;\n\n return wrapper;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know or care what parameters the function accepts\nfunction useDebounce<T extends (...rest: any[]) => any>(callback: T, delay: number) {\n return React.useRef(debounce((...params) => callback(...params), delay)).current;\n}\n","import * as React from 'react';\n\nimport ErrorMessage from '../ErrorMessage';\nimport useCharacterCountdown from './useCharacterCountdown';\n\nexport type FieldCharacterCountdownProps = {\n error?: string;\n hint?: React.ReactNode | string;\n id?: string;\n isOptional?: boolean;\n label: string;\n maxCharacters: number;\n};\n\nconst FieldCharacterCountdown = React.forwardRef<HTMLTextAreaElement, FieldCharacterCountdownProps>(\n ({\n error,\n hint,\n id,\n isOptional = false,\n label,\n maxCharacters,\n onChange,\n ...props\n }: FieldCharacterCountdownProps & React.ComponentPropsWithoutRef<'textarea'>) => {\n const characterCountdown = useCharacterCountdown(\n maxCharacters,\n ((props.value as string) || (props.defaultValue as string) || '').length,\n );\n\n id = id ?? props.name;\n\n const errorId = React.useId();\n const hintId = React.useId();\n\n return (\n <div className=\"bds-form-group\">\n <label htmlFor={id}>\n {label}\n {isOptional && ' (optional)'}\n </label>\n {hint && (\n <span className=\"bds-hint\" id={hintId}>\n {hint}\n </span>\n )}\n {error && <ErrorMessage id={errorId}>{error}</ErrorMessage>}\n <textarea\n aria-invalid={error ? true : undefined}\n aria-describedby={error && hint ? `${hintId} ${errorId}` : error ? errorId : hint ? hintId : undefined}\n className=\"bds-textarea\"\n id={id}\n onChange={(e) => {\n if (onChange) {\n onChange(e);\n }\n\n characterCountdown.handleTextareaChange(e);\n }}\n {...props}\n />\n <div\n aria-hidden=\"true\"\n className=\"bds-character-count\"\n data-exceeds-limit={characterCountdown.hasExceededLimit ? true : undefined}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: HTML is expected and used for highlighting the number itself\n dangerouslySetInnerHTML={{\n __html: characterCountdown.label,\n }}\n />\n <div aria-live=\"polite\" className=\"visually-hidden\">\n {characterCountdown.visuallyHiddenAnnouncement}\n </div>\n </div>\n );\n },\n);\n\nexport default FieldCharacterCountdown;\n"],"names":["ErrorMessage","_ref","className","children","props","_objectWithoutProperties","_excluded","React","createElement","_extends","filter","x","join","xmlns","viewBox","height","width","fill","d","visuallyHiddenAnnouncementUpdateTimeInSeconds","useCharacterCountdown","maxCharacters","currentCharacters","arguments","length","undefined","_React$useState","useState","_React$useState2","_slicedToArray","remainingCharacters","setRemainingCharacters","_React$useState3","concat","_React$useState4","label","setLabel","_React$useState5","_React$useState6","visuallyHiddenAnnouncement","setVisuallyHiddenAnnouncement","updateVisuallyHiddenAnnouncement","useDebounce","charactersToAnnounce","useEffect","hasExceededLimit","handleTextareaChange","e","target","value","debounce","fn","time","timeoutId","cancel","clearTimeout","wrapper","_len","args","Array","_key","setTimeout","apply","callback","delay","useRef","current","FieldCharacterCountdown","forwardRef","error","hint","id","_ref$isOptional","isOptional","onChange","characterCountdown","defaultValue","name","errorId","useId","hintId","htmlFor","dangerouslySetInnerHTML","__html"],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@iabbb/bds-react",
3
- "version": "0.62.1",
3
+ "version": "0.62.2",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "build": "cross-env NODE_ENV=production rollup -c",
7
7
  "dev": "rollup -c -w"
8
8
  },
9
9
  "devDependencies": {
10
- "@babel/core": "7.28.3",
10
+ "@babel/core": "7.28.4",
11
11
  "@babel/preset-env": "7.28.3",
12
12
  "@babel/preset-react": "7.27.1",
13
13
  "@babel/preset-typescript": "7.27.1",
@@ -20,7 +20,7 @@
20
20
  "cross-env": "10.0.0",
21
21
  "glob": "11.0.3",
22
22
  "react": "18.3.1",
23
- "rollup": "4.46.3",
23
+ "rollup": "4.52.2",
24
24
  "rollup-plugin-delete": "3.0.1",
25
25
  "rollup-plugin-generate-package-json": "3.2.0",
26
26
  "rollup-plugin-peer-deps-external": "2.2.4",
@@ -28,7 +28,7 @@
28
28
  "typescript": "5.7.2"
29
29
  },
30
30
  "peerDependencies": {
31
- "@iabbb/bds": "0.62.1",
31
+ "@iabbb/bds": "0.62.2",
32
32
  "react": "^18.0.0 || ^19.0.0"
33
33
  }
34
34
  }