@lifesg/react-design-system 3.5.0-canary.3 → 3.5.0-canary.5

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.
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../_virtual/_tslib.js"),t=require("react/jsx-runtime"),i=require("@lifesg/react-icons"),r=require("react"),l=require("../external/react-resize-detector/build/index.esm.js");require("../animations/loading-spinner/loading-spinner.js"),require("../animations/loading-dots/loading-dots.js");var n=require("../animations/loading-dots-spinner/loading-dots-spinner.js");require("styled-components");var s=require("../checkbox/checkbox.js"),o=require("../error-display/error-display.js");require("../error-display/helper.js");var a=require("../shared/accessibility/index.js"),d=require("../typography/typography.js");require("../util/calendar-helper.js"),require("../util/date-helper.js"),require("../util/date-input-helper.js");var c=require("../util/simple-id-generator.js");require("../util/string-helper.js"),require("@react-aria/live-announcer");var u=require("../util/use-event.js"),h=require("../util/use-event-listener.js"),p=require("../util/use-throttle.js"),g=require("./data-table.styles.js");exports.DataTable=b=>{var{id:y,headers:j,rows:x,className:w,sortIndicators:m,alternatingRows:f,loadState:C="success",enableMultiSelect:$,selectedIds:v,disabledIds:k,enableActionBar:S,enableSelectAll:B,enableStickyHeader:q,emptyView:H,actionBarContent:R,renderCustomEmptyView:T,onHeaderClick:A,onSelect:I,onSelectAll:E,onClearSelectionClick:D}=b,W=e.__rest(b,["id","headers","rows","className","sortIndicators","alternatingRows","loadState","enableMultiSelect","selectedIds","disabledIds","enableActionBar","enableSelectAll","enableStickyHeader","emptyView","actionBarContent","renderCustomEmptyView","onHeaderClick","onSelect","onSelectAll","onClearSelectionClick"]);const L=r.useRef(null),V=r.useRef(null),N=r.useRef(null),K=r.useRef(null),M=c.useId(),_=j.filter((e=>"string"!=typeof e&&!!e.keyColumn)),[z,F]=r.useState("inline"),[O,P]=r.useState(!1),[U,G]=r.useState(!1),J=u.useEvent((()=>{ae()}));r.useEffect((()=>{J()}),[J]);const Q=p.useThrottle((()=>ae()),100);l.useResizeDetector({targetRef:K,onResize:()=>Q()}),h.useEventListener("scroll",Q),h.useEventListener("scroll",Q,K.current);const X=()=>!!(x&&x.length&&v)&&v.length===x.length,Y=e=>!!(null==v?void 0:v.includes(e)),Z=e=>!!f&&e%2==1,ee=e=>!!(null==k?void 0:k.includes(e)),te=e=>{if(W["data-testid"])return`${W["data-testid"]}-${e}`},ie=()=>j.length+($?1:0),re=e=>null==m?void 0:m[e],le=e=>{const t=re(e);if(t)return"asc"===t?"ascending":"descending"},ne=e=>` by ${"asc"===re(e)?"descending":"ascending"} order`,se=(e,t)=>`${M}-row-${e}-${t}-key-column`,oe=e=>{const t=_.map((t=>se(e,t.fieldKey)));return a.concatIds(...t)},ae=()=>{if(!K.current||!V.current||!N.current)return;const e=K.current.getBoundingClientRect(),t=V.current.getBoundingClientRect();let i="inline";const r=K.current.scrollHeight>K.current.clientHeight;if(e.top>window.innerHeight||e.bottom<0?i="inline":r?e.top>0&&e.top<window.innerHeight&&e.bottom>0&&e.bottom<window.innerHeight||e.top<0&&e.bottom>0&&e.bottom<window.innerHeight?i="sticky":e.bottom>window.innerHeight&&Math.max(e.top,t.bottom)+t.height<window.innerHeight&&(i="fixed"):e.bottom>window.innerHeight&&t.bottom+t.height<window.innerHeight&&(i="fixed"),P(r),F(i),"fixed"===i)G(!0);else if("sticky"===i){const e=K.current.scrollTop+K.current.clientHeight<K.current.scrollHeight;G(e)}else G(!1)},de=e=>{const{fieldKey:i,label:r,clickable:l=!1,style:n}="string"==typeof e?{fieldKey:e,label:e,style:void 0}:e,s=!!re(i),o=(e=>`${M}-header-${e}`)(i);return t.jsxs(g.HeaderCell,{"data-testid":te(`header-${i}`),$clickable:l,scope:"col","aria-sort":le(i),style:n,$isCheckbox:!1,onClick:()=>(e=>{null==A||A(e)})(i),children:[t.jsxs(g.HeaderCellWrapper,{id:o,children:["string"==typeof r?t.jsx(d.Typography.BodyBL,{weight:"bold",children:r}):r,ce(i)]}),(l||s)&&t.jsx(a.VisuallyHidden,{children:t.jsxs("button",{onClick:e=>((e,t)=>{e.stopPropagation(),null==A||A(t)})(e,i),children:[s&&"Sort ",t.jsx("span",{"aria-labelledby":o}),s&&ne(i)]})})]},i)},ce=e=>{const r=null==m?void 0:m[e];return r?"asc"===r?t.jsx(i.ArrowUpIcon,{"aria-hidden":!0,"data-testid":te(`header-${e}-arrowup`)}):t.jsx(i.ArrowDownIcon,{"aria-hidden":!0,"data-testid":te(`header-${e}-arrowdown`)}):t.jsx(t.Fragment,{})},ue=()=>t.jsx(g.HeaderCell,{"data-testid":te("header-selection"),$clickable:!1,$isCheckbox:!0,scope:"col",children:t.jsxs(g.CheckBoxWrapper,{children:[t.jsx(a.VisuallyHidden,{children:"Row selection"}),B&&t.jsx(s.Checkbox,{checked:X(),indeterminate:!!v&&0!==v.length&&!X(),disabled:!x||!x.length||!v,"aria-label":"Select all rows",onClick:()=>{E&&E(X())}})]})}),he=(e,i)=>{const r="string"!=typeof e?e.style:void 0,l="string"==typeof e?e:e.fieldKey,n=i.id.toString(),s=i[l],o=`${n}-${l}`;return t.jsx(g.BodyCell,{"data-testid":te(`row-${o}`),id:se(n,l),style:r,$isCheckbox:!1,children:"string"==typeof s||"number"==typeof s?t.jsx(g.BodyCellContent,{children:s}):"function"==typeof s?s(i,{isSelected:Y(n)}):s},o)},pe=e=>{const i=e.id.toString();return t.jsx(g.BodyCell,{"data-testid":te(`row-${i}-selection`),$isCheckbox:!0,children:t.jsx(g.CheckBoxWrapper,{children:t.jsx(s.Checkbox,{checked:Y(i),"aria-labelledby":oe(i),onClick:()=>{I&&I(i,!Y(i))},disabled:ee(i),focusableWhenDisabled:ee(i)})})})},ge=()=>t.jsx(o.ErrorDisplay,Object.assign({type:"no-item-found"},H,{title:(null==H?void 0:H.title)?"string"==typeof H.title?t.jsx(g.ErrorDisplayTitle,{weight:"bold",children:H.title}):H.title:t.jsx(g.ErrorDisplayTitle,{weight:"bold",children:"No <items> found"}),description:(null==H?void 0:H.description)?H.description:"No matching rows"}));return t.jsxs(g.TableWrapper,{id:y||"table-wrapper","data-testid":W["data-testid"]||"table",className:w,ref:K,tabIndex:0,$scrollable:O,children:[t.jsx(g.TableContainer,{children:t.jsxs(g.Table,{ref:L,children:[t.jsx(g.TableHead,{ref:V,$stickyHeader:q,children:t.jsxs(g.HeaderRow,{children:[$&&ue(),j.map(de)]})}),t.jsx(g.TableBody,{children:"success"===C?!x||x.length<1?t.jsx(g.BodyRow,{$alternating:!1,children:t.jsx(g.EmptyViewCell,{colSpan:ie(),children:T?T():ge()})}):t.jsx(t.Fragment,{children:null==x?void 0:x.map(((e,i)=>t.jsxs(g.BodyRow,{"data-testid":te(`row-${e.id.toString()}`),$showLastRowBottomBorder:U,$alternating:Z(i),$isSelectable:$,$isSelected:Y(e.id.toString()),children:[$&&pe(e),j.map((t=>he(t,e)))]},e.id.toString())))}):t.jsx(g.BodyRow,{$alternating:!1,children:t.jsx("td",{colSpan:ie(),children:t.jsx(g.LoaderWrapper,{role:"status","aria-live":"polite","aria-label":"Loading table",children:"loading"===C&&t.jsx(n.LoadingDotsSpinner,{})})})})})]})}),S&&v&&v.length>0&&(()=>{var e,i,r,l;const n=null!==(e=null==v?void 0:v.length)&&void 0!==e?e:0,s="item"+(n>1?"s":"");return t.jsxs(t.Fragment,{children:[t.jsx(g.ActionBarWrapper,{ref:N,$strategy:z,$left:U?null===(r=null===(i=null==L?void 0:L.current)||void 0===i?void 0:i.getBoundingClientRect())||void 0===r?void 0:r.left:0,$width:null===(l=null==L?void 0:L.current)||void 0===l?void 0:l.clientWidth,children:t.jsxs(g.ActionBar,{$float:U,children:[t.jsx(d.Typography.BodyMD,{weight:"semibold",children:`${n} ${s} selected`}),t.jsx(g.TextButton,{type:"button","aria-label":`Clear selection of ${n} ${s}`,onClick:D,children:"Clear selection"}),R]})}),"sticky"!==z&&t.jsx(g.ActionBarSpacer,{})]})})()]})};
1
+ "use strict";var e=require("../_virtual/_tslib.js"),t=require("react/jsx-runtime"),i=require("@lifesg/react-icons"),r=require("react"),n=require("../external/react-resize-detector/build/index.esm.js");require("../animations/loading-spinner/loading-spinner.js"),require("../animations/loading-dots/loading-dots.js");var l=require("../animations/loading-dots-spinner/loading-dots-spinner.js");require("styled-components");var s=require("../checkbox/checkbox.js"),o=require("../error-display/error-display.js");require("../error-display/helper.js");var a=require("../shared/accessibility/index.js"),d=require("../typography/typography.js");require("../util/calendar-helper.js"),require("../util/date-helper.js"),require("../util/date-input-helper.js");var c=require("../util/simple-id-generator.js");require("../util/string-helper.js"),require("@react-aria/live-announcer");var u=require("../util/use-event.js"),h=require("../util/use-event-listener.js"),p=require("../util/use-throttle.js"),g=require("./data-table.styles.js");exports.DataTable=b=>{var{id:y,headers:j,rows:x,className:w,sortIndicators:m,alternatingRows:f,loadState:C="success",enableMultiSelect:$,selectedIds:v,disabledIds:S,enableActionBar:k,enableActionBarWithoutSelection:B,enableSelectAll:q,enableStickyHeader:H,emptyView:R,actionBarContent:A,renderCustomEmptyView:T,onHeaderClick:I,onSelect:E,onSelectAll:W,onClearSelectionClick:D}=b,L=e.__rest(b,["id","headers","rows","className","sortIndicators","alternatingRows","loadState","enableMultiSelect","selectedIds","disabledIds","enableActionBar","enableActionBarWithoutSelection","enableSelectAll","enableStickyHeader","emptyView","actionBarContent","renderCustomEmptyView","onHeaderClick","onSelect","onSelectAll","onClearSelectionClick"]);const V=r.useRef(null),N=r.useRef(null),K=r.useRef(null),M=r.useRef(null),_=c.useId(),z=j.filter((e=>"string"!=typeof e&&!!e.keyColumn)),[F,G]=r.useState("inline"),[O,P]=r.useState(!1),[U,J]=r.useState(!1),Q=u.useEvent((()=>{de()}));r.useEffect((()=>{Q()}),[Q]);const X=p.useThrottle((()=>de()),100);n.useResizeDetector({targetRef:M,onResize:()=>X()}),h.useEventListener("scroll",X),h.useEventListener("scroll",X,M.current);const Y=()=>!!(x&&x.length&&v)&&v.length===x.length,Z=e=>!!(null==v?void 0:v.includes(e)),ee=e=>!!f&&e%2==1,te=e=>!!(null==S?void 0:S.includes(e)),ie=e=>{if(L["data-testid"])return`${L["data-testid"]}-${e}`},re=()=>j.length+($?1:0),ne=e=>null==m?void 0:m[e],le=e=>{const t=ne(e);if(t)return"asc"===t?"ascending":"descending"},se=e=>` by ${"asc"===ne(e)?"descending":"ascending"} order`,oe=(e,t)=>`${_}-row-${e}-${t}-key-column`,ae=e=>{const t=z.map((t=>oe(e,t.fieldKey)));return a.concatIds(...t)},de=()=>{if(!M.current||!N.current||!K.current)return;const e=M.current.getBoundingClientRect(),t=N.current.getBoundingClientRect();let i="inline";const r=M.current.scrollHeight>M.current.clientHeight;if(e.top>window.innerHeight||e.bottom<0?i="inline":r?e.top>0&&e.top<window.innerHeight&&e.bottom>0&&e.bottom<window.innerHeight||e.top<0&&e.bottom>0&&e.bottom<window.innerHeight?i="sticky":e.bottom>window.innerHeight&&Math.max(e.top,t.bottom)+t.height<window.innerHeight&&(i="fixed"):e.bottom>window.innerHeight&&t.bottom+t.height<window.innerHeight&&(i="fixed"),P(r),G(i),"fixed"===i)J(!0);else if("sticky"===i){const e=M.current.scrollTop+M.current.clientHeight<M.current.scrollHeight;J(e)}else J(!1)},ce=e=>{const{fieldKey:i,label:r,clickable:n=!1,style:l}="string"==typeof e?{fieldKey:e,label:e,style:void 0}:e,s=!!ne(i),o=(e=>`${_}-header-${e}`)(i);return t.jsxs(g.HeaderCell,{"data-testid":ie(`header-${i}`),$clickable:n,scope:"col","aria-sort":le(i),style:l,$isCheckbox:!1,onClick:()=>(e=>{null==I||I(e)})(i),children:[t.jsxs(g.HeaderCellWrapper,{id:o,children:["string"==typeof r?t.jsx(d.Typography.BodyBL,{weight:"bold",children:r}):r,ue(i)]}),(n||s)&&t.jsx(a.VisuallyHidden,{children:t.jsxs("button",{onClick:e=>((e,t)=>{e.stopPropagation(),null==I||I(t)})(e,i),children:[s&&"Sort ",t.jsx("span",{"aria-labelledby":o}),s&&se(i)]})})]},i)},ue=e=>{const r=null==m?void 0:m[e];return r?"asc"===r?t.jsx(i.ArrowUpIcon,{"aria-hidden":!0,"data-testid":ie(`header-${e}-arrowup`)}):t.jsx(i.ArrowDownIcon,{"aria-hidden":!0,"data-testid":ie(`header-${e}-arrowdown`)}):t.jsx(t.Fragment,{})},he=()=>t.jsx(g.HeaderCell,{"data-testid":ie("header-selection"),$clickable:!1,$isCheckbox:!0,scope:"col",children:t.jsxs(g.CheckBoxWrapper,{children:[t.jsx(a.VisuallyHidden,{children:"Row selection"}),q&&t.jsx(s.Checkbox,{checked:Y(),indeterminate:!!v&&0!==v.length&&!Y(),disabled:!x||!x.length||!v,"aria-label":"Select all rows",onClick:()=>{W&&W(Y())}})]})}),pe=(e,i)=>{const r="string"!=typeof e?e.style:void 0,n="string"==typeof e?e:e.fieldKey,l=i.id.toString(),s=i[n],o=`${l}-${n}`;return t.jsx(g.BodyCell,{"data-testid":ie(`row-${o}`),id:oe(l,n),style:r,$isCheckbox:!1,children:"string"==typeof s||"number"==typeof s?t.jsx(g.BodyCellContent,{children:s}):"function"==typeof s?s(i,{isSelected:Z(l)}):s},o)},ge=e=>{const i=e.id.toString();return t.jsx(g.BodyCell,{"data-testid":ie(`row-${i}-selection`),$isCheckbox:!0,children:t.jsx(g.CheckBoxWrapper,{children:t.jsx(s.Checkbox,{checked:Z(i),"aria-labelledby":ae(i),onClick:()=>{E&&E(i,!Z(i))},disabled:te(i),focusableWhenDisabled:te(i)})})})},be=()=>t.jsx(o.ErrorDisplay,Object.assign({type:"no-item-found"},R,{title:(null==R?void 0:R.title)?"string"==typeof R.title?t.jsx(g.ErrorDisplayTitle,{weight:"bold",children:R.title}):R.title:t.jsx(g.ErrorDisplayTitle,{weight:"bold",children:"No <items> found"}),description:(null==R?void 0:R.description)?R.description:"No matching rows"}));return t.jsxs(g.TableWrapper,{id:y||"table-wrapper","data-testid":L["data-testid"]||"table",className:w,ref:M,tabIndex:0,$scrollable:O,children:[t.jsx(g.TableContainer,{children:t.jsxs(g.Table,{ref:V,children:[t.jsx(g.TableHead,{ref:N,$stickyHeader:H,children:t.jsxs(g.HeaderRow,{children:[$&&he(),j.map(ce)]})}),t.jsx(g.TableBody,{children:"success"===C?!x||x.length<1?t.jsx(g.BodyRow,{$alternating:!1,children:t.jsx(g.EmptyViewCell,{colSpan:re(),children:T?T():be()})}):t.jsx(t.Fragment,{children:null==x?void 0:x.map(((e,i)=>t.jsxs(g.BodyRow,{"data-testid":ie(`row-${e.id.toString()}`),$showLastRowBottomBorder:U,$alternating:ee(i),$isSelectable:$,$isSelected:Z(e.id.toString()),children:[$&&ge(e),j.map((t=>pe(t,e)))]},e.id.toString())))}):t.jsx(g.BodyRow,{$alternating:!1,children:t.jsx("td",{colSpan:re(),children:t.jsx(g.LoaderWrapper,{role:"status","aria-live":"polite","aria-label":"Loading table",children:"loading"===C&&t.jsx(l.LoadingDotsSpinner,{})})})})})]})}),k&&(v&&v.length>0||B)&&(()=>{var e,i,r,n;const l=null!==(e=null==v?void 0:v.length)&&void 0!==e?e:0,s="item"+(1===l?"":"s");return t.jsxs(t.Fragment,{children:[t.jsx(g.ActionBarWrapper,{ref:K,$strategy:F,$left:U?null===(r=null===(i=null==V?void 0:V.current)||void 0===i?void 0:i.getBoundingClientRect())||void 0===r?void 0:r.left:0,$width:null===(n=null==V?void 0:V.current)||void 0===n?void 0:n.clientWidth,children:t.jsxs(g.ActionBar,{$float:U,children:[t.jsx(d.Typography.BodyMD,{weight:"semibold",children:`${l} ${s} selected`}),l>0?t.jsx(g.TextButton,{type:"button","aria-label":`Clear selection of ${l} ${s}`,onClick:D,children:"Clear selection"}):t.jsx(g.ActionBarGap,{}),A]})}),"sticky"!==F&&t.jsx(g.ActionBarSpacer,{})]})})()]})};
2
2
  //# sourceMappingURL=data-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","sources":["../../../src/data-table/data-table.tsx"],"sourcesContent":["import { ArrowDownIcon, ArrowUpIcon } from \"@lifesg/react-icons\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport { LoadingDotsSpinner } from \"../animations\";\nimport { Checkbox } from \"../checkbox\";\nimport { ErrorDisplay } from \"../error-display\";\nimport { VisuallyHidden, concatIds } from \"../shared/accessibility\";\nimport { Typography } from \"../typography\";\nimport { useEvent, useEventListener, useId, useThrottle } from \"../util\";\nimport {\n ActionBar,\n ActionBarSpacer,\n ActionBarWrapper,\n BodyCell,\n BodyCellContent,\n BodyRow,\n CheckBoxWrapper,\n EmptyViewCell,\n ErrorDisplayTitle,\n HeaderCell,\n HeaderCellWrapper,\n HeaderRow,\n LoaderWrapper,\n Table,\n TableBody,\n TableContainer,\n TableHead,\n TableWrapper,\n TextButton,\n} from \"./data-table.styles\";\nimport { DataTableProps, HeaderProps, RowProps } from \"./types\";\n\nexport const DataTable = ({\n id,\n headers,\n rows,\n className,\n sortIndicators,\n alternatingRows,\n loadState = \"success\",\n enableMultiSelect,\n selectedIds,\n disabledIds,\n enableActionBar,\n enableSelectAll,\n enableStickyHeader,\n emptyView,\n actionBarContent,\n renderCustomEmptyView,\n onHeaderClick,\n onSelect,\n onSelectAll,\n onClearSelectionClick,\n ...otherProps\n}: DataTableProps) => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const tableRef = useRef<HTMLTableElement>(null);\n const headerRef = useRef<HTMLTableSectionElement>(null);\n const actionBarWrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const internalId = useId();\n const keyColumns = headers.filter(\n (header): header is Exclude<HeaderProps, string> => {\n return typeof header !== \"string\" && !!header.keyColumn;\n }\n );\n\n const [actionBarStrategy, setActionBarStrategy] = useState<\n \"sticky\" | \"fixed\" | \"inline\"\n >(\"inline\");\n const [scrollable, setScrollable] = useState(false);\n const [isFloatingActionBar, setIsFloatingActionBar] = useState(false);\n\n // =============================================================================\n // EFFECTS, EVENT LISTENERS\n // ============================================================================\n const useUpdateActionBarBehaviour = useEvent(() => {\n updateActionBarBehaviour();\n });\n\n useEffect(() => {\n useUpdateActionBarBehaviour();\n }, [useUpdateActionBarBehaviour]);\n\n const updateActionBarBehaviourThrottled = useThrottle(\n () => updateActionBarBehaviour(),\n 100\n );\n\n useResizeDetector({\n targetRef: wrapperRef,\n onResize: () => updateActionBarBehaviourThrottled(),\n });\n\n useEventListener(\"scroll\", updateActionBarBehaviourThrottled);\n useEventListener(\n \"scroll\",\n updateActionBarBehaviourThrottled,\n wrapperRef.current\n );\n\n // ===========================================================================\n // HELPER FUNCTIONS\n // ===========================================================================\n const isAllCheckboxSelected = (): boolean => {\n if (!rows || !rows.length || !selectedIds) {\n return false;\n }\n\n return selectedIds.length === rows.length;\n };\n\n const isIndeterminateCheckbox = (): boolean => {\n return (\n !!selectedIds &&\n selectedIds.length !== 0 &&\n !isAllCheckboxSelected()\n );\n };\n\n const isHeaderCheckboxDisabled = (): boolean => {\n return !rows || !rows.length || !selectedIds;\n };\n\n const isRowSelected = (rowId: string): boolean => {\n return !!selectedIds?.includes(rowId);\n };\n\n const isAlternatingRow = (index: number): boolean => {\n return !!alternatingRows && index % 2 === 1;\n };\n\n const isDisabledRow = (rowId: string): boolean => {\n return !!disabledIds?.includes(rowId);\n };\n\n const getDataTestId = (subStr: string) => {\n if (!otherProps[\"data-testid\"]) return undefined;\n return `${otherProps[\"data-testid\"]}-${subStr}`;\n };\n\n const getTotalColumns = (): number => {\n return headers.length + (enableMultiSelect ? 1 : 0);\n };\n\n const getSortDirection = (fieldKey: string) => {\n return sortIndicators?.[fieldKey];\n };\n\n const getHeaderAriaSort = (fieldKey: string) => {\n const sortDirection = getSortDirection(fieldKey);\n\n if (!sortDirection) {\n return undefined;\n }\n\n return sortDirection === \"asc\" ? \"ascending\" : \"descending\";\n };\n\n const getSortButtonAriaLabel = (fieldKey: string) => {\n const nextSortDirection =\n getSortDirection(fieldKey) === \"asc\" ? \"descending\" : \"ascending\";\n\n return ` by ${nextSortDirection} order`;\n };\n\n const getHeaderWrapperId = (fieldKey: string) => {\n return `${internalId}-header-${fieldKey}`;\n };\n const getCellId = (rowId: string, fieldKey: string) => {\n return `${internalId}-row-${rowId}-${fieldKey}-key-column`;\n };\n\n const getRowCheckboxAriaLabelledBy = (rowId: string) => {\n const keyColumnIds = keyColumns.map((header) =>\n getCellId(rowId, header.fieldKey)\n );\n\n return concatIds(...keyColumnIds);\n };\n\n const updateActionBarBehaviour = () => {\n if (\n !wrapperRef.current ||\n !headerRef.current ||\n !actionBarWrapperRef.current\n ) {\n return;\n }\n\n const wrapperBounds = wrapperRef.current.getBoundingClientRect();\n const headerBounds = headerRef.current.getBoundingClientRect();\n\n let strategy: typeof actionBarStrategy = \"inline\";\n\n const scrollable =\n wrapperRef.current.scrollHeight > wrapperRef.current.clientHeight;\n\n if (\n wrapperBounds.top > window.innerHeight ||\n wrapperBounds.bottom < 0\n ) {\n // if fully out of the viewport, disable floating\n strategy = \"inline\";\n } else if (scrollable) {\n if (\n wrapperBounds.top > 0 &&\n wrapperBounds.top < window.innerHeight &&\n wrapperBounds.bottom > 0 &&\n wrapperBounds.bottom < window.innerHeight\n ) {\n // if fully in the viewport, use the native sticky behaviour\n strategy = \"sticky\";\n } else if (\n wrapperBounds.top < 0 &&\n wrapperBounds.bottom > 0 &&\n wrapperBounds.bottom < window.innerHeight\n ) {\n // if partially offscreen at the top, use the native sticky behaviour\n strategy = \"sticky\";\n } else if (\n wrapperBounds.bottom > window.innerHeight &&\n Math.max(wrapperBounds.top, headerBounds.bottom) +\n headerBounds.height <\n window.innerHeight\n ) {\n // if offscreen at the bottom, pin to the viewport, up until the table/header\n strategy = \"fixed\";\n }\n } else if (\n wrapperBounds.bottom > window.innerHeight &&\n headerBounds.bottom + headerBounds.height < window.innerHeight\n ) {\n // if offscreen at the bottom, pin to the viewport, up until the header\n strategy = \"fixed\";\n }\n\n setScrollable(scrollable);\n setActionBarStrategy(strategy);\n\n if (strategy === \"fixed\") {\n setIsFloatingActionBar(true);\n } else if (strategy === \"sticky\") {\n const beforeScrollEnd =\n wrapperRef.current.scrollTop + wrapperRef.current.clientHeight <\n wrapperRef.current.scrollHeight;\n setIsFloatingActionBar(beforeScrollEnd);\n } else {\n setIsFloatingActionBar(false);\n }\n };\n\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleHeaderClick = (fieldKey: string) => {\n onHeaderClick?.(fieldKey);\n };\n\n const handleHeaderButtonClick = (\n event: React.MouseEvent<HTMLButtonElement>,\n fieldKey: string\n ) => {\n event.stopPropagation();\n onHeaderClick?.(fieldKey);\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderHeaders = () => (\n <TableHead ref={headerRef} $stickyHeader={enableStickyHeader}>\n <HeaderRow>\n {enableMultiSelect && renderHeaderCheckBox()}\n {headers.map(renderHeaderCell)}\n </HeaderRow>\n </TableHead>\n );\n\n const renderHeaderCell = (header: HeaderProps) => {\n const {\n fieldKey,\n label,\n clickable = false,\n style,\n } = typeof header === \"string\"\n ? {\n fieldKey: header,\n label: header,\n style: undefined,\n }\n : header;\n\n const isSortable = !!getSortDirection(fieldKey);\n const headerCellWrapperId = getHeaderWrapperId(fieldKey);\n\n return (\n <HeaderCell\n data-testid={getDataTestId(`header-${fieldKey}`)}\n key={fieldKey}\n $clickable={clickable}\n scope=\"col\"\n aria-sort={getHeaderAriaSort(fieldKey)}\n style={style}\n $isCheckbox={false}\n onClick={() => handleHeaderClick(fieldKey)}\n >\n <HeaderCellWrapper id={headerCellWrapperId}>\n {typeof label === \"string\" ? (\n <Typography.BodyBL weight=\"bold\">\n {label}\n </Typography.BodyBL>\n ) : (\n label\n )}\n {renderSortedArrow(fieldKey)}\n </HeaderCellWrapper>\n {(clickable || isSortable) && (\n <VisuallyHidden>\n <button\n onClick={(event) =>\n handleHeaderButtonClick(event, fieldKey)\n }\n >\n {isSortable && \"Sort \"}\n <span aria-labelledby={headerCellWrapperId} />\n {isSortable && getSortButtonAriaLabel(fieldKey)}\n </button>\n </VisuallyHidden>\n )}\n </HeaderCell>\n );\n };\n\n const renderSortedArrow = (fieldKey: string) => {\n const isSorted = sortIndicators?.[fieldKey];\n\n if (!isSorted) {\n return <></>;\n }\n if (isSorted === \"asc\") {\n return (\n <ArrowUpIcon\n aria-hidden\n data-testid={getDataTestId(`header-${fieldKey}-arrowup`)}\n />\n );\n }\n return (\n <ArrowDownIcon\n aria-hidden\n data-testid={getDataTestId(`header-${fieldKey}-arrowdown`)}\n />\n );\n };\n\n const renderHeaderCheckBox = () => {\n return (\n <HeaderCell\n data-testid={getDataTestId(\"header-selection\")}\n $clickable={false}\n $isCheckbox={true}\n scope=\"col\"\n >\n <CheckBoxWrapper>\n <VisuallyHidden>Row selection</VisuallyHidden>\n {enableSelectAll && (\n <Checkbox\n checked={isAllCheckboxSelected()}\n indeterminate={isIndeterminateCheckbox()}\n disabled={isHeaderCheckboxDisabled()}\n aria-label=\"Select all rows\"\n onClick={() => {\n if (onSelectAll) {\n onSelectAll(isAllCheckboxSelected());\n }\n }}\n />\n )}\n </CheckBoxWrapper>\n </HeaderCell>\n );\n };\n\n const renderRows = () => {\n return !rows || rows.length < 1 ? (\n <BodyRow $alternating={false}>\n <EmptyViewCell colSpan={getTotalColumns()}>\n {renderCustomEmptyView\n ? renderCustomEmptyView()\n : renderBasicEmptyView()}\n </EmptyViewCell>\n </BodyRow>\n ) : (\n <>\n {rows?.map((row: RowProps, index: number) => (\n <BodyRow\n data-testid={getDataTestId(`row-${row.id.toString()}`)}\n key={row.id.toString()}\n $showLastRowBottomBorder={isFloatingActionBar}\n $alternating={isAlternatingRow(index)}\n $isSelectable={enableMultiSelect}\n $isSelected={isRowSelected(row.id.toString())}\n >\n {enableMultiSelect && renderRowCheckBox(row)}\n\n {headers.map((header) => renderRowCell(header, row))}\n </BodyRow>\n ))}\n </>\n );\n };\n\n const renderRowCell = (header: HeaderProps, row: RowProps) => {\n const style = typeof header !== \"string\" ? header.style : undefined;\n const fieldKey = typeof header === \"string\" ? header : header.fieldKey;\n const rowId = row.id.toString();\n const cellData = row[fieldKey];\n const cellId = `${rowId}-${fieldKey}`;\n\n return (\n <BodyCell\n data-testid={getDataTestId(`row-${cellId}`)}\n key={cellId}\n id={getCellId(rowId, fieldKey)}\n style={style}\n $isCheckbox={false}\n >\n {typeof cellData === \"string\" ||\n typeof cellData === \"number\" ? (\n <BodyCellContent>{cellData}</BodyCellContent>\n ) : typeof cellData === \"function\" ? (\n cellData(row, { isSelected: isRowSelected(rowId) })\n ) : (\n cellData\n )}\n </BodyCell>\n );\n };\n\n const renderRowCheckBox = (row: RowProps) => {\n const rowId = row.id.toString();\n\n return (\n <BodyCell\n data-testid={getDataTestId(`row-${rowId}-selection`)}\n $isCheckbox={true}\n >\n <CheckBoxWrapper>\n <Checkbox\n checked={isRowSelected(rowId)}\n aria-labelledby={getRowCheckboxAriaLabelledBy(rowId)}\n onClick={() => {\n if (onSelect) {\n onSelect(rowId, !isRowSelected(rowId));\n }\n }}\n disabled={isDisabledRow(rowId)}\n focusableWhenDisabled={isDisabledRow(rowId)}\n />\n </CheckBoxWrapper>\n </BodyCell>\n );\n };\n\n const renderBasicEmptyView = () => {\n return (\n <ErrorDisplay\n type={\"no-item-found\"}\n {...emptyView}\n title={\n emptyView?.title ? (\n typeof emptyView.title === \"string\" ? (\n <ErrorDisplayTitle weight=\"bold\">\n {emptyView.title}\n </ErrorDisplayTitle>\n ) : (\n emptyView.title\n )\n ) : (\n <ErrorDisplayTitle weight=\"bold\">\n {\"No <items> found\"}\n </ErrorDisplayTitle>\n )\n }\n description={\n emptyView?.description\n ? emptyView.description\n : \"No matching rows\"\n }\n />\n );\n };\n\n const renderLoader = () => {\n return (\n <BodyRow $alternating={false}>\n <td colSpan={getTotalColumns()}>\n <LoaderWrapper\n role=\"status\"\n aria-live=\"polite\"\n aria-label=\"Loading table\"\n >\n {loadState === \"loading\" && <LoadingDotsSpinner />}\n </LoaderWrapper>\n </td>\n </BodyRow>\n );\n };\n\n const renderSelectionBar = () => {\n const count = selectedIds?.length ?? 0;\n const counter = `item${count > 1 ? \"s\" : \"\"}`;\n\n return (\n <>\n <ActionBarWrapper\n ref={actionBarWrapperRef}\n $strategy={actionBarStrategy}\n $left={\n isFloatingActionBar\n ? tableRef?.current?.getBoundingClientRect()?.left\n : 0\n }\n $width={tableRef?.current?.clientWidth}\n >\n <ActionBar $float={isFloatingActionBar}>\n <Typography.BodyMD weight=\"semibold\">{`${count} ${counter} selected`}</Typography.BodyMD>\n <TextButton\n type=\"button\"\n aria-label={`Clear selection of ${count} ${counter}`}\n onClick={onClearSelectionClick}\n >\n Clear selection\n </TextButton>\n {actionBarContent}\n </ActionBar>\n </ActionBarWrapper>\n {/* leave a fixed space when action bar floats to avoid layout shift */}\n {actionBarStrategy !== \"sticky\" && <ActionBarSpacer />}\n </>\n );\n };\n\n return (\n <TableWrapper\n id={id || \"table-wrapper\"}\n data-testid={otherProps[\"data-testid\"] || \"table\"}\n className={className}\n ref={wrapperRef}\n tabIndex={0} // scrollable container must be focusable to support keyboard users\n $scrollable={scrollable}\n >\n <TableContainer>\n <Table ref={tableRef}>\n {renderHeaders()}\n <TableBody>\n {loadState === \"success\"\n ? renderRows()\n : renderLoader()}\n </TableBody>\n </Table>\n </TableContainer>\n {enableActionBar &&\n selectedIds &&\n selectedIds.length > 0 &&\n renderSelectionBar()}\n </TableWrapper>\n );\n};\n"],"names":["_a","id","headers","rows","className","sortIndicators","alternatingRows","loadState","enableMultiSelect","selectedIds","disabledIds","enableActionBar","enableSelectAll","enableStickyHeader","emptyView","actionBarContent","renderCustomEmptyView","onHeaderClick","onSelect","onSelectAll","onClearSelectionClick","otherProps","__rest","tableRef","useRef","headerRef","actionBarWrapperRef","wrapperRef","internalId","useId","keyColumns","filter","header","keyColumn","actionBarStrategy","setActionBarStrategy","useState","scrollable","setScrollable","isFloatingActionBar","setIsFloatingActionBar","useUpdateActionBarBehaviour","useEvent","updateActionBarBehaviour","useEffect","updateActionBarBehaviourThrottled","useThrottle","useResizeDetector","targetRef","onResize","useEventListener","current","isAllCheckboxSelected","length","isRowSelected","rowId","includes","isAlternatingRow","index","isDisabledRow","getDataTestId","subStr","getTotalColumns","getSortDirection","fieldKey","getHeaderAriaSort","sortDirection","getSortButtonAriaLabel","getCellId","getRowCheckboxAriaLabelledBy","keyColumnIds","map","concatIds","wrapperBounds","getBoundingClientRect","headerBounds","strategy","scrollHeight","clientHeight","top","window","innerHeight","bottom","Math","max","height","beforeScrollEnd","scrollTop","renderHeaderCell","label","clickable","style","undefined","isSortable","headerCellWrapperId","getHeaderWrapperId","_jsxs","HeaderCell","$clickable","scope","$isCheckbox","onClick","handleHeaderClick","children","HeaderCellWrapper","_jsx","Typography","BodyBL","weight","renderSortedArrow","VisuallyHidden","event","stopPropagation","handleHeaderButtonClick","isSorted","ArrowUpIcon","ArrowDownIcon","renderHeaderCheckBox","CheckBoxWrapper","Checkbox","checked","indeterminate","disabled","renderRowCell","row","toString","cellData","cellId","BodyCell","BodyCellContent","isSelected","renderRowCheckBox","focusableWhenDisabled","renderBasicEmptyView","ErrorDisplay","Object","assign","type","title","ErrorDisplayTitle","description","TableWrapper","ref","tabIndex","$scrollable","TableContainer","Table","TableHead","$stickyHeader","HeaderRow","TableBody","BodyRow","$alternating","EmptyViewCell","colSpan","$isSelected","LoaderWrapper","role","LoadingDotsSpinner","count","counter","_Fragment","ActionBarWrapper","$strategy","$left","_c","_b","left","$width","_d","clientWidth","ActionBar","$float","BodyMD","TextButton","ActionBarSpacer","renderSelectionBar"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.js","sources":["../../../src/data-table/data-table.tsx"],"sourcesContent":["import { ArrowDownIcon, ArrowUpIcon } from \"@lifesg/react-icons\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport { LoadingDotsSpinner } from \"../animations\";\nimport { Checkbox } from \"../checkbox\";\nimport { ErrorDisplay } from \"../error-display\";\nimport { VisuallyHidden, concatIds } from \"../shared/accessibility\";\nimport { Typography } from \"../typography\";\nimport { useEvent, useEventListener, useId, useThrottle } from \"../util\";\nimport {\n ActionBar,\n ActionBarGap,\n ActionBarSpacer,\n ActionBarWrapper,\n BodyCell,\n BodyCellContent,\n BodyRow,\n CheckBoxWrapper,\n EmptyViewCell,\n ErrorDisplayTitle,\n HeaderCell,\n HeaderCellWrapper,\n HeaderRow,\n LoaderWrapper,\n Table,\n TableBody,\n TableContainer,\n TableHead,\n TableWrapper,\n TextButton,\n} from \"./data-table.styles\";\nimport { DataTableProps, HeaderProps, RowProps } from \"./types\";\n\nexport const DataTable = ({\n id,\n headers,\n rows,\n className,\n sortIndicators,\n alternatingRows,\n loadState = \"success\",\n enableMultiSelect,\n selectedIds,\n disabledIds,\n enableActionBar,\n enableActionBarWithoutSelection,\n enableSelectAll,\n enableStickyHeader,\n emptyView,\n actionBarContent,\n renderCustomEmptyView,\n onHeaderClick,\n onSelect,\n onSelectAll,\n onClearSelectionClick,\n ...otherProps\n}: DataTableProps) => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const tableRef = useRef<HTMLTableElement>(null);\n const headerRef = useRef<HTMLTableSectionElement>(null);\n const actionBarWrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const internalId = useId();\n const keyColumns = headers.filter(\n (header): header is Exclude<HeaderProps, string> => {\n return typeof header !== \"string\" && !!header.keyColumn;\n }\n );\n\n const [actionBarStrategy, setActionBarStrategy] = useState<\n \"sticky\" | \"fixed\" | \"inline\"\n >(\"inline\");\n const [scrollable, setScrollable] = useState(false);\n const [isFloatingActionBar, setIsFloatingActionBar] = useState(false);\n\n // =============================================================================\n // EFFECTS, EVENT LISTENERS\n // ============================================================================\n const useUpdateActionBarBehaviour = useEvent(() => {\n updateActionBarBehaviour();\n });\n\n useEffect(() => {\n useUpdateActionBarBehaviour();\n }, [useUpdateActionBarBehaviour]);\n\n const updateActionBarBehaviourThrottled = useThrottle(\n () => updateActionBarBehaviour(),\n 100\n );\n\n useResizeDetector({\n targetRef: wrapperRef,\n onResize: () => updateActionBarBehaviourThrottled(),\n });\n\n useEventListener(\"scroll\", updateActionBarBehaviourThrottled);\n useEventListener(\n \"scroll\",\n updateActionBarBehaviourThrottled,\n wrapperRef.current\n );\n\n // ===========================================================================\n // HELPER FUNCTIONS\n // ===========================================================================\n const isAllCheckboxSelected = (): boolean => {\n if (!rows || !rows.length || !selectedIds) {\n return false;\n }\n\n return selectedIds.length === rows.length;\n };\n\n const isIndeterminateCheckbox = (): boolean => {\n return (\n !!selectedIds &&\n selectedIds.length !== 0 &&\n !isAllCheckboxSelected()\n );\n };\n\n const isHeaderCheckboxDisabled = (): boolean => {\n return !rows || !rows.length || !selectedIds;\n };\n\n const isRowSelected = (rowId: string): boolean => {\n return !!selectedIds?.includes(rowId);\n };\n\n const isAlternatingRow = (index: number): boolean => {\n return !!alternatingRows && index % 2 === 1;\n };\n\n const isDisabledRow = (rowId: string): boolean => {\n return !!disabledIds?.includes(rowId);\n };\n\n const getDataTestId = (subStr: string) => {\n if (!otherProps[\"data-testid\"]) return undefined;\n return `${otherProps[\"data-testid\"]}-${subStr}`;\n };\n\n const getTotalColumns = (): number => {\n return headers.length + (enableMultiSelect ? 1 : 0);\n };\n\n const getSortDirection = (fieldKey: string) => {\n return sortIndicators?.[fieldKey];\n };\n\n const getHeaderAriaSort = (fieldKey: string) => {\n const sortDirection = getSortDirection(fieldKey);\n\n if (!sortDirection) {\n return undefined;\n }\n\n return sortDirection === \"asc\" ? \"ascending\" : \"descending\";\n };\n\n const getSortButtonAriaLabel = (fieldKey: string) => {\n const nextSortDirection =\n getSortDirection(fieldKey) === \"asc\" ? \"descending\" : \"ascending\";\n\n return ` by ${nextSortDirection} order`;\n };\n\n const getHeaderWrapperId = (fieldKey: string) => {\n return `${internalId}-header-${fieldKey}`;\n };\n const getCellId = (rowId: string, fieldKey: string) => {\n return `${internalId}-row-${rowId}-${fieldKey}-key-column`;\n };\n\n const getRowCheckboxAriaLabelledBy = (rowId: string) => {\n const keyColumnIds = keyColumns.map((header) =>\n getCellId(rowId, header.fieldKey)\n );\n\n return concatIds(...keyColumnIds);\n };\n\n const updateActionBarBehaviour = () => {\n if (\n !wrapperRef.current ||\n !headerRef.current ||\n !actionBarWrapperRef.current\n ) {\n return;\n }\n\n const wrapperBounds = wrapperRef.current.getBoundingClientRect();\n const headerBounds = headerRef.current.getBoundingClientRect();\n\n let strategy: typeof actionBarStrategy = \"inline\";\n\n const scrollable =\n wrapperRef.current.scrollHeight > wrapperRef.current.clientHeight;\n\n if (\n wrapperBounds.top > window.innerHeight ||\n wrapperBounds.bottom < 0\n ) {\n // if fully out of the viewport, disable floating\n strategy = \"inline\";\n } else if (scrollable) {\n if (\n wrapperBounds.top > 0 &&\n wrapperBounds.top < window.innerHeight &&\n wrapperBounds.bottom > 0 &&\n wrapperBounds.bottom < window.innerHeight\n ) {\n // if fully in the viewport, use the native sticky behaviour\n strategy = \"sticky\";\n } else if (\n wrapperBounds.top < 0 &&\n wrapperBounds.bottom > 0 &&\n wrapperBounds.bottom < window.innerHeight\n ) {\n // if partially offscreen at the top, use the native sticky behaviour\n strategy = \"sticky\";\n } else if (\n wrapperBounds.bottom > window.innerHeight &&\n Math.max(wrapperBounds.top, headerBounds.bottom) +\n headerBounds.height <\n window.innerHeight\n ) {\n // if offscreen at the bottom, pin to the viewport, up until the table/header\n strategy = \"fixed\";\n }\n } else if (\n wrapperBounds.bottom > window.innerHeight &&\n headerBounds.bottom + headerBounds.height < window.innerHeight\n ) {\n // if offscreen at the bottom, pin to the viewport, up until the header\n strategy = \"fixed\";\n }\n\n setScrollable(scrollable);\n setActionBarStrategy(strategy);\n\n if (strategy === \"fixed\") {\n setIsFloatingActionBar(true);\n } else if (strategy === \"sticky\") {\n const beforeScrollEnd =\n wrapperRef.current.scrollTop + wrapperRef.current.clientHeight <\n wrapperRef.current.scrollHeight;\n setIsFloatingActionBar(beforeScrollEnd);\n } else {\n setIsFloatingActionBar(false);\n }\n };\n\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleHeaderClick = (fieldKey: string) => {\n onHeaderClick?.(fieldKey);\n };\n\n const handleHeaderButtonClick = (\n event: React.MouseEvent<HTMLButtonElement>,\n fieldKey: string\n ) => {\n event.stopPropagation();\n onHeaderClick?.(fieldKey);\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderHeaders = () => (\n <TableHead ref={headerRef} $stickyHeader={enableStickyHeader}>\n <HeaderRow>\n {enableMultiSelect && renderHeaderCheckBox()}\n {headers.map(renderHeaderCell)}\n </HeaderRow>\n </TableHead>\n );\n\n const renderHeaderCell = (header: HeaderProps) => {\n const {\n fieldKey,\n label,\n clickable = false,\n style,\n } = typeof header === \"string\"\n ? {\n fieldKey: header,\n label: header,\n style: undefined,\n }\n : header;\n\n const isSortable = !!getSortDirection(fieldKey);\n const headerCellWrapperId = getHeaderWrapperId(fieldKey);\n\n return (\n <HeaderCell\n data-testid={getDataTestId(`header-${fieldKey}`)}\n key={fieldKey}\n $clickable={clickable}\n scope=\"col\"\n aria-sort={getHeaderAriaSort(fieldKey)}\n style={style}\n $isCheckbox={false}\n onClick={() => handleHeaderClick(fieldKey)}\n >\n <HeaderCellWrapper id={headerCellWrapperId}>\n {typeof label === \"string\" ? (\n <Typography.BodyBL weight=\"bold\">\n {label}\n </Typography.BodyBL>\n ) : (\n label\n )}\n {renderSortedArrow(fieldKey)}\n </HeaderCellWrapper>\n {(clickable || isSortable) && (\n <VisuallyHidden>\n <button\n onClick={(event) =>\n handleHeaderButtonClick(event, fieldKey)\n }\n >\n {isSortable && \"Sort \"}\n <span aria-labelledby={headerCellWrapperId} />\n {isSortable && getSortButtonAriaLabel(fieldKey)}\n </button>\n </VisuallyHidden>\n )}\n </HeaderCell>\n );\n };\n\n const renderSortedArrow = (fieldKey: string) => {\n const isSorted = sortIndicators?.[fieldKey];\n\n if (!isSorted) {\n return <></>;\n }\n if (isSorted === \"asc\") {\n return (\n <ArrowUpIcon\n aria-hidden\n data-testid={getDataTestId(`header-${fieldKey}-arrowup`)}\n />\n );\n }\n return (\n <ArrowDownIcon\n aria-hidden\n data-testid={getDataTestId(`header-${fieldKey}-arrowdown`)}\n />\n );\n };\n\n const renderHeaderCheckBox = () => {\n return (\n <HeaderCell\n data-testid={getDataTestId(\"header-selection\")}\n $clickable={false}\n $isCheckbox={true}\n scope=\"col\"\n >\n <CheckBoxWrapper>\n <VisuallyHidden>Row selection</VisuallyHidden>\n {enableSelectAll && (\n <Checkbox\n checked={isAllCheckboxSelected()}\n indeterminate={isIndeterminateCheckbox()}\n disabled={isHeaderCheckboxDisabled()}\n aria-label=\"Select all rows\"\n onClick={() => {\n if (onSelectAll) {\n onSelectAll(isAllCheckboxSelected());\n }\n }}\n />\n )}\n </CheckBoxWrapper>\n </HeaderCell>\n );\n };\n\n const renderRows = () => {\n return !rows || rows.length < 1 ? (\n <BodyRow $alternating={false}>\n <EmptyViewCell colSpan={getTotalColumns()}>\n {renderCustomEmptyView\n ? renderCustomEmptyView()\n : renderBasicEmptyView()}\n </EmptyViewCell>\n </BodyRow>\n ) : (\n <>\n {rows?.map((row: RowProps, index: number) => (\n <BodyRow\n data-testid={getDataTestId(`row-${row.id.toString()}`)}\n key={row.id.toString()}\n $showLastRowBottomBorder={isFloatingActionBar}\n $alternating={isAlternatingRow(index)}\n $isSelectable={enableMultiSelect}\n $isSelected={isRowSelected(row.id.toString())}\n >\n {enableMultiSelect && renderRowCheckBox(row)}\n\n {headers.map((header) => renderRowCell(header, row))}\n </BodyRow>\n ))}\n </>\n );\n };\n\n const renderRowCell = (header: HeaderProps, row: RowProps) => {\n const style = typeof header !== \"string\" ? header.style : undefined;\n const fieldKey = typeof header === \"string\" ? header : header.fieldKey;\n const rowId = row.id.toString();\n const cellData = row[fieldKey];\n const cellId = `${rowId}-${fieldKey}`;\n\n return (\n <BodyCell\n data-testid={getDataTestId(`row-${cellId}`)}\n key={cellId}\n id={getCellId(rowId, fieldKey)}\n style={style}\n $isCheckbox={false}\n >\n {typeof cellData === \"string\" ||\n typeof cellData === \"number\" ? (\n <BodyCellContent>{cellData}</BodyCellContent>\n ) : typeof cellData === \"function\" ? (\n cellData(row, { isSelected: isRowSelected(rowId) })\n ) : (\n cellData\n )}\n </BodyCell>\n );\n };\n\n const renderRowCheckBox = (row: RowProps) => {\n const rowId = row.id.toString();\n\n return (\n <BodyCell\n data-testid={getDataTestId(`row-${rowId}-selection`)}\n $isCheckbox={true}\n >\n <CheckBoxWrapper>\n <Checkbox\n checked={isRowSelected(rowId)}\n aria-labelledby={getRowCheckboxAriaLabelledBy(rowId)}\n onClick={() => {\n if (onSelect) {\n onSelect(rowId, !isRowSelected(rowId));\n }\n }}\n disabled={isDisabledRow(rowId)}\n focusableWhenDisabled={isDisabledRow(rowId)}\n />\n </CheckBoxWrapper>\n </BodyCell>\n );\n };\n\n const renderBasicEmptyView = () => {\n return (\n <ErrorDisplay\n type={\"no-item-found\"}\n {...emptyView}\n title={\n emptyView?.title ? (\n typeof emptyView.title === \"string\" ? (\n <ErrorDisplayTitle weight=\"bold\">\n {emptyView.title}\n </ErrorDisplayTitle>\n ) : (\n emptyView.title\n )\n ) : (\n <ErrorDisplayTitle weight=\"bold\">\n {\"No <items> found\"}\n </ErrorDisplayTitle>\n )\n }\n description={\n emptyView?.description\n ? emptyView.description\n : \"No matching rows\"\n }\n />\n );\n };\n\n const renderLoader = () => {\n return (\n <BodyRow $alternating={false}>\n <td colSpan={getTotalColumns()}>\n <LoaderWrapper\n role=\"status\"\n aria-live=\"polite\"\n aria-label=\"Loading table\"\n >\n {loadState === \"loading\" && <LoadingDotsSpinner />}\n </LoaderWrapper>\n </td>\n </BodyRow>\n );\n };\n\n const renderSelectionBar = () => {\n const count = selectedIds?.length ?? 0;\n const counter = `item${count === 1 ? \"\" : \"s\"}`;\n\n return (\n <>\n <ActionBarWrapper\n ref={actionBarWrapperRef}\n $strategy={actionBarStrategy}\n $left={\n isFloatingActionBar\n ? tableRef?.current?.getBoundingClientRect()?.left\n : 0\n }\n $width={tableRef?.current?.clientWidth}\n >\n <ActionBar $float={isFloatingActionBar}>\n <Typography.BodyMD weight=\"semibold\">{`${count} ${counter} selected`}</Typography.BodyMD>\n {count > 0 ? (\n <TextButton\n type=\"button\"\n aria-label={`Clear selection of ${count} ${counter}`}\n onClick={onClearSelectionClick}\n >\n Clear selection\n </TextButton>\n ) : (\n <ActionBarGap />\n )}\n {actionBarContent}\n </ActionBar>\n </ActionBarWrapper>\n {/* leave a fixed space when action bar floats to avoid layout shift */}\n {actionBarStrategy !== \"sticky\" && <ActionBarSpacer />}\n </>\n );\n };\n\n return (\n <TableWrapper\n id={id || \"table-wrapper\"}\n data-testid={otherProps[\"data-testid\"] || \"table\"}\n className={className}\n ref={wrapperRef}\n tabIndex={0} // scrollable container must be focusable to support keyboard users\n $scrollable={scrollable}\n >\n <TableContainer>\n <Table ref={tableRef}>\n {renderHeaders()}\n <TableBody>\n {loadState === \"success\"\n ? renderRows()\n : renderLoader()}\n </TableBody>\n </Table>\n </TableContainer>\n {enableActionBar &&\n ((selectedIds && selectedIds.length > 0) ||\n enableActionBarWithoutSelection) &&\n renderSelectionBar()}\n </TableWrapper>\n );\n};\n"],"names":["_a","id","headers","rows","className","sortIndicators","alternatingRows","loadState","enableMultiSelect","selectedIds","disabledIds","enableActionBar","enableActionBarWithoutSelection","enableSelectAll","enableStickyHeader","emptyView","actionBarContent","renderCustomEmptyView","onHeaderClick","onSelect","onSelectAll","onClearSelectionClick","otherProps","__rest","tableRef","useRef","headerRef","actionBarWrapperRef","wrapperRef","internalId","useId","keyColumns","filter","header","keyColumn","actionBarStrategy","setActionBarStrategy","useState","scrollable","setScrollable","isFloatingActionBar","setIsFloatingActionBar","useUpdateActionBarBehaviour","useEvent","updateActionBarBehaviour","useEffect","updateActionBarBehaviourThrottled","useThrottle","useResizeDetector","targetRef","onResize","useEventListener","current","isAllCheckboxSelected","length","isRowSelected","rowId","includes","isAlternatingRow","index","isDisabledRow","getDataTestId","subStr","getTotalColumns","getSortDirection","fieldKey","getHeaderAriaSort","sortDirection","getSortButtonAriaLabel","getCellId","getRowCheckboxAriaLabelledBy","keyColumnIds","map","concatIds","wrapperBounds","getBoundingClientRect","headerBounds","strategy","scrollHeight","clientHeight","top","window","innerHeight","bottom","Math","max","height","beforeScrollEnd","scrollTop","renderHeaderCell","label","clickable","style","undefined","isSortable","headerCellWrapperId","getHeaderWrapperId","_jsxs","HeaderCell","$clickable","scope","$isCheckbox","onClick","handleHeaderClick","children","HeaderCellWrapper","_jsx","Typography","BodyBL","weight","renderSortedArrow","VisuallyHidden","event","stopPropagation","handleHeaderButtonClick","isSorted","ArrowUpIcon","ArrowDownIcon","renderHeaderCheckBox","CheckBoxWrapper","Checkbox","checked","indeterminate","disabled","renderRowCell","row","toString","cellData","cellId","BodyCell","BodyCellContent","isSelected","renderRowCheckBox","focusableWhenDisabled","renderBasicEmptyView","ErrorDisplay","Object","assign","type","title","ErrorDisplayTitle","description","TableWrapper","ref","tabIndex","$scrollable","TableContainer","Table","TableHead","$stickyHeader","HeaderRow","TableBody","BodyRow","$alternating","EmptyViewCell","colSpan","$isSelected","LoaderWrapper","role","LoadingDotsSpinner","count","counter","_Fragment","ActionBarWrapper","$strategy","$left","_c","_b","left","$width","_d","clientWidth","ActionBar","BodyMD","TextButton","ActionBarGap","ActionBarSpacer","renderSelectionBar"],"mappings":"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"}
@@ -31,13 +31,13 @@
31
31
  border-collapse: separate;
32
32
  border-spacing: 0;
33
33
  width: 100%;
34
- `,$=s.default.thead`
34
+ `,u=s.default.thead`
35
35
  ${r=>{if(r.$stickyHeader)return e.css`
36
36
  position: sticky;
37
37
  top: 0;
38
38
  z-index: 20;
39
39
  `}};
40
- `,u=s.default.tbody``,f=s.default.div`
40
+ `,$=s.default.tbody``,f=s.default.div`
41
41
  ${r=>{const o=r.$left?`${r.$left}px`:"0",t=r.$width?`${r.$width}px`:"100%";switch(r.$strategy){case"inline":return e.css`
42
42
  position: absolute;
43
43
  bottom: 0;
@@ -84,12 +84,14 @@
84
84
  ${t.Radius.sm} ${t.Radius.sm};
85
85
  `}
86
86
  `,b=s.default.div`
87
+ width: 0.75rem;
88
+ `,g=s.default.div`
87
89
  height: 3.5rem;
88
- `,g=s.default.tr`
90
+ `,x=s.default.tr`
89
91
  background-color: ${t.Colour["bg-stronger"]};
90
92
  height: 6rem;
91
93
  border-bottom: ${t.Border["width-010"]} ${t.Border.solid} ${l};
92
- `,x=s.default.th`
94
+ `,w=s.default.th`
93
95
  padding: ${e=>e.$isCheckbox?"1.25rem 0.5rem 1.25rem 1.5rem":"1.25rem 1rem"};
94
96
  text-align: left;
95
97
  cursor: ${e=>e.$clickable?"pointer":"default"};
@@ -103,7 +105,7 @@
103
105
  outline: 2px solid ${t.Colour["focus-ring"]};
104
106
  outline-offset: -3px;
105
107
  }
106
- `,w=s.default.div`
108
+ `,y=s.default.div`
107
109
  display: flex;
108
110
  flex-direction: row;
109
111
  align-items: center;
@@ -112,7 +114,7 @@
112
114
  color: ${a};
113
115
  margin-left: 0.5rem;
114
116
  }
115
- `,y=s.default.tr`
117
+ `,B=s.default.tr`
116
118
  background-color: ${r=>r.$isSelected?e.css`
117
119
  ${t.Colour["bg-selected"]};
118
120
  `:r.$alternating?e.css`
@@ -132,7 +134,7 @@
132
134
  border-bottom: ${e=>e.$showLastRowBottomBorder?`${t.Border["width-010"]} ${t.Border.solid} ${l}`:"none"};
133
135
  }
134
136
  }
135
- `,B=s.default.td`
137
+ `,v=s.default.td`
136
138
  padding: ${e=>e.$isCheckbox?"1.25rem 0.5rem 1.25rem 1.5rem":"1.25rem 1rem"};
137
139
  vertical-align: middle;
138
140
  color: ${a};
@@ -140,19 +142,19 @@
140
142
  `,C=s.default(i.Typography.BodyBL)`
141
143
  ${o.lineClampCss(2)}
142
144
  text-overflow: ellipsis;
143
- `,v=s.default.div`
145
+ `,k=s.default.div`
144
146
  display: flex;
145
147
  align-items: center;
146
148
  justify-content: center;
147
- `,k=s.default.div`
149
+ `,R=s.default.div`
148
150
  display: flex;
149
151
  flex-direction: column;
150
152
  align-items: center;
151
153
  padding: 4rem 0;
152
- `,R=s.default(i.Typography.HeadingSM)`
154
+ `,S=s.default(i.Typography.HeadingSM)`
153
155
  margin-top: 2rem;
154
156
  margin-bottom: 1rem;
155
- `,S=s.default.td`
157
+ `,T=s.default.td`
156
158
  padding: 4rem 0;
157
- `;exports.ActionBar=h,exports.ActionBarSpacer=b,exports.ActionBarWrapper=f,exports.BodyCell=B,exports.BodyCellContent=C,exports.BodyRow=y,exports.CheckBoxWrapper=v,exports.EmptyViewCell=S,exports.ErrorDisplayTitle=R,exports.HeaderCell=x,exports.HeaderCellWrapper=w,exports.HeaderRow=g,exports.LoaderWrapper=k,exports.Table=p,exports.TableBody=u,exports.TableContainer=c,exports.TableHead=$,exports.TableWrapper=n,exports.TextButton=m;
159
+ `;exports.ActionBar=h,exports.ActionBarGap=b,exports.ActionBarSpacer=g,exports.ActionBarWrapper=f,exports.BodyCell=v,exports.BodyCellContent=C,exports.BodyRow=B,exports.CheckBoxWrapper=k,exports.EmptyViewCell=T,exports.ErrorDisplayTitle=S,exports.HeaderCell=w,exports.HeaderCellWrapper=y,exports.HeaderRow=x,exports.LoaderWrapper=R,exports.Table=p,exports.TableBody=$,exports.TableContainer=c,exports.TableHead=u,exports.TableWrapper=n,exports.TextButton=m;
158
160
  //# sourceMappingURL=data-table.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.styles.js","sources":["../../../src/data-table/data-table.styles.tsx"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport { BasicButton } from \"../shared/input-wrapper\";\nimport { lineClampCss } from \"../shared/styles\";\nimport {\n Border,\n Colour,\n Font,\n Motion,\n Radius,\n Shadow,\n Spacing,\n} from \"../theme\";\nimport { Typography } from \"../typography\";\n\n// =============================================================================\n// STYLE INTERFACE, transient props are denoted with $\n// See more https://styled-components.com/docs/api#transient-props\n// =============================================================================\ninterface TableWrapperProps {\n $scrollable: boolean;\n}\ninterface TableHeadProps {\n $stickyHeader: boolean | undefined;\n}\ninterface HeaderCellProps {\n $clickable: boolean;\n $isCheckbox: boolean;\n}\ninterface BodyRowProps {\n $alternating: boolean;\n $isSelected?: boolean;\n $isSelectable?: boolean;\n $showLastRowBottomBorder?: boolean;\n}\n\ninterface BodyCellProps {\n $isCheckbox: boolean;\n}\n\ninterface ActionBarWrapperProps {\n $strategy: \"fixed\" | \"sticky\" | \"inline\";\n $left?: number | undefined;\n $width?: number | undefined;\n}\n\ninterface ActionBarProps {\n $float: boolean;\n}\n\n// =============================================================================\n// STYLES CONSTANTS\n// =============================================================================\nconst borderColor = Colour[\"border\"];\nconst fontColor = Colour[\"text\"];\n\n// =============================================================================\n// STYLES\n// =============================================================================\nexport const TableWrapper = styled.div<TableWrapperProps>`\n /* we separate the overflow styles so that sticky elements can still work\n with horizontal scrolling on supported browsers\n see: https://github.com/w3c/csswg-drafts/issues/12289 */\n overflow-y: ${(props) => (props.$scrollable ? \"auto\" : \"clip\")};\n overflow-x: auto;\n position: relative;\n display: flex;\n flex-direction: column;\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n border-radius: ${Radius[\"md\"]};\n\n /* Hide scrollbar */\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* IE 10+ */\n &::-webkit-scrollbar {\n display: none; /* Chrome/Safari/Webkit */\n }\n`;\n\nexport const TableContainer = styled.div`\n flex: 1;\n`;\n\nexport const Table = styled.table`\n th:last-child,\n td:last-child {\n padding-right: 1.5rem;\n }\n th:first-child,\n td:first-child {\n padding-left: 1.5rem;\n }\n text-align: left;\n border-collapse: separate;\n border-spacing: 0;\n width: 100%;\n`;\n\nexport const TableHead = styled.thead<TableHeadProps>`\n ${(props) => {\n if (props.$stickyHeader) {\n return css`\n position: sticky;\n top: 0;\n z-index: 20;\n `;\n }\n }};\n`;\n\nexport const TableBody = styled.tbody``;\n\nexport const ActionBarWrapper = styled.div<ActionBarWrapperProps>`\n ${(props) => {\n const left = props.$left ? `${props.$left}px` : \"0\";\n const width = props.$width ? `${props.$width}px` : \"100%\";\n\n switch (props.$strategy) {\n case \"inline\":\n return css`\n position: absolute;\n bottom: 0;\n left: 0;\n width: ${width};\n `;\n case \"fixed\":\n return css`\n position: fixed;\n bottom: 0;\n left: ${left};\n width: ${width};\n `;\n case \"sticky\":\n return css`\n position: sticky;\n bottom: 0;\n width: ${width};\n `;\n }\n }}\n`;\n\nexport const TextButton = styled(BasicButton)`\n ${Font[\"body-md-semibold\"]}\n cursor: pointer;\n color: ${Colour[\"text-primary\"]};\n transition: ${Motion[\"duration-150\"]} ${Motion[\"ease-default\"]};\n padding: 0.75rem;\n margin: -0.75rem 0;\n\n &:hover {\n color: ${Colour[\"text-hover\"]};\n }\n`;\n\nexport const ActionBar = styled.div<ActionBarProps>`\n overflow: hidden;\n display: flex;\n align-items: center;\n height: 3.5rem;\n padding: ${Spacing[\"spacing-16\"]} ${Spacing[\"spacing-24\"]};\n border-top: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n background-color: ${Colour[\"bg-selected\"]};\n transition: transform ${Motion[\"duration-350\"]} ${Motion[\"ease-default\"]};\n ${(props) => {\n if (props.$float) {\n return css`\n transform: translateX(0.5rem) translateY(-2rem);\n border-radius: ${Radius[\"sm\"]};\n box-shadow: ${Shadow[\"xs-subtle\"]};\n width: calc(100% - ${Spacing[\"spacing-16\"]});\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n `;\n } else {\n return css`\n border-radius: ${Radius[\"none\"]} ${Radius[\"none\"]}\n ${Radius[\"sm\"]} ${Radius[\"sm\"]};\n `;\n }\n }}\n`;\n\nexport const ActionBarSpacer = styled.div`\n height: 3.5rem;\n`;\n\nexport const HeaderRow = styled.tr`\n background-color: ${Colour[\"bg-stronger\"]};\n height: 6rem;\n border-bottom: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n`;\n\nexport const HeaderCell = styled.th<HeaderCellProps>`\n padding: ${(props) =>\n props.$isCheckbox ? \"1.25rem 0.5rem 1.25rem 1.5rem\" : \"1.25rem 1rem\"};\n text-align: left;\n cursor: ${(props) => (props.$clickable ? \"pointer\" : \"default\")};\n vertical-align: middle;\n color: ${fontColor};\n border-bottom: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n ${(props) => {\n if (props.$isCheckbox) {\n return css`\n width: 4rem;\n `;\n }\n }};\n &:focus-within {\n outline: 2px solid ${Colour[\"focus-ring\"]};\n outline-offset: -3px;\n }\n`;\n\nexport const HeaderCellWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n svg {\n color: ${fontColor};\n margin-left: 0.5rem;\n }\n`;\n\nexport const BodyRow = styled.tr<BodyRowProps>`\n background-color: ${(props) => {\n if (props.$isSelected) {\n return css`\n ${Colour[\"bg-selected\"]};\n `;\n } else if (props.$alternating) {\n return css`\n ${Colour[\"bg-strong\"]};\n `;\n } else {\n return css`\n ${Colour[\"bg\"]};\n `;\n }\n }};\n border-top: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n &:hover {\n ${(props) => {\n if (props.$isSelectable) {\n return css`\n background-color: ${Colour[\"bg-hover-strong\"]};\n `;\n }\n }};\n }\n\n &:last-child {\n td {\n border-bottom: ${(props) =>\n props.$showLastRowBottomBorder\n ? `${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor}`\n : \"none\"};\n }\n }\n`;\n\nexport const BodyCell = styled.td<BodyCellProps>`\n padding: ${(props) =>\n props.$isCheckbox ? \"1.25rem 0.5rem 1.25rem 1.5rem\" : \"1.25rem 1rem\"};\n vertical-align: middle;\n color: ${fontColor};\n border-bottom: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n`;\n\nexport const BodyCellContent = styled(Typography.BodyBL)`\n ${lineClampCss(2)}\n text-overflow: ellipsis;\n`;\n\nexport const CheckBoxWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const LoaderWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 4rem 0;\n`;\n\nexport const ErrorDisplayTitle = styled(Typography.HeadingSM)`\n margin-top: 2rem;\n margin-bottom: 1rem;\n`;\n\nexport const EmptyViewCell = styled.td`\n padding: 4rem 0;\n`;\n"],"names":["borderColor","Colour","fontColor","TableWrapper","styled","div","props","$scrollable","Border","Radius","TableContainer","Table","table","TableHead","thead","$stickyHeader","css","TableBody","tbody","ActionBarWrapper","left","$left","width","$width","$strategy","TextButton","BasicButton","Font","Motion","ActionBar","Spacing","$float","Shadow","ActionBarSpacer","HeaderRow","tr","HeaderCell","th","$isCheckbox","$clickable","HeaderCellWrapper","BodyRow","$isSelected","$alternating","$isSelectable","$showLastRowBottomBorder","BodyCell","td","BodyCellContent","Typography","BodyBL","lineClampCss","CheckBoxWrapper","LoaderWrapper","ErrorDisplayTitle","HeadingSM","EmptyViewCell"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.styles.js","sources":["../../../src/data-table/data-table.styles.tsx"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport { BasicButton } from \"../shared/input-wrapper\";\nimport { lineClampCss } from \"../shared/styles\";\nimport {\n Border,\n Colour,\n Font,\n Motion,\n Radius,\n Shadow,\n Spacing,\n} from \"../theme\";\nimport { Typography } from \"../typography\";\n\n// =============================================================================\n// STYLE INTERFACE, transient props are denoted with $\n// See more https://styled-components.com/docs/api#transient-props\n// =============================================================================\ninterface TableWrapperProps {\n $scrollable: boolean;\n}\ninterface TableHeadProps {\n $stickyHeader: boolean | undefined;\n}\ninterface HeaderCellProps {\n $clickable: boolean;\n $isCheckbox: boolean;\n}\ninterface BodyRowProps {\n $alternating: boolean;\n $isSelected?: boolean;\n $isSelectable?: boolean;\n $showLastRowBottomBorder?: boolean;\n}\n\ninterface BodyCellProps {\n $isCheckbox: boolean;\n}\n\ninterface ActionBarWrapperProps {\n $strategy: \"fixed\" | \"sticky\" | \"inline\";\n $left?: number | undefined;\n $width?: number | undefined;\n}\n\ninterface ActionBarProps {\n $float: boolean;\n}\n\n// =============================================================================\n// STYLES CONSTANTS\n// =============================================================================\nconst borderColor = Colour[\"border\"];\nconst fontColor = Colour[\"text\"];\n\n// =============================================================================\n// STYLES\n// =============================================================================\nexport const TableWrapper = styled.div<TableWrapperProps>`\n /* we separate the overflow styles so that sticky elements can still work\n with horizontal scrolling on supported browsers\n see: https://github.com/w3c/csswg-drafts/issues/12289 */\n overflow-y: ${(props) => (props.$scrollable ? \"auto\" : \"clip\")};\n overflow-x: auto;\n position: relative;\n display: flex;\n flex-direction: column;\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n border-radius: ${Radius[\"md\"]};\n\n /* Hide scrollbar */\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* IE 10+ */\n &::-webkit-scrollbar {\n display: none; /* Chrome/Safari/Webkit */\n }\n`;\n\nexport const TableContainer = styled.div`\n flex: 1;\n`;\n\nexport const Table = styled.table`\n th:last-child,\n td:last-child {\n padding-right: 1.5rem;\n }\n th:first-child,\n td:first-child {\n padding-left: 1.5rem;\n }\n text-align: left;\n border-collapse: separate;\n border-spacing: 0;\n width: 100%;\n`;\n\nexport const TableHead = styled.thead<TableHeadProps>`\n ${(props) => {\n if (props.$stickyHeader) {\n return css`\n position: sticky;\n top: 0;\n z-index: 20;\n `;\n }\n }};\n`;\n\nexport const TableBody = styled.tbody``;\n\nexport const ActionBarWrapper = styled.div<ActionBarWrapperProps>`\n ${(props) => {\n const left = props.$left ? `${props.$left}px` : \"0\";\n const width = props.$width ? `${props.$width}px` : \"100%\";\n\n switch (props.$strategy) {\n case \"inline\":\n return css`\n position: absolute;\n bottom: 0;\n left: 0;\n width: ${width};\n `;\n case \"fixed\":\n return css`\n position: fixed;\n bottom: 0;\n left: ${left};\n width: ${width};\n `;\n case \"sticky\":\n return css`\n position: sticky;\n bottom: 0;\n width: ${width};\n `;\n }\n }}\n`;\n\nexport const TextButton = styled(BasicButton)`\n ${Font[\"body-md-semibold\"]}\n cursor: pointer;\n color: ${Colour[\"text-primary\"]};\n transition: ${Motion[\"duration-150\"]} ${Motion[\"ease-default\"]};\n padding: 0.75rem;\n margin: -0.75rem 0;\n\n &:hover {\n color: ${Colour[\"text-hover\"]};\n }\n`;\n\nexport const ActionBar = styled.div<ActionBarProps>`\n overflow: hidden;\n display: flex;\n align-items: center;\n height: 3.5rem;\n padding: ${Spacing[\"spacing-16\"]} ${Spacing[\"spacing-24\"]};\n border-top: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n background-color: ${Colour[\"bg-selected\"]};\n transition: transform ${Motion[\"duration-350\"]} ${Motion[\"ease-default\"]};\n ${(props) => {\n if (props.$float) {\n return css`\n transform: translateX(0.5rem) translateY(-2rem);\n border-radius: ${Radius[\"sm\"]};\n box-shadow: ${Shadow[\"xs-subtle\"]};\n width: calc(100% - ${Spacing[\"spacing-16\"]});\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n `;\n } else {\n return css`\n border-radius: ${Radius[\"none\"]} ${Radius[\"none\"]}\n ${Radius[\"sm\"]} ${Radius[\"sm\"]};\n `;\n }\n }}\n`;\n\nexport const ActionBarGap = styled.div`\n width: 0.75rem;\n`;\n\nexport const ActionBarSpacer = styled.div`\n height: 3.5rem;\n`;\n\nexport const HeaderRow = styled.tr`\n background-color: ${Colour[\"bg-stronger\"]};\n height: 6rem;\n border-bottom: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n`;\n\nexport const HeaderCell = styled.th<HeaderCellProps>`\n padding: ${(props) =>\n props.$isCheckbox ? \"1.25rem 0.5rem 1.25rem 1.5rem\" : \"1.25rem 1rem\"};\n text-align: left;\n cursor: ${(props) => (props.$clickable ? \"pointer\" : \"default\")};\n vertical-align: middle;\n color: ${fontColor};\n border-bottom: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n ${(props) => {\n if (props.$isCheckbox) {\n return css`\n width: 4rem;\n `;\n }\n }};\n &:focus-within {\n outline: 2px solid ${Colour[\"focus-ring\"]};\n outline-offset: -3px;\n }\n`;\n\nexport const HeaderCellWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n svg {\n color: ${fontColor};\n margin-left: 0.5rem;\n }\n`;\n\nexport const BodyRow = styled.tr<BodyRowProps>`\n background-color: ${(props) => {\n if (props.$isSelected) {\n return css`\n ${Colour[\"bg-selected\"]};\n `;\n } else if (props.$alternating) {\n return css`\n ${Colour[\"bg-strong\"]};\n `;\n } else {\n return css`\n ${Colour[\"bg\"]};\n `;\n }\n }};\n border-top: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n &:hover {\n ${(props) => {\n if (props.$isSelectable) {\n return css`\n background-color: ${Colour[\"bg-hover-strong\"]};\n `;\n }\n }};\n }\n\n &:last-child {\n td {\n border-bottom: ${(props) =>\n props.$showLastRowBottomBorder\n ? `${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor}`\n : \"none\"};\n }\n }\n`;\n\nexport const BodyCell = styled.td<BodyCellProps>`\n padding: ${(props) =>\n props.$isCheckbox ? \"1.25rem 0.5rem 1.25rem 1.5rem\" : \"1.25rem 1rem\"};\n vertical-align: middle;\n color: ${fontColor};\n border-bottom: ${Border[\"width-010\"]} ${Border[\"solid\"]} ${borderColor};\n`;\n\nexport const BodyCellContent = styled(Typography.BodyBL)`\n ${lineClampCss(2)}\n text-overflow: ellipsis;\n`;\n\nexport const CheckBoxWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const LoaderWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 4rem 0;\n`;\n\nexport const ErrorDisplayTitle = styled(Typography.HeadingSM)`\n margin-top: 2rem;\n margin-bottom: 1rem;\n`;\n\nexport const EmptyViewCell = styled.td`\n padding: 4rem 0;\n`;\n"],"names":["borderColor","Colour","fontColor","TableWrapper","styled","div","props","$scrollable","Border","Radius","TableContainer","Table","table","TableHead","thead","$stickyHeader","css","TableBody","tbody","ActionBarWrapper","left","$left","width","$width","$strategy","TextButton","BasicButton","Font","Motion","ActionBar","Spacing","$float","Shadow","ActionBarGap","ActionBarSpacer","HeaderRow","tr","HeaderCell","th","$isCheckbox","$clickable","HeaderCellWrapper","BodyRow","$isSelected","$alternating","$isSelectable","$showLastRowBottomBorder","BodyCell","td","BodyCellContent","Typography","BodyBL","lineClampCss","CheckBoxWrapper","LoaderWrapper","ErrorDisplayTitle","HeadingSM","EmptyViewCell"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var s=require("./error-display-helper-comp.js"),e=require("./helper.js");const{imgAttributeHelper:t}=e.ErrorDisplayHelper,g={400:{base:"https://assets.life.gov.sg/react-design-system/img/error/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/400@3x.png",width:400,height:280},403:{base:"https://assets.life.gov.sg/react-design-system/img/error/403.png",md:"https://assets.life.gov.sg/react-design-system/img/error/403@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/403@3x.png",width:400,height:280},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/404.png",md:"https://assets.life.gov.sg/react-design-system/img/error/404@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/404@3x.png",width:400,height:280},408:{base:"https://assets.life.gov.sg/react-design-system/img/error/408.png",md:"https://assets.life.gov.sg/react-design-system/img/error/408@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/408@3x.png",width:400,height:280},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@3x.png",width:400,height:280},502:{base:"https://assets.life.gov.sg/react-design-system/img/error/502.png",md:"https://assets.life.gov.sg/react-design-system/img/error/502@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/502@3x.png",width:400,height:280},503:{base:"https://assets.life.gov.sg/react-design-system/img/error/503.png",md:"https://assets.life.gov.sg/react-design-system/img/error/503@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/503@3x.png",width:400,height:280},504:{base:"https://assets.life.gov.sg/react-design-system/img/error/504.png",md:"https://assets.life.gov.sg/react-design-system/img/error/504@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/504@3x.png",width:400,height:280},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/confirmation@3x.png",width:400,height:280},"insufficient-credits":{base:"https://assets.life.gov.sg/react-design-system/img/error/insuffcient-credit.png",md:"https://assets.life.gov.sg/react-design-system/img/error/insuffcient-credit@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/insuffcient-credit@3x.png",width:400,height:280},inactivity:{base:"https://assets.life.gov.sg/react-design-system/img/error/inactivity.png",md:"https://assets.life.gov.sg/react-design-system/img/error/inactivity@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/inactivity@3x.png",width:400,height:280},"link-error":{base:"https://assets.life.gov.sg/react-design-system/img/error/link-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/link-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/link-error@3x.png",width:400,height:280},logout:{base:"https://assets.life.gov.sg/react-design-system/img/error/logout.png",md:"https://assets.life.gov.sg/react-design-system/img/error/logout@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/logout@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/no-item-found@3x.png",width:400,height:280},"payment-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/payment-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/payment-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/payment-unsuccessful@3x.png",width:400,height:281},"transfer-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/transfer-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/transfer-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/transfer-unsuccessful@3x.png",width:400,height:280},"unsupported-browser":{base:"https://assets.life.gov.sg/react-design-system/img/error/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@3x.png",width:400,height:280},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/warning@3x.png",width:400,height:280}},r={400:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/400@3x.png",width:400,height:215},403:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/403.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/403@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/403@3x.png",width:400,height:254},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/404.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/404@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/404@3x.png",width:400,height:319},408:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/408.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/408@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/408@3x.png",width:400,height:330},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@3x.png",width:400,height:232},502:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/502.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/502@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/502@3x.png",width:400,height:215},503:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/503.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/503@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/503@3x.png",width:400,height:191},504:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/504.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/504@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/504@3x.png",width:400,height:261},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/confirmation@3x.png",width:400,height:280},"insufficient-credits":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/insuffcient-credit.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/insuffcient-credit@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/insuffcient-credit@3x.png",width:400,height:280},inactivity:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/inactivity.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/inactivity@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/inactivity@3x.png",width:400,height:276},"link-error":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/link-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/link-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/link-error@3x.png",width:400,height:280},logout:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/logout.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/logout@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/logout@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/no-item-found@3x.png",width:400,height:290},"payment-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/payment-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/payment-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/payment-unsuccessful@3x.png",width:400,height:280},"transfer-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/transfer-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/transfer-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/transfer-unsuccessful@3x.png",width:400,height:280},"unsupported-browser":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@3x.png",width:400,height:232},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/warning@3x.png",width:400,height:280}},i=Object.assign(Object.assign({},g),{400:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/400@3x.png",width:400,height:280},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@3x.png",width:400,height:280},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@3x.png",width:400,height:280},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/confirmation@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@3x.png",width:400,height:280},"unsupported-browser":{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@3x.png",width:400,height:280},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/warning@3x.png",width:400,height:280}}),n=Object.assign(Object.assign({},g),{400:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/400@3x.png",width:400,height:280},403:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/403.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/403@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/403@3x.png",width:400,height:280},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/404.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/404@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/404@3x.png",width:400,height:280},408:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/408.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/408@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/408@3x.png",width:400,height:280},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/generic-error@3x.png",width:400,height:280},502:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/502.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/502@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/502@3x.png",width:400,height:280},503:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/503.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/503@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/503@3x.png",width:400,height:280},504:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/504.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/504@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/504@3x.png",width:400,height:280},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/confirmation@3x.png",width:400,height:280},inactivity:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/inactivity.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/inactivity@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/inactivity@3x.png",width:400,height:280},"link-error":{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/link-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/link-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/link-error@3x.png",width:400,height:280},logout:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/logout.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/logout@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/logout@3x.png",width:400,height:280},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/warning@3x.png",width:400,height:280},"payment-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/payment-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/payment-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/payment-unsuccessful@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/no-item-found@3x.png",width:400,height:280}}),o=(e,g)=>new Map([["400",{img:t(e[400],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["403",{img:t(e[403],g),title:"Error loading page",description:"You may not have permission to view this page. If someone gave you this link, let them know about this error."}],["404",{img:t(e[404],g),title:"Page not found",description:"If you entered or pasted the URL, check that it’s correct. If someone gave you this link, let them know about this error."}],["408",{img:t(e[408],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["500",{img:t(e[500],g),title:"Something went wrong",description:"We're working on a fix for the problem. Please try again later."}],["502",{img:t(e[502],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["503",{img:t(e[503],g),title:"Service under maintenance",description:"This service is currently unavailable. Please try again later."}],["504",{img:t(e[504],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["confirmation",{img:t(e.confirmation,g),title:"Leave and lose changes?",description:"You have unsaved changes. If you leave this page, you will lose the changes you’ve made."}],["link-error",{img:t(e["link-error"],g),title:"Link has expired",description:"If you entered or pasted the URL, check that it’s correct. If someone gave you this link, let them know it has expired."}],["logout",{img:t(e.logout,g),title:"You’ve been logged out",description:"It looks like you’ve left, so we logged you out to protect your privacy."}],["insufficient-credits",{img:t(e["insufficient-credits"],g),title:"Insufficient credits",description:"You do not have enough credits to make this transaction."}],["inactivity",{img:t(e.inactivity,g),title:"Are you still there?",description:"You’ve been inactive for a while. To protect your privacy, you’ll be logged out soon.\n\nIf you wish to stay on this page, let us know now.",renderDescription:s.renderDescriptionWithProps("inactivity")}],["maintenance",{img:t(e[503],g),title:"Service under maintenance",description:"This service is currently unavailable. Please try again later.",renderDescription:s.renderDescriptionWithProps("maintenance")}],["no-item-found",{img:t(e["no-item-found"],g),title:"No results found",description:"Try adjusting your search or filters to find what you’re looking for."}],["payment-unsuccessful",{img:t(e["payment-unsuccessful"],g),title:"Unsuccessful payment",description:"Your payment was unsuccessful. Please try again."}],["transfer-unsuccessful",{img:t(e["transfer-unsuccessful"],g),title:"Unsuccessful transfer",description:"Your transfer was unsuccessful. Please try again."}],["unsupported-browser",{img:t(e["unsupported-browser"],g),title:"Browser not supported",description:"Download the latest version of Chrome, Edge, Firefox or Safari."}],["partially-supported-browser",{img:t(e["unsupported-browser"],g),title:"Browser version not supported",description:"Update to the latest version of Chrome, Edge, Firefox or Safari."}],["warning",{img:t(e.warning,g),title:"Are you sure?",description:"You will lose your progress."}]]);exports.generateErrorDisplayData=o,exports.getErrorDisplayData=(s,e,t)=>{switch(e){case"bookingsg":return o(r,t).get(s);case"ccube":return o(i,t).get(s);case"mylegacy":case"smgs":return o(n,t).get(s);default:return o(g,t).get(s)}};
1
+ "use strict";var s=require("./error-display-helper-comp.js"),e=require("./helper.js");const{imgAttributeHelper:t}=e.ErrorDisplayHelper,g={400:{base:"https://assets.life.gov.sg/react-design-system/img/error/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/400@3x.png",width:400,height:280},403:{base:"https://assets.life.gov.sg/react-design-system/img/error/403.png",md:"https://assets.life.gov.sg/react-design-system/img/error/403@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/403@3x.png",width:400,height:280},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/404.png",md:"https://assets.life.gov.sg/react-design-system/img/error/404@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/404@3x.png",width:400,height:280},408:{base:"https://assets.life.gov.sg/react-design-system/img/error/408.png",md:"https://assets.life.gov.sg/react-design-system/img/error/408@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/408@3x.png",width:400,height:280},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@3x.png",width:400,height:280},502:{base:"https://assets.life.gov.sg/react-design-system/img/error/502.png",md:"https://assets.life.gov.sg/react-design-system/img/error/502@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/502@3x.png",width:400,height:280},503:{base:"https://assets.life.gov.sg/react-design-system/img/error/503.png",md:"https://assets.life.gov.sg/react-design-system/img/error/503@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/503@3x.png",width:400,height:280},504:{base:"https://assets.life.gov.sg/react-design-system/img/error/504.png",md:"https://assets.life.gov.sg/react-design-system/img/error/504@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/504@3x.png",width:400,height:280},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/confirmation@3x.png",width:400,height:280},"insufficient-credits":{base:"https://assets.life.gov.sg/react-design-system/img/error/insuffcient-credit.png",md:"https://assets.life.gov.sg/react-design-system/img/error/insuffcient-credit@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/insuffcient-credit@3x.png",width:400,height:280},inactivity:{base:"https://assets.life.gov.sg/react-design-system/img/error/inactivity.png",md:"https://assets.life.gov.sg/react-design-system/img/error/inactivity@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/inactivity@3x.png",width:400,height:280},"link-error":{base:"https://assets.life.gov.sg/react-design-system/img/error/link-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/link-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/link-error@3x.png",width:400,height:280},logout:{base:"https://assets.life.gov.sg/react-design-system/img/error/logout.png",md:"https://assets.life.gov.sg/react-design-system/img/error/logout@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/logout@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/no-item-found@3x.png",width:400,height:280},"payment-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/payment-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/payment-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/payment-unsuccessful@3x.png",width:400,height:281},"transfer-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/transfer-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/transfer-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/transfer-unsuccessful@3x.png",width:400,height:280},"unsupported-browser":{base:"https://assets.life.gov.sg/react-design-system/img/error/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/generic-error@3x.png",width:400,height:280},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/warning@3x.png",width:400,height:280}},r={400:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/400@3x.png",width:400,height:215},403:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/403.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/403@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/403@3x.png",width:400,height:254},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/404.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/404@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/404@3x.png",width:400,height:319},408:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/408.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/408@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/408@3x.png",width:400,height:330},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@3x.png",width:400,height:232},502:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/502.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/502@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/502@3x.png",width:400,height:215},503:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/503.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/503@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/503@3x.png",width:400,height:191},504:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/504.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/504@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/504@3x.png",width:400,height:261},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/confirmation@3x.png",width:400,height:280},"insufficient-credits":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/insuffcient-credit.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/insuffcient-credit@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/insuffcient-credit@3x.png",width:400,height:280},inactivity:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/inactivity.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/inactivity@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/inactivity@3x.png",width:400,height:276},"link-error":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/link-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/link-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/link-error@3x.png",width:400,height:280},logout:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/logout.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/logout@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/logout@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/no-item-found@3x.png",width:400,height:290},"payment-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/payment-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/payment-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/payment-unsuccessful@3x.png",width:400,height:280},"transfer-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/transfer-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/transfer-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/transfer-unsuccessful@3x.png",width:400,height:280},"unsupported-browser":{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/generic-error@3x.png",width:400,height:232},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/bsg/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/bsg/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/bsg/warning@3x.png",width:400,height:280}},i=Object.assign(Object.assign({},g),{400:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/400@3x.png",width:400,height:280},403:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/403.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/403@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/403@3x.png",width:400,height:284},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/404.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/404@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/404@3x.png",width:400,height:280},408:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/408.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/408@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/408@3x.png",width:400,height:280},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/generic-error@3x.png",width:400,height:280},502:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/502.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/502@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/502@3x.png",width:400,height:280},503:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/503.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/503@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/503@3x.png",width:400,height:220},504:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/504.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/504@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/504@3x.png",width:400,height:220},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/confirmation@3x.png",width:400,height:280},inactivity:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/inactivity.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/inactivity@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/inactivity@3x.png",width:400,height:280},"link-error":{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/link-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/link-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/link-error@3x.png",width:400,height:280},logout:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/log-out.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/log-out@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/log-out@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/no-item-found@3x.png",width:400,height:280},"unsupported-browser":{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/generic-error@3x.png",width:400,height:280},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/careercompass/warning@3x.png",width:400,height:280}}),a=Object.assign(Object.assign({},g),{400:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/400@3x.png",width:400,height:280},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@3x.png",width:400,height:280},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@3x.png",width:400,height:280},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/confirmation@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/no-item-found@3x.png",width:400,height:280},"unsupported-browser":{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/generic-error@3x.png",width:400,height:280},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/ccube/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/ccube/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/ccube/warning@3x.png",width:400,height:280}}),n=Object.assign(Object.assign({},g),{400:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/400.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/400@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/400@3x.png",width:400,height:280},403:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/403.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/403@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/403@3x.png",width:400,height:280},404:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/404.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/404@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/404@3x.png",width:400,height:280},408:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/408.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/408@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/408@3x.png",width:400,height:280},500:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/generic-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/generic-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/generic-error@3x.png",width:400,height:280},502:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/502.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/502@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/502@3x.png",width:400,height:280},503:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/503.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/503@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/503@3x.png",width:400,height:280},504:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/504.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/504@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/504@3x.png",width:400,height:280},confirmation:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/confirmation.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/confirmation@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/confirmation@3x.png",width:400,height:280},inactivity:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/inactivity.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/inactivity@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/inactivity@3x.png",width:400,height:280},"link-error":{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/link-error.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/link-error@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/link-error@3x.png",width:400,height:280},logout:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/logout.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/logout@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/logout@3x.png",width:400,height:280},warning:{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/warning.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/warning@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/warning@3x.png",width:400,height:280},"payment-unsuccessful":{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/payment-unsuccessful.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/payment-unsuccessful@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/payment-unsuccessful@3x.png",width:400,height:280},"no-item-found":{base:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/no-item-found.png",md:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/no-item-found@2x.png",lg:"https://assets.life.gov.sg/react-design-system/img/error/mylegacy/no-item-found@3x.png",width:400,height:280}}),o=(e,g)=>new Map([["400",{img:t(e[400],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["403",{img:t(e[403],g),title:"Error loading page",description:"You may not have permission to view this page. If someone gave you this link, let them know about this error."}],["404",{img:t(e[404],g),title:"Page not found",description:"If you entered or pasted the URL, check that it’s correct. If someone gave you this link, let them know about this error."}],["408",{img:t(e[408],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["500",{img:t(e[500],g),title:"Something went wrong",description:"We're working on a fix for the problem. Please try again later."}],["502",{img:t(e[502],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["503",{img:t(e[503],g),title:"Service under maintenance",description:"This service is currently unavailable. Please try again later."}],["504",{img:t(e[504],g),title:"Something went wrong",description:"This could be a temporary problem, so please refresh the page or try again later."}],["confirmation",{img:t(e.confirmation,g),title:"Leave and lose changes?",description:"You have unsaved changes. If you leave this page, you will lose the changes you’ve made."}],["link-error",{img:t(e["link-error"],g),title:"Link has expired",description:"If you entered or pasted the URL, check that it’s correct. If someone gave you this link, let them know it has expired."}],["logout",{img:t(e.logout,g),title:"You’ve been logged out",description:"It looks like you’ve left, so we logged you out to protect your privacy."}],["insufficient-credits",{img:t(e["insufficient-credits"],g),title:"Insufficient credits",description:"You do not have enough credits to make this transaction."}],["inactivity",{img:t(e.inactivity,g),title:"Are you still there?",description:"You’ve been inactive for a while. To protect your privacy, you’ll be logged out soon.\n\nIf you wish to stay on this page, let us know now.",renderDescription:s.renderDescriptionWithProps("inactivity")}],["maintenance",{img:t(e[503],g),title:"Service under maintenance",description:"This service is currently unavailable. Please try again later.",renderDescription:s.renderDescriptionWithProps("maintenance")}],["no-item-found",{img:t(e["no-item-found"],g),title:"No results found",description:"Try adjusting your search or filters to find what you’re looking for."}],["payment-unsuccessful",{img:t(e["payment-unsuccessful"],g),title:"Unsuccessful payment",description:"Your payment was unsuccessful. Please try again."}],["transfer-unsuccessful",{img:t(e["transfer-unsuccessful"],g),title:"Unsuccessful transfer",description:"Your transfer was unsuccessful. Please try again."}],["unsupported-browser",{img:t(e["unsupported-browser"],g),title:"Browser not supported",description:"Download the latest version of Chrome, Edge, Firefox or Safari."}],["partially-supported-browser",{img:t(e["unsupported-browser"],g),title:"Browser version not supported",description:"Update to the latest version of Chrome, Edge, Firefox or Safari."}],["warning",{img:t(e.warning,g),title:"Are you sure?",description:"You will lose your progress."}]]);exports.generateErrorDisplayData=o,exports.getErrorDisplayData=(s,e,t)=>{switch(e){case"bookingsg":return o(r,t).get(s);case"careercompass":return o(i,t).get(s);case"ccube":return o(a,t).get(s);case"mylegacy":case"smgs":return o(n,t).get(s);default:return o(g,t).get(s)}};
2
2
  //# sourceMappingURL=error-display-data.js.map