@lifesg/react-design-system 3.4.0-canary.6 → 3.4.0-canary.8

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.
Files changed (98) hide show
  1. package/calendar/calendar.js +1 -1
  2. package/calendar/calendar.js.map +1 -1
  3. package/cjs/calendar/calendar.js +7 -7
  4. package/cjs/calendar/calendar.js.map +1 -1
  5. package/cjs/data-table/data-table.js +1 -1
  6. package/cjs/data-table/data-table.js.map +1 -1
  7. package/cjs/external/dompurify/dist/purify.es.js +3 -3
  8. package/cjs/external/dompurify/dist/purify.es.js.map +1 -1
  9. package/cjs/filter/filter-modal.styles.js +17 -16
  10. package/cjs/filter/filter-modal.styles.js.map +1 -1
  11. package/cjs/filter/filter-sidebar.styles.js +1 -0
  12. package/cjs/filter/filter-sidebar.styles.js.map +1 -1
  13. package/cjs/filter/filter.styles.js +6 -5
  14. package/cjs/filter/filter.styles.js.map +1 -1
  15. package/cjs/footer/footer.js +1 -1
  16. package/cjs/footer/footer.js.map +1 -1
  17. package/cjs/form/form-masked-input.js +1 -1
  18. package/cjs/form/form-masked-input.js.map +1 -1
  19. package/cjs/link-list/link-list.styles.js +6 -7
  20. package/cjs/link-list/link-list.styles.js.map +1 -1
  21. package/cjs/navbar/navbar-items.styles.js +41 -27
  22. package/cjs/navbar/navbar-items.styles.js.map +1 -1
  23. package/cjs/shared/dropdown-list/dropdown-list.styles.js +1 -0
  24. package/cjs/shared/dropdown-list/dropdown-list.styles.js.map +1 -1
  25. package/cjs/shared/dropdown-wrapper/dropdown-wrapper.styles.js +6 -5
  26. package/cjs/shared/dropdown-wrapper/dropdown-wrapper.styles.js.map +1 -1
  27. package/cjs/shared/internal-calendar/single/single-cell.js +1 -1
  28. package/cjs/shared/internal-calendar/single/single-cell.js.map +1 -1
  29. package/cjs/tab/tab-link-chain.js +1 -1
  30. package/cjs/tab/tab-link-chain.js.map +1 -1
  31. package/cjs/theme/colour-primitive/specs/spf-colour-set.js +1 -1
  32. package/cjs/theme/colour-primitive/specs/spf-colour-set.js.map +1 -1
  33. package/cjs/theme/colour-semantic/specs/a11yplayground-semantic-tokens.js +1 -1
  34. package/cjs/theme/colour-semantic/specs/a11yplayground-semantic-tokens.js.map +1 -1
  35. package/cjs/theme/colour-semantic/specs/lifesg-semantic-tokens.js +1 -1
  36. package/cjs/theme/colour-semantic/specs/lifesg-semantic-tokens.js.map +1 -1
  37. package/cjs/theme/colour-semantic/specs/pa-semantic-tokens.js +1 -1
  38. package/cjs/theme/colour-semantic/specs/pa-semantic-tokens.js.map +1 -1
  39. package/cjs/theme/colour-semantic/specs/sgwdigitallobby-tokens.js +1 -1
  40. package/cjs/theme/colour-semantic/specs/sgwdigitallobby-tokens.js.map +1 -1
  41. package/cjs/theme/colour-semantic/specs/spf-semantic-tokens.js +2 -0
  42. package/cjs/theme/colour-semantic/specs/spf-semantic-tokens.js.map +1 -0
  43. package/cjs/theme/colour-semantic/theme-helper.js +1 -1
  44. package/cjs/theme/colour-semantic/theme-helper.js.map +1 -1
  45. package/cjs/theme/font-spec/specs/sgw-digital-lobby-font-spec-set.js +1 -1
  46. package/cjs/theme/font-spec/specs/sgw-digital-lobby-font-spec-set.js.map +1 -1
  47. package/cjs/timetable/timetable-header/timetable-header.js +1 -1
  48. package/cjs/timetable/timetable-header/timetable-header.js.map +1 -1
  49. package/data-table/data-table.js +1 -1
  50. package/data-table/data-table.js.map +1 -1
  51. package/external/dompurify/dist/purify.es.js +2 -2
  52. package/external/dompurify/dist/purify.es.js.map +1 -1
  53. package/filter/filter-modal.styles.js +8 -7
  54. package/filter/filter-modal.styles.js.map +1 -1
  55. package/filter/filter-sidebar.styles.js +11 -10
  56. package/filter/filter-sidebar.styles.js.map +1 -1
  57. package/filter/filter.styles.js +10 -9
  58. package/filter/filter.styles.js.map +1 -1
  59. package/footer/footer.d.ts +1 -1
  60. package/footer/footer.js +1 -1
  61. package/footer/footer.js.map +1 -1
  62. package/footer/types.d.ts +2 -0
  63. package/form/form-masked-input.js +1 -1
  64. package/form/form-masked-input.js.map +1 -1
  65. package/link-list/link-list.styles.js +12 -13
  66. package/link-list/link-list.styles.js.map +1 -1
  67. package/navbar/navbar-items.styles.js +29 -15
  68. package/navbar/navbar-items.styles.js.map +1 -1
  69. package/package.json +17 -1
  70. package/shared/dropdown-list/dropdown-list.styles.js +17 -16
  71. package/shared/dropdown-list/dropdown-list.styles.js.map +1 -1
  72. package/shared/dropdown-wrapper/dropdown-wrapper.styles.js +8 -7
  73. package/shared/dropdown-wrapper/dropdown-wrapper.styles.js.map +1 -1
  74. package/shared/internal-calendar/single/single-cell.js +1 -1
  75. package/shared/internal-calendar/single/single-cell.js.map +1 -1
  76. package/tab/tab-link-chain.js +1 -1
  77. package/tab/tab-link-chain.js.map +1 -1
  78. package/theme/colour-primitive/specs/spf-colour-set.js +1 -1
  79. package/theme/colour-primitive/specs/spf-colour-set.js.map +1 -1
  80. package/theme/colour-semantic/specs/a11yplayground-semantic-tokens.js +1 -1
  81. package/theme/colour-semantic/specs/a11yplayground-semantic-tokens.js.map +1 -1
  82. package/theme/colour-semantic/specs/lifesg-semantic-tokens.js +1 -1
  83. package/theme/colour-semantic/specs/lifesg-semantic-tokens.js.map +1 -1
  84. package/theme/colour-semantic/specs/pa-semantic-tokens.js +1 -1
  85. package/theme/colour-semantic/specs/pa-semantic-tokens.js.map +1 -1
  86. package/theme/colour-semantic/specs/sgwdigitallobby-tokens.js +1 -1
  87. package/theme/colour-semantic/specs/sgwdigitallobby-tokens.js.map +1 -1
  88. package/theme/colour-semantic/specs/spf-semantic-tokens.d.ts +2 -0
  89. package/theme/colour-semantic/specs/spf-semantic-tokens.js +2 -0
  90. package/theme/colour-semantic/specs/spf-semantic-tokens.js.map +1 -0
  91. package/theme/colour-semantic/theme-helper.js +1 -1
  92. package/theme/colour-semantic/theme-helper.js.map +1 -1
  93. package/theme/colour-semantic/types.d.ts +7 -1
  94. package/theme/font-spec/specs/sgw-digital-lobby-font-spec-set.js +1 -1
  95. package/theme/font-spec/specs/sgw-digital-lobby-font-spec-set.js.map +1 -1
  96. package/theme/index.d.ts +7 -1
  97. package/timetable/timetable-header/timetable-header.js +1 -1
  98. package/timetable/timetable-header/timetable-header.js.map +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../helpers.js"),r=require("./specs/lifesg-semantic-tokens.js"),o=require("./specs/pa-semantic-tokens.js"),s=require("./specs/a11yplayground-semantic-tokens.js"),t=require("./specs/sgwdigitallobby-tokens.js");const b={collections:{lifesg:r.LifeSGColourSet,bookingsg:r.LifeSGColourSet,rbs:r.LifeSGColourSet,mylegacy:r.LifeSGColourSet,ccube:r.LifeSGColourSet,oneservice:r.LifeSGColourSet,pa:o.PAColourSet,a11yplayground:s.A11yPlaygroundColourSet,supportgowhere:r.LifeSGColourSet,sgwdigitallobby:t.SGWDigitalLobbyColourSet,imda:r.LifeSGColourSet,spf:r.LifeSGColourSet,smgs:r.LifeSGColourSet,careercompass:r.LifeSGColourSet},defaultValue:"lifesg"},i={collections:{lifesg:r.LifeSGDarkColourSet,bookingsg:r.LifeSGDarkColourSet,rbs:r.LifeSGDarkColourSet,mylegacy:r.LifeSGDarkColourSet,ccube:r.LifeSGDarkColourSet,oneservice:r.LifeSGDarkColourSet,pa:r.LifeSGDarkColourSet,a11yplayground:s.A11yPlaygroundDarkColourSet,supportgowhere:r.LifeSGDarkColourSet,sgwdigitallobby:t.SGWDigitalLobbyDarkColourSet,imda:r.LifeSGDarkColourSet,spf:r.LifeSGDarkColourSet,smgs:r.LifeSGDarkColourSet,careercompass:r.LifeSGDarkColourSet},defaultValue:"lifesg"},n=r=>o=>{var s;const t=o.theme,n="dark"===(null==t?void 0:t.colourMode),l=n?i:b,g=e.getCollection(l,null==t?void 0:t.colourScheme),c=n?"semanticColourDark":"semanticColour",d=null===(s=null==t?void 0:t.overrides)||void 0===s?void 0:s[c],a=d?e.getValue(g,r,d):g[r];return"function"==typeof a?a(o):a},l={text:n("text"),"text-subtle":n("text-subtle"),"text-subtler":n("text-subtler"),"text-subtlest":n("text-subtlest"),"text-primary":n("text-primary"),"text-primary-strongest":n("text-primary-strongest"),"text-secondary":n("text-secondary"),"text-secondary-subtle":n("text-secondary-subtle"),"text-hover":n("text-hover"),"text-selected":n("text-selected"),"text-selected-hover":n("text-selected-hover"),"text-disabled":n("text-disabled"),"text-disabled-subtle":n("text-disabled-subtle"),"text-disabled-subtlest":n("text-disabled-subtlest"),"text-selected-disabled":n("text-selected-disabled"),"text-success":n("text-success"),"text-warning":n("text-warning"),"text-error":n("text-error"),"text-info":n("text-info"),"text-inverse":n("text-inverse"),icon:n("icon"),"icon-subtle":n("icon-subtle"),"icon-strongest":n("icon-strongest"),"icon-primary":n("icon-primary"),"icon-primary-subtle":n("icon-primary-subtle"),"icon-primary-subtlest":n("icon-primary-subtlest"),"icon-secondary":n("icon-secondary"),"icon-secondary-subtle":n("icon-secondary-subtle"),"icon-hover":n("icon-hover"),"icon-selected":n("icon-selected"),"icon-selected-hover":n("icon-selected-hover"),"icon-disabled":n("icon-disabled"),"icon-disabled-subtle":n("icon-disabled-subtle"),"icon-selected-disabled":n("icon-selected-disabled"),"icon-success":n("icon-success"),"icon-warning":n("icon-warning"),"icon-error":n("icon-error"),"icon-error-strong":n("icon-error-strong"),"icon-info":n("icon-info"),"icon-inverse":n("icon-inverse"),"icon-primary-inverse":n("icon-primary-inverse"),border:n("border"),"border-strong":n("border-strong"),"border-stronger":n("border-stronger"),"border-primary":n("border-primary"),"border-primary-subtle":n("border-primary-subtle"),"border-hover":n("border-hover"),"border-hover-strong":n("border-hover-strong"),"border-selected":n("border-selected"),"border-selected-subtle":n("border-selected-subtle"),"border-selected-subtlest":n("border-selected-subtlest"),"border-selected-hover":n("border-selected-hover"),"border-focus":n("border-focus"),"border-focus-strong":n("border-focus-strong"),"border-disabled":n("border-disabled"),"border-selected-disabled":n("border-selected-disabled"),"border-success":n("border-success"),"border-warning":n("border-warning"),"border-error":n("border-error"),"border-error-focus":n("border-error-focus"),"border-error-focus-strong":n("border-error-focus-strong"),"border-error-strong":n("border-error-strong"),"border-info":n("border-info"),bg:n("bg"),"bg-strong":n("bg-strong"),"bg-stronger":n("bg-stronger"),"bg-strongest":n("bg-strongest"),"bg-hover":n("bg-hover"),"bg-hover-strong":n("bg-hover-strong"),"bg-hover-subtle":n("bg-hover-subtle"),"bg-hover-neutral":n("bg-hover-neutral"),"bg-hover-neutral-strong":n("bg-hover-neutral-strong"),"bg-selected":n("bg-selected"),"bg-selected-hover":n("bg-selected-hover"),"bg-selected-strong":n("bg-selected-strong"),"bg-selected-stronger":n("bg-selected-stronger"),"bg-selected-strongest":n("bg-selected-strongest"),"bg-selected-strongest-hover":n("bg-selected-strongest-hover"),"bg-disabled":n("bg-disabled"),"bg-selected-disabled":n("bg-selected-disabled"),"bg-selected-stronger-disabled":n("bg-selected-stronger-disabled"),"bg-success":n("bg-success"),"bg-success-hover":n("bg-success-hover"),"bg-success-strong":n("bg-success-strong"),"bg-success-strong-hover":n("bg-success-strong-hover"),"bg-warning":n("bg-warning"),"bg-warning-hover":n("bg-warning-hover"),"bg-warning-strong":n("bg-warning-strong"),"bg-warning-strong-hover":n("bg-warning-strong-hover"),"bg-info":n("bg-info"),"bg-info-hover":n("bg-info-hover"),"bg-info-strong":n("bg-info-strong"),"bg-info-strong-hover":n("bg-info-strong-hover"),"bg-error":n("bg-error"),"bg-error-hover":n("bg-error-hover"),"bg-error-strong":n("bg-error-strong"),"bg-error-strong-hover":n("bg-error-strong-hover"),"bg-inverse":n("bg-inverse"),"bg-inverse-subtle":n("bg-inverse-subtle"),"bg-inverse-subtler":n("bg-inverse-subtler"),"bg-inverse-subtlest":n("bg-inverse-subtlest"),"bg-inverse-hover":n("bg-inverse-hover"),"bg-primary":n("bg-primary"),"bg-primary-subtle":n("bg-primary-subtle"),"bg-primary-subtler":n("bg-primary-subtler"),"bg-primary-subtlest":n("bg-primary-subtlest"),"bg-available":n("bg-available"),"bg-secondary":n("bg-secondary"),"bg-secondary-subtle":n("bg-secondary-subtle"),"bg-secondary-subtler":n("bg-secondary-subtler"),"bg-secondary-subtlest":n("bg-secondary-subtlest"),"bg-primary-hover":n("bg-primary-hover"),"bg-primary-subtlest-hover":n("bg-primary-subtlest-hover"),"bg-primary-subtlest-selected":n("bg-primary-subtlest-selected"),"overlay-strong":n("overlay-strong"),"overlay-subtle":n("overlay-subtle"),hyperlink:n("hyperlink"),"hyperlink-hover":n("hyperlink-hover"),"hyperlink-visited":n("hyperlink-visited"),"hyperlink-inverse":n("hyperlink-inverse"),"focus-ring":n("focus-ring"),"focus-ring-inverse":n("focus-ring-inverse")};exports.ColourSemantic=l,exports.ColourSpec=b,exports.DarkColourSpec=i,exports.getSemanticColour=n;
1
+ "use strict";var e=require("../helpers.js"),r=require("./specs/a11yplayground-semantic-tokens.js"),o=require("./specs/lifesg-semantic-tokens.js"),s=require("./specs/pa-semantic-tokens.js"),t=require("./specs/sgwdigitallobby-tokens.js"),b=require("./specs/spf-semantic-tokens.js");const i={collections:{lifesg:o.LifeSGColourSet,bookingsg:o.LifeSGColourSet,rbs:o.LifeSGColourSet,mylegacy:o.LifeSGColourSet,ccube:o.LifeSGColourSet,oneservice:o.LifeSGColourSet,pa:s.PAColourSet,a11yplayground:r.A11yPlaygroundColourSet,supportgowhere:o.LifeSGColourSet,sgwdigitallobby:t.SGWDigitalLobbyColourSet,imda:o.LifeSGColourSet,spf:b.SPFColourSet,smgs:o.LifeSGColourSet,careercompass:o.LifeSGColourSet},defaultValue:"lifesg"},n={collections:{lifesg:o.LifeSGDarkColourSet,bookingsg:o.LifeSGDarkColourSet,rbs:o.LifeSGDarkColourSet,mylegacy:o.LifeSGDarkColourSet,ccube:o.LifeSGDarkColourSet,oneservice:o.LifeSGDarkColourSet,pa:o.LifeSGDarkColourSet,a11yplayground:r.A11yPlaygroundDarkColourSet,supportgowhere:o.LifeSGDarkColourSet,sgwdigitallobby:t.SGWDigitalLobbyDarkColourSet,imda:o.LifeSGDarkColourSet,spf:o.LifeSGDarkColourSet,smgs:o.LifeSGDarkColourSet,careercompass:o.LifeSGDarkColourSet},defaultValue:"lifesg"},g=r=>o=>{var s;const t=o.theme,b="dark"===(null==t?void 0:t.colourMode),g=b?n:i,l=e.getCollection(g,null==t?void 0:t.colourScheme),c=b?"semanticColourDark":"semanticColour",d=null===(s=null==t?void 0:t.overrides)||void 0===s?void 0:s[c],a=d?e.getValue(l,r,d):l[r];return"function"==typeof a?a(o):a},l={text:g("text"),"text-subtle":g("text-subtle"),"text-subtler":g("text-subtler"),"text-subtlest":g("text-subtlest"),"text-primary":g("text-primary"),"text-primary-strong":g("text-primary-strong"),"text-primary-strongest":g("text-primary-strongest"),"text-brand":g("text-brand"),"text-secondary":g("text-secondary"),"text-secondary-subtle":g("text-secondary-subtle"),"text-hover":g("text-hover"),"text-selected":g("text-selected"),"text-selected-hover":g("text-selected-hover"),"text-disabled":g("text-disabled"),"text-disabled-subtle":g("text-disabled-subtle"),"text-disabled-subtlest":g("text-disabled-subtlest"),"text-selected-disabled":g("text-selected-disabled"),"text-success":g("text-success"),"text-warning":g("text-warning"),"text-error":g("text-error"),"text-info":g("text-info"),"text-inverse":g("text-inverse"),icon:g("icon"),"icon-subtle":g("icon-subtle"),"icon-strongest":g("icon-strongest"),"icon-primary":g("icon-primary"),"icon-primary-subtle":g("icon-primary-subtle"),"icon-primary-subtlest":g("icon-primary-subtlest"),"icon-brand":g("icon-brand"),"icon-secondary":g("icon-secondary"),"icon-secondary-subtle":g("icon-secondary-subtle"),"icon-hover":g("icon-hover"),"icon-selected":g("icon-selected"),"icon-selected-hover":g("icon-selected-hover"),"icon-disabled":g("icon-disabled"),"icon-disabled-subtle":g("icon-disabled-subtle"),"icon-selected-disabled":g("icon-selected-disabled"),"icon-success":g("icon-success"),"icon-warning":g("icon-warning"),"icon-error":g("icon-error"),"icon-error-strong":g("icon-error-strong"),"icon-info":g("icon-info"),"icon-inverse":g("icon-inverse"),"icon-primary-inverse":g("icon-primary-inverse"),border:g("border"),"border-strong":g("border-strong"),"border-stronger":g("border-stronger"),"border-primary":g("border-primary"),"border-primary-strong":g("border-primary-strong"),"border-primary-subtle":g("border-primary-subtle"),"border-hover":g("border-hover"),"border-hover-strong":g("border-hover-strong"),"border-selected":g("border-selected"),"border-selected-subtle":g("border-selected-subtle"),"border-selected-subtlest":g("border-selected-subtlest"),"border-selected-hover":g("border-selected-hover"),"border-focus":g("border-focus"),"border-focus-strong":g("border-focus-strong"),"border-disabled":g("border-disabled"),"border-selected-disabled":g("border-selected-disabled"),"border-success":g("border-success"),"border-warning":g("border-warning"),"border-error":g("border-error"),"border-error-focus":g("border-error-focus"),"border-error-focus-strong":g("border-error-focus-strong"),"border-error-strong":g("border-error-strong"),"border-info":g("border-info"),bg:g("bg"),"bg-strong":g("bg-strong"),"bg-stronger":g("bg-stronger"),"bg-strongest":g("bg-strongest"),"bg-hover":g("bg-hover"),"bg-hover-strong":g("bg-hover-strong"),"bg-hover-subtle":g("bg-hover-subtle"),"bg-hover-neutral":g("bg-hover-neutral"),"bg-hover-neutral-strong":g("bg-hover-neutral-strong"),"bg-selected":g("bg-selected"),"bg-selected-hover":g("bg-selected-hover"),"bg-selected-strong":g("bg-selected-strong"),"bg-selected-stronger":g("bg-selected-stronger"),"bg-selected-strongest":g("bg-selected-strongest"),"bg-selected-strongest-hover":g("bg-selected-strongest-hover"),"bg-disabled":g("bg-disabled"),"bg-selected-disabled":g("bg-selected-disabled"),"bg-selected-stronger-disabled":g("bg-selected-stronger-disabled"),"bg-success":g("bg-success"),"bg-success-hover":g("bg-success-hover"),"bg-success-strong":g("bg-success-strong"),"bg-success-strong-hover":g("bg-success-strong-hover"),"bg-warning":g("bg-warning"),"bg-warning-hover":g("bg-warning-hover"),"bg-warning-strong":g("bg-warning-strong"),"bg-warning-strong-hover":g("bg-warning-strong-hover"),"bg-info":g("bg-info"),"bg-info-hover":g("bg-info-hover"),"bg-info-strong":g("bg-info-strong"),"bg-info-strong-hover":g("bg-info-strong-hover"),"bg-error":g("bg-error"),"bg-error-hover":g("bg-error-hover"),"bg-error-strong":g("bg-error-strong"),"bg-error-strong-hover":g("bg-error-strong-hover"),"bg-inverse":g("bg-inverse"),"bg-inverse-subtle":g("bg-inverse-subtle"),"bg-inverse-subtler":g("bg-inverse-subtler"),"bg-inverse-subtlest":g("bg-inverse-subtlest"),"bg-inverse-hover":g("bg-inverse-hover"),"bg-primary":g("bg-primary"),"bg-primary-strong":g("bg-primary-strong"),"bg-primary-subtle":g("bg-primary-subtle"),"bg-primary-subtler":g("bg-primary-subtler"),"bg-primary-subtlest":g("bg-primary-subtlest"),"bg-secondary":g("bg-secondary"),"bg-secondary-subtle":g("bg-secondary-subtle"),"bg-secondary-subtler":g("bg-secondary-subtler"),"bg-secondary-subtlest":g("bg-secondary-subtlest"),"bg-available":g("bg-available"),"bg-primary-hover":g("bg-primary-hover"),"bg-primary-strong-hover":g("bg-primary-strong-hover"),"bg-primary-subtlest-hover":g("bg-primary-subtlest-hover"),"bg-primary-subtlest-selected":g("bg-primary-subtlest-selected"),"overlay-strong":g("overlay-strong"),"overlay-subtle":g("overlay-subtle"),hyperlink:g("hyperlink"),"hyperlink-hover":g("hyperlink-hover"),"hyperlink-visited":g("hyperlink-visited"),"hyperlink-inverse":g("hyperlink-inverse"),"focus-ring":g("focus-ring"),"focus-ring-inverse":g("focus-ring-inverse")};exports.ColourSemantic=l,exports.ColourSpec=i,exports.DarkColourSpec=n,exports.getSemanticColour=g;
2
2
  //# sourceMappingURL=theme-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-helper.js","sources":["../../../../src/theme/colour-semantic/theme-helper.ts"],"sourcesContent":["import { StyledComponentProps, getCollection, getValue } from \"../helpers\";\nimport { ThemeCollectionSpec } from \"../internal-types\";\nimport { ColourScheme, SemanticColourSet } from \"../types\";\nimport {\n LifeSGColourSet,\n LifeSGDarkColourSet,\n} from \"./specs/lifesg-semantic-tokens\";\nimport { PAColourSet } from \"./specs/pa-semantic-tokens\";\nimport {\n A11yPlaygroundColourSet,\n A11yPlaygroundDarkColourSet,\n} from \"./specs/a11yplayground-semantic-tokens\";\nimport { SemanticColourCollectionMap } from \"./types\";\nimport {\n SGWDigitalLobbyColourSet,\n SGWDigitalLobbyDarkColourSet,\n} from \"./specs/sgwdigitallobby-tokens\";\n\nexport const ColourSpec: ThemeCollectionSpec<\n SemanticColourCollectionMap,\n ColourScheme\n> = {\n collections: {\n lifesg: LifeSGColourSet,\n bookingsg: LifeSGColourSet,\n rbs: LifeSGColourSet,\n mylegacy: LifeSGColourSet,\n ccube: LifeSGColourSet,\n oneservice: LifeSGColourSet,\n pa: PAColourSet,\n a11yplayground: A11yPlaygroundColourSet,\n supportgowhere: LifeSGColourSet,\n sgwdigitallobby: SGWDigitalLobbyColourSet,\n imda: LifeSGColourSet,\n spf: LifeSGColourSet,\n smgs: LifeSGColourSet,\n careercompass: LifeSGColourSet,\n },\n defaultValue: \"lifesg\",\n};\n\nexport const DarkColourSpec: ThemeCollectionSpec<\n SemanticColourCollectionMap,\n ColourScheme\n> = {\n collections: {\n lifesg: LifeSGDarkColourSet,\n bookingsg: LifeSGDarkColourSet,\n rbs: LifeSGDarkColourSet,\n mylegacy: LifeSGDarkColourSet,\n ccube: LifeSGDarkColourSet,\n oneservice: LifeSGDarkColourSet,\n pa: LifeSGDarkColourSet,\n a11yplayground: A11yPlaygroundDarkColourSet,\n supportgowhere: LifeSGDarkColourSet,\n sgwdigitallobby: SGWDigitalLobbyDarkColourSet,\n imda: LifeSGDarkColourSet,\n spf: LifeSGDarkColourSet,\n smgs: LifeSGDarkColourSet,\n careercompass: LifeSGDarkColourSet,\n },\n defaultValue: \"lifesg\",\n};\n\nexport const getSemanticColour = (key: keyof SemanticColourSet) => {\n return (props: StyledComponentProps): string => {\n const theme = props.theme;\n const isDarkMode = theme?.colourMode === \"dark\";\n\n // Select the appropriate color spec based on theme mode\n const spec = isDarkMode ? DarkColourSpec : ColourSpec;\n const colorSet: SemanticColourSet = getCollection(\n spec,\n theme?.colourScheme\n );\n\n // Check for mode-specific overrides first,\n // then fallback to general overrides\n const overrideKey = isDarkMode\n ? \"semanticColourDark\"\n : \"semanticColour\";\n const overrides = theme?.overrides?.[overrideKey];\n\n const colorValue = overrides\n ? getValue(colorSet, key, overrides)\n : colorSet[key];\n\n // If function, resolve with props\n if (typeof colorValue === \"function\") {\n return (colorValue as (props: any) => string)(props);\n }\n\n return colorValue as string;\n };\n};\n\nexport const ColourSemantic: {\n [key in keyof SemanticColourSet]: (props: StyledComponentProps) => string;\n} = {\n // text\n text: getSemanticColour(\"text\"),\n \"text-subtle\": getSemanticColour(\"text-subtle\"),\n \"text-subtler\": getSemanticColour(\"text-subtler\"),\n \"text-subtlest\": getSemanticColour(\"text-subtlest\"),\n \"text-primary\": getSemanticColour(\"text-primary\"),\n \"text-primary-strongest\": getSemanticColour(\"text-primary-strongest\"),\n \"text-secondary\": getSemanticColour(\"text-secondary\"),\n \"text-secondary-subtle\": getSemanticColour(\"text-secondary-subtle\"),\n\n \"text-hover\": getSemanticColour(\"text-hover\"),\n \"text-selected\": getSemanticColour(\"text-selected\"),\n \"text-selected-hover\": getSemanticColour(\"text-selected-hover\"),\n\n \"text-disabled\": getSemanticColour(\"text-disabled\"),\n \"text-disabled-subtle\": getSemanticColour(\"text-disabled-subtle\"),\n \"text-disabled-subtlest\": getSemanticColour(\"text-disabled-subtlest\"),\n \"text-selected-disabled\": getSemanticColour(\"text-selected-disabled\"),\n\n \"text-success\": getSemanticColour(\"text-success\"),\n \"text-warning\": getSemanticColour(\"text-warning\"),\n \"text-error\": getSemanticColour(\"text-error\"),\n \"text-info\": getSemanticColour(\"text-info\"),\n \"text-inverse\": getSemanticColour(\"text-inverse\"),\n\n // icon\n icon: getSemanticColour(\"icon\"),\n \"icon-subtle\": getSemanticColour(\"icon-subtle\"),\n \"icon-strongest\": getSemanticColour(\"icon-strongest\"),\n \"icon-primary\": getSemanticColour(\"icon-primary\"),\n \"icon-primary-subtle\": getSemanticColour(\"icon-primary-subtle\"),\n \"icon-primary-subtlest\": getSemanticColour(\"icon-primary-subtlest\"),\n \"icon-secondary\": getSemanticColour(\"icon-secondary\"),\n \"icon-secondary-subtle\": getSemanticColour(\"icon-secondary-subtle\"),\n\n \"icon-hover\": getSemanticColour(\"icon-hover\"),\n \"icon-selected\": getSemanticColour(\"icon-selected\"),\n \"icon-selected-hover\": getSemanticColour(\"icon-selected-hover\"),\n\n \"icon-disabled\": getSemanticColour(\"icon-disabled\"),\n \"icon-disabled-subtle\": getSemanticColour(\"icon-disabled-subtle\"),\n \"icon-selected-disabled\": getSemanticColour(\"icon-selected-disabled\"),\n\n \"icon-success\": getSemanticColour(\"icon-success\"),\n \"icon-warning\": getSemanticColour(\"icon-warning\"),\n \"icon-error\": getSemanticColour(\"icon-error\"),\n \"icon-error-strong\": getSemanticColour(\"icon-error-strong\"),\n \"icon-info\": getSemanticColour(\"icon-info\"),\n \"icon-inverse\": getSemanticColour(\"icon-inverse\"),\n \"icon-primary-inverse\": getSemanticColour(\"icon-primary-inverse\"),\n\n // border\n border: getSemanticColour(\"border\"),\n \"border-strong\": getSemanticColour(\"border-strong\"),\n \"border-stronger\": getSemanticColour(\"border-stronger\"),\n \"border-primary\": getSemanticColour(\"border-primary\"),\n \"border-primary-subtle\": getSemanticColour(\"border-primary-subtle\"),\n\n \"border-hover\": getSemanticColour(\"border-hover\"),\n \"border-hover-strong\": getSemanticColour(\"border-hover-strong\"),\n\n \"border-selected\": getSemanticColour(\"border-selected\"),\n \"border-selected-subtle\": getSemanticColour(\"border-selected-subtle\"),\n \"border-selected-subtlest\": getSemanticColour(\"border-selected-subtlest\"),\n \"border-selected-hover\": getSemanticColour(\"border-selected-hover\"),\n\n \"border-focus\": getSemanticColour(\"border-focus\"),\n \"border-focus-strong\": getSemanticColour(\"border-focus-strong\"),\n\n \"border-disabled\": getSemanticColour(\"border-disabled\"),\n \"border-selected-disabled\": getSemanticColour(\"border-selected-disabled\"),\n\n \"border-success\": getSemanticColour(\"border-success\"),\n \"border-warning\": getSemanticColour(\"border-warning\"),\n \"border-error\": getSemanticColour(\"border-error\"),\n \"border-error-focus\": getSemanticColour(\"border-error-focus\"),\n \"border-error-focus-strong\": getSemanticColour(\"border-error-focus-strong\"),\n \"border-error-strong\": getSemanticColour(\"border-error-strong\"),\n \"border-info\": getSemanticColour(\"border-info\"),\n\n // background\n bg: getSemanticColour(\"bg\"),\n \"bg-strong\": getSemanticColour(\"bg-strong\"),\n \"bg-stronger\": getSemanticColour(\"bg-stronger\"),\n \"bg-strongest\": getSemanticColour(\"bg-strongest\"),\n\n \"bg-hover\": getSemanticColour(\"bg-hover\"),\n \"bg-hover-strong\": getSemanticColour(\"bg-hover-strong\"),\n \"bg-hover-subtle\": getSemanticColour(\"bg-hover-subtle\"),\n \"bg-hover-neutral\": getSemanticColour(\"bg-hover-neutral\"),\n \"bg-hover-neutral-strong\": getSemanticColour(\"bg-hover-neutral-strong\"),\n\n \"bg-selected\": getSemanticColour(\"bg-selected\"),\n \"bg-selected-hover\": getSemanticColour(\"bg-selected-hover\"),\n \"bg-selected-strong\": getSemanticColour(\"bg-selected-strong\"),\n \"bg-selected-stronger\": getSemanticColour(\"bg-selected-stronger\"),\n \"bg-selected-strongest\": getSemanticColour(\"bg-selected-strongest\"),\n \"bg-selected-strongest-hover\": getSemanticColour(\n \"bg-selected-strongest-hover\"\n ),\n\n \"bg-disabled\": getSemanticColour(\"bg-disabled\"),\n \"bg-selected-disabled\": getSemanticColour(\"bg-selected-disabled\"),\n \"bg-selected-stronger-disabled\": getSemanticColour(\n \"bg-selected-stronger-disabled\"\n ),\n\n \"bg-success\": getSemanticColour(\"bg-success\"),\n \"bg-success-hover\": getSemanticColour(\"bg-success-hover\"),\n \"bg-success-strong\": getSemanticColour(\"bg-success-strong\"),\n \"bg-success-strong-hover\": getSemanticColour(\"bg-success-strong-hover\"),\n \"bg-warning\": getSemanticColour(\"bg-warning\"),\n \"bg-warning-hover\": getSemanticColour(\"bg-warning-hover\"),\n \"bg-warning-strong\": getSemanticColour(\"bg-warning-strong\"),\n \"bg-warning-strong-hover\": getSemanticColour(\"bg-warning-strong-hover\"),\n \"bg-info\": getSemanticColour(\"bg-info\"),\n \"bg-info-hover\": getSemanticColour(\"bg-info-hover\"),\n \"bg-info-strong\": getSemanticColour(\"bg-info-strong\"),\n \"bg-info-strong-hover\": getSemanticColour(\"bg-info-strong-hover\"),\n \"bg-error\": getSemanticColour(\"bg-error\"),\n \"bg-error-hover\": getSemanticColour(\"bg-error-hover\"),\n \"bg-error-strong\": getSemanticColour(\"bg-error-strong\"),\n \"bg-error-strong-hover\": getSemanticColour(\"bg-error-strong-hover\"),\n\n \"bg-inverse\": getSemanticColour(\"bg-inverse\"),\n \"bg-inverse-subtle\": getSemanticColour(\"bg-inverse-subtle\"),\n \"bg-inverse-subtler\": getSemanticColour(\"bg-inverse-subtler\"),\n \"bg-inverse-subtlest\": getSemanticColour(\"bg-inverse-subtlest\"),\n \"bg-inverse-hover\": getSemanticColour(\"bg-inverse-hover\"),\n\n \"bg-primary\": getSemanticColour(\"bg-primary\"),\n \"bg-primary-subtle\": getSemanticColour(\"bg-primary-subtle\"),\n \"bg-primary-subtler\": getSemanticColour(\"bg-primary-subtler\"),\n \"bg-primary-subtlest\": getSemanticColour(\"bg-primary-subtlest\"),\n \"bg-available\": getSemanticColour(\"bg-available\"),\n\n \"bg-secondary\": getSemanticColour(\"bg-secondary\"),\n \"bg-secondary-subtle\": getSemanticColour(\"bg-secondary-subtle\"),\n \"bg-secondary-subtler\": getSemanticColour(\"bg-secondary-subtler\"),\n \"bg-secondary-subtlest\": getSemanticColour(\"bg-secondary-subtlest\"),\n\n \"bg-primary-hover\": getSemanticColour(\"bg-primary-hover\"),\n \"bg-primary-subtlest-hover\": getSemanticColour(\"bg-primary-subtlest-hover\"),\n \"bg-primary-subtlest-selected\": getSemanticColour(\n \"bg-primary-subtlest-selected\"\n ),\n\n // overlay\n \"overlay-strong\": getSemanticColour(\"overlay-strong\"),\n \"overlay-subtle\": getSemanticColour(\"overlay-subtle\"),\n\n // hyperlink\n hyperlink: getSemanticColour(\"hyperlink\"),\n \"hyperlink-hover\": getSemanticColour(\"hyperlink-hover\"),\n \"hyperlink-visited\": getSemanticColour(\"hyperlink-visited\"),\n \"hyperlink-inverse\": getSemanticColour(\"hyperlink-inverse\"),\n\n // focus ring\n \"focus-ring\": getSemanticColour(\"focus-ring\"),\n \"focus-ring-inverse\": getSemanticColour(\"focus-ring-inverse\"),\n};\n"],"names":["ColourSpec","collections","lifesg","LifeSGColourSet","bookingsg","rbs","mylegacy","ccube","oneservice","pa","PAColourSet","a11yplayground","A11yPlaygroundColourSet","supportgowhere","sgwdigitallobby","SGWDigitalLobbyColourSet","imda","spf","smgs","careercompass","defaultValue","DarkColourSpec","LifeSGDarkColourSet","A11yPlaygroundDarkColourSet","SGWDigitalLobbyDarkColourSet","getSemanticColour","key","props","theme","isDarkMode","colourMode","spec","colorSet","getCollection","colourScheme","overrideKey","overrides","_a","colorValue","getValue","ColourSemantic","text","icon","border","bg","hyperlink"],"mappings":"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"}
1
+ {"version":3,"file":"theme-helper.js","sources":["../../../../src/theme/colour-semantic/theme-helper.ts"],"sourcesContent":["import { StyledComponentProps, getCollection, getValue } from \"../helpers\";\nimport { ThemeCollectionSpec } from \"../internal-types\";\nimport { ColourScheme, SemanticColourSet } from \"../types\";\nimport {\n A11yPlaygroundColourSet,\n A11yPlaygroundDarkColourSet,\n} from \"./specs/a11yplayground-semantic-tokens\";\nimport {\n LifeSGColourSet,\n LifeSGDarkColourSet,\n} from \"./specs/lifesg-semantic-tokens\";\nimport { PAColourSet } from \"./specs/pa-semantic-tokens\";\nimport {\n SGWDigitalLobbyColourSet,\n SGWDigitalLobbyDarkColourSet,\n} from \"./specs/sgwdigitallobby-tokens\";\nimport { SPFColourSet } from \"./specs/spf-semantic-tokens\";\nimport { SemanticColourCollectionMap } from \"./types\";\n\nexport const ColourSpec: ThemeCollectionSpec<\n SemanticColourCollectionMap,\n ColourScheme\n> = {\n collections: {\n lifesg: LifeSGColourSet,\n bookingsg: LifeSGColourSet,\n rbs: LifeSGColourSet,\n mylegacy: LifeSGColourSet,\n ccube: LifeSGColourSet,\n oneservice: LifeSGColourSet,\n pa: PAColourSet,\n a11yplayground: A11yPlaygroundColourSet,\n supportgowhere: LifeSGColourSet,\n sgwdigitallobby: SGWDigitalLobbyColourSet,\n imda: LifeSGColourSet,\n spf: SPFColourSet,\n smgs: LifeSGColourSet,\n careercompass: LifeSGColourSet,\n },\n defaultValue: \"lifesg\",\n};\n\nexport const DarkColourSpec: ThemeCollectionSpec<\n SemanticColourCollectionMap,\n ColourScheme\n> = {\n collections: {\n lifesg: LifeSGDarkColourSet,\n bookingsg: LifeSGDarkColourSet,\n rbs: LifeSGDarkColourSet,\n mylegacy: LifeSGDarkColourSet,\n ccube: LifeSGDarkColourSet,\n oneservice: LifeSGDarkColourSet,\n pa: LifeSGDarkColourSet,\n a11yplayground: A11yPlaygroundDarkColourSet,\n supportgowhere: LifeSGDarkColourSet,\n sgwdigitallobby: SGWDigitalLobbyDarkColourSet,\n imda: LifeSGDarkColourSet,\n spf: LifeSGDarkColourSet,\n smgs: LifeSGDarkColourSet,\n careercompass: LifeSGDarkColourSet,\n },\n defaultValue: \"lifesg\",\n};\n\nexport const getSemanticColour = (key: keyof SemanticColourSet) => {\n return (props: StyledComponentProps): string => {\n const theme = props.theme;\n const isDarkMode = theme?.colourMode === \"dark\";\n\n // Select the appropriate color spec based on theme mode\n const spec = isDarkMode ? DarkColourSpec : ColourSpec;\n const colorSet: SemanticColourSet = getCollection(\n spec,\n theme?.colourScheme\n );\n\n // Check for mode-specific overrides first,\n // then fallback to general overrides\n const overrideKey = isDarkMode\n ? \"semanticColourDark\"\n : \"semanticColour\";\n const overrides = theme?.overrides?.[overrideKey];\n\n const colorValue = overrides\n ? getValue(colorSet, key, overrides)\n : colorSet[key];\n\n // If function, resolve with props\n if (typeof colorValue === \"function\") {\n return (colorValue as (props: any) => string)(props);\n }\n\n return colorValue as string;\n };\n};\n\nexport const ColourSemantic: {\n [key in keyof SemanticColourSet]: (props: StyledComponentProps) => string;\n} = {\n // text\n text: getSemanticColour(\"text\"),\n \"text-subtle\": getSemanticColour(\"text-subtle\"),\n \"text-subtler\": getSemanticColour(\"text-subtler\"),\n \"text-subtlest\": getSemanticColour(\"text-subtlest\"),\n \"text-primary\": getSemanticColour(\"text-primary\"),\n \"text-primary-strong\": getSemanticColour(\"text-primary-strong\"),\n \"text-primary-strongest\": getSemanticColour(\"text-primary-strongest\"),\n \"text-brand\": getSemanticColour(\"text-brand\"),\n \"text-secondary\": getSemanticColour(\"text-secondary\"),\n \"text-secondary-subtle\": getSemanticColour(\"text-secondary-subtle\"),\n\n \"text-hover\": getSemanticColour(\"text-hover\"),\n \"text-selected\": getSemanticColour(\"text-selected\"),\n \"text-selected-hover\": getSemanticColour(\"text-selected-hover\"),\n\n \"text-disabled\": getSemanticColour(\"text-disabled\"),\n \"text-disabled-subtle\": getSemanticColour(\"text-disabled-subtle\"),\n \"text-disabled-subtlest\": getSemanticColour(\"text-disabled-subtlest\"),\n \"text-selected-disabled\": getSemanticColour(\"text-selected-disabled\"),\n\n \"text-success\": getSemanticColour(\"text-success\"),\n \"text-warning\": getSemanticColour(\"text-warning\"),\n \"text-error\": getSemanticColour(\"text-error\"),\n \"text-info\": getSemanticColour(\"text-info\"),\n \"text-inverse\": getSemanticColour(\"text-inverse\"),\n\n // icon\n icon: getSemanticColour(\"icon\"),\n \"icon-subtle\": getSemanticColour(\"icon-subtle\"),\n \"icon-strongest\": getSemanticColour(\"icon-strongest\"),\n \"icon-primary\": getSemanticColour(\"icon-primary\"),\n \"icon-primary-subtle\": getSemanticColour(\"icon-primary-subtle\"),\n \"icon-primary-subtlest\": getSemanticColour(\"icon-primary-subtlest\"),\n \"icon-brand\": getSemanticColour(\"icon-brand\"),\n \"icon-secondary\": getSemanticColour(\"icon-secondary\"),\n \"icon-secondary-subtle\": getSemanticColour(\"icon-secondary-subtle\"),\n\n \"icon-hover\": getSemanticColour(\"icon-hover\"),\n \"icon-selected\": getSemanticColour(\"icon-selected\"),\n \"icon-selected-hover\": getSemanticColour(\"icon-selected-hover\"),\n\n \"icon-disabled\": getSemanticColour(\"icon-disabled\"),\n \"icon-disabled-subtle\": getSemanticColour(\"icon-disabled-subtle\"),\n \"icon-selected-disabled\": getSemanticColour(\"icon-selected-disabled\"),\n\n \"icon-success\": getSemanticColour(\"icon-success\"),\n \"icon-warning\": getSemanticColour(\"icon-warning\"),\n \"icon-error\": getSemanticColour(\"icon-error\"),\n \"icon-error-strong\": getSemanticColour(\"icon-error-strong\"),\n \"icon-info\": getSemanticColour(\"icon-info\"),\n \"icon-inverse\": getSemanticColour(\"icon-inverse\"),\n \"icon-primary-inverse\": getSemanticColour(\"icon-primary-inverse\"),\n\n // border\n border: getSemanticColour(\"border\"),\n \"border-strong\": getSemanticColour(\"border-strong\"),\n \"border-stronger\": getSemanticColour(\"border-stronger\"),\n \"border-primary\": getSemanticColour(\"border-primary\"),\n \"border-primary-strong\": getSemanticColour(\"border-primary-strong\"),\n \"border-primary-subtle\": getSemanticColour(\"border-primary-subtle\"),\n\n \"border-hover\": getSemanticColour(\"border-hover\"),\n \"border-hover-strong\": getSemanticColour(\"border-hover-strong\"),\n\n \"border-selected\": getSemanticColour(\"border-selected\"),\n \"border-selected-subtle\": getSemanticColour(\"border-selected-subtle\"),\n \"border-selected-subtlest\": getSemanticColour(\"border-selected-subtlest\"),\n \"border-selected-hover\": getSemanticColour(\"border-selected-hover\"),\n\n \"border-focus\": getSemanticColour(\"border-focus\"),\n \"border-focus-strong\": getSemanticColour(\"border-focus-strong\"),\n\n \"border-disabled\": getSemanticColour(\"border-disabled\"),\n \"border-selected-disabled\": getSemanticColour(\"border-selected-disabled\"),\n\n \"border-success\": getSemanticColour(\"border-success\"),\n \"border-warning\": getSemanticColour(\"border-warning\"),\n \"border-error\": getSemanticColour(\"border-error\"),\n \"border-error-focus\": getSemanticColour(\"border-error-focus\"),\n \"border-error-focus-strong\": getSemanticColour(\"border-error-focus-strong\"),\n \"border-error-strong\": getSemanticColour(\"border-error-strong\"),\n \"border-info\": getSemanticColour(\"border-info\"),\n\n // background\n bg: getSemanticColour(\"bg\"),\n \"bg-strong\": getSemanticColour(\"bg-strong\"),\n \"bg-stronger\": getSemanticColour(\"bg-stronger\"),\n \"bg-strongest\": getSemanticColour(\"bg-strongest\"),\n\n \"bg-hover\": getSemanticColour(\"bg-hover\"),\n \"bg-hover-strong\": getSemanticColour(\"bg-hover-strong\"),\n \"bg-hover-subtle\": getSemanticColour(\"bg-hover-subtle\"),\n \"bg-hover-neutral\": getSemanticColour(\"bg-hover-neutral\"),\n \"bg-hover-neutral-strong\": getSemanticColour(\"bg-hover-neutral-strong\"),\n\n \"bg-selected\": getSemanticColour(\"bg-selected\"),\n \"bg-selected-hover\": getSemanticColour(\"bg-selected-hover\"),\n \"bg-selected-strong\": getSemanticColour(\"bg-selected-strong\"),\n \"bg-selected-stronger\": getSemanticColour(\"bg-selected-stronger\"),\n \"bg-selected-strongest\": getSemanticColour(\"bg-selected-strongest\"),\n \"bg-selected-strongest-hover\": getSemanticColour(\n \"bg-selected-strongest-hover\"\n ),\n\n \"bg-disabled\": getSemanticColour(\"bg-disabled\"),\n \"bg-selected-disabled\": getSemanticColour(\"bg-selected-disabled\"),\n \"bg-selected-stronger-disabled\": getSemanticColour(\n \"bg-selected-stronger-disabled\"\n ),\n\n \"bg-success\": getSemanticColour(\"bg-success\"),\n \"bg-success-hover\": getSemanticColour(\"bg-success-hover\"),\n \"bg-success-strong\": getSemanticColour(\"bg-success-strong\"),\n \"bg-success-strong-hover\": getSemanticColour(\"bg-success-strong-hover\"),\n \"bg-warning\": getSemanticColour(\"bg-warning\"),\n \"bg-warning-hover\": getSemanticColour(\"bg-warning-hover\"),\n \"bg-warning-strong\": getSemanticColour(\"bg-warning-strong\"),\n \"bg-warning-strong-hover\": getSemanticColour(\"bg-warning-strong-hover\"),\n \"bg-info\": getSemanticColour(\"bg-info\"),\n \"bg-info-hover\": getSemanticColour(\"bg-info-hover\"),\n \"bg-info-strong\": getSemanticColour(\"bg-info-strong\"),\n \"bg-info-strong-hover\": getSemanticColour(\"bg-info-strong-hover\"),\n \"bg-error\": getSemanticColour(\"bg-error\"),\n \"bg-error-hover\": getSemanticColour(\"bg-error-hover\"),\n \"bg-error-strong\": getSemanticColour(\"bg-error-strong\"),\n \"bg-error-strong-hover\": getSemanticColour(\"bg-error-strong-hover\"),\n\n \"bg-inverse\": getSemanticColour(\"bg-inverse\"),\n \"bg-inverse-subtle\": getSemanticColour(\"bg-inverse-subtle\"),\n \"bg-inverse-subtler\": getSemanticColour(\"bg-inverse-subtler\"),\n \"bg-inverse-subtlest\": getSemanticColour(\"bg-inverse-subtlest\"),\n \"bg-inverse-hover\": getSemanticColour(\"bg-inverse-hover\"),\n\n \"bg-primary\": getSemanticColour(\"bg-primary\"),\n \"bg-primary-strong\": getSemanticColour(\"bg-primary-strong\"),\n \"bg-primary-subtle\": getSemanticColour(\"bg-primary-subtle\"),\n \"bg-primary-subtler\": getSemanticColour(\"bg-primary-subtler\"),\n \"bg-primary-subtlest\": getSemanticColour(\"bg-primary-subtlest\"),\n \"bg-secondary\": getSemanticColour(\"bg-secondary\"),\n \"bg-secondary-subtle\": getSemanticColour(\"bg-secondary-subtle\"),\n \"bg-secondary-subtler\": getSemanticColour(\"bg-secondary-subtler\"),\n \"bg-secondary-subtlest\": getSemanticColour(\"bg-secondary-subtlest\"),\n \"bg-available\": getSemanticColour(\"bg-available\"),\n\n \"bg-primary-hover\": getSemanticColour(\"bg-primary-hover\"),\n \"bg-primary-strong-hover\": getSemanticColour(\"bg-primary-strong-hover\"),\n \"bg-primary-subtlest-hover\": getSemanticColour(\"bg-primary-subtlest-hover\"),\n\n \"bg-primary-subtlest-selected\": getSemanticColour(\n \"bg-primary-subtlest-selected\"\n ),\n\n // overlay\n \"overlay-strong\": getSemanticColour(\"overlay-strong\"),\n \"overlay-subtle\": getSemanticColour(\"overlay-subtle\"),\n\n // hyperlink\n hyperlink: getSemanticColour(\"hyperlink\"),\n \"hyperlink-hover\": getSemanticColour(\"hyperlink-hover\"),\n \"hyperlink-visited\": getSemanticColour(\"hyperlink-visited\"),\n \"hyperlink-inverse\": getSemanticColour(\"hyperlink-inverse\"),\n\n // focus ring\n \"focus-ring\": getSemanticColour(\"focus-ring\"),\n \"focus-ring-inverse\": getSemanticColour(\"focus-ring-inverse\"),\n};\n"],"names":["ColourSpec","collections","lifesg","LifeSGColourSet","bookingsg","rbs","mylegacy","ccube","oneservice","pa","PAColourSet","a11yplayground","A11yPlaygroundColourSet","supportgowhere","sgwdigitallobby","SGWDigitalLobbyColourSet","imda","spf","SPFColourSet","smgs","careercompass","defaultValue","DarkColourSpec","LifeSGDarkColourSet","A11yPlaygroundDarkColourSet","SGWDigitalLobbyDarkColourSet","getSemanticColour","key","props","theme","isDarkMode","colourMode","spec","colorSet","getCollection","colourScheme","overrideKey","overrides","_a","colorValue","getValue","ColourSemantic","text","icon","border","bg","hyperlink"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";exports.SGWDigitalLobbyFontSpecSet={"heading-size-xxl":"3.75rem","heading-size-xl":"3rem","heading-size-lg":"2.5rem","heading-size-md":"2rem","heading-size-sm":"1.625rem","heading-size-xs":"1.375rem","heading-lh-xxl":"4.5rem","heading-lh-xl":"3.5rem","heading-lh-lg":"3rem","heading-lh-md":"2.5rem","heading-lh-sm":"2.25rem","heading-lh-xs":"1.75rem","heading-ls-xxl":"-0.035rem","heading-ls-xl":"-0.035em","heading-ls-lg":"-0.02rem","heading-ls-md":"-0.02rem","heading-ls-sm":"0rem","heading-ls-xs":"0rem","weight-light":"300","weight-regular":"400","weight-semibold":"600","weight-bold":"700","font-family":"Libre Franklin","heading-font-family":"Libre Franklin","body-font-family":"Libre Franklin","body-size-baseline":"1.375rem","body-size-md":"1.2rem","body-size-sm":"1.125rem","body-size-xs":"1rem","body-lh-baseline":"1.75rem","body-lh-md":"1.625rem","body-lh-sm":"1.625rem","body-lh-xs":"1.5rem","body-ls-baseline":"0rem","body-ls-md":"0rem","body-ls-sm":"0rem","body-ls-xs":"0.009rem","form-label-size":"1.25rem","form-description-size":"1.125rem","form-label-lh":"1.625rem","form-description-lh":"1.625rem","form-label-ls":"0rem","form-description-ls":"0rem"};
1
+ "use strict";exports.SGWDigitalLobbyFontSpecSet={"heading-size-xxl":"3.75rem","heading-size-xl":"3rem","heading-size-lg":"2.5rem","heading-size-md":"2rem","heading-size-sm":"1.625rem","heading-size-xs":"1.375rem","heading-lh-xxl":"4.5rem","heading-lh-xl":"3.5rem","heading-lh-lg":"3rem","heading-lh-md":"2.5rem","heading-lh-sm":"2.25rem","heading-lh-xs":"1.75rem","heading-ls-xxl":"-0.035rem","heading-ls-xl":"-0.035em","heading-ls-lg":"-0.02rem","heading-ls-md":"-0.02rem","heading-ls-sm":"0rem","heading-ls-xs":"0rem","weight-light":"300","weight-regular":"400","weight-semibold":"600","weight-bold":"700","font-family":"Libre Franklin","heading-font-family":"Libre Franklin","body-font-family":"Libre Franklin","body-size-baseline":"1.375rem","body-size-md":"1.25rem","body-size-sm":"1.125rem","body-size-xs":"1rem","body-lh-baseline":"1.75rem","body-lh-md":"1.625rem","body-lh-sm":"1.625rem","body-lh-xs":"1.5rem","body-ls-baseline":"0rem","body-ls-md":"0rem","body-ls-sm":"0rem","body-ls-xs":"0.009rem","form-label-size":"1.25rem","form-description-size":"1.125rem","form-label-lh":"1.625rem","form-description-lh":"1.625rem","form-label-ls":"0rem","form-description-ls":"0rem"};
2
2
  //# sourceMappingURL=sgw-digital-lobby-font-spec-set.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgw-digital-lobby-font-spec-set.js","sources":["../../../../../src/theme/font-spec/specs/sgw-digital-lobby-font-spec-set.ts"],"sourcesContent":["import { FontSpecSet } from \"../types\";\n\nexport const SGWDigitalLobbyFontSpecSet: FontSpecSet = {\n \"heading-size-xxl\": \"3.75rem\",\n \"heading-size-xl\": \"3rem\",\n \"heading-size-lg\": \"2.5rem\",\n \"heading-size-md\": \"2rem\",\n \"heading-size-sm\": \"1.625rem\",\n \"heading-size-xs\": \"1.375rem\",\n\n \"heading-lh-xxl\": \"4.5rem\",\n \"heading-lh-xl\": \"3.5rem\",\n \"heading-lh-lg\": \"3rem\",\n \"heading-lh-md\": \"2.5rem\",\n \"heading-lh-sm\": \"2.25rem\",\n \"heading-lh-xs\": \"1.75rem\",\n\n \"heading-ls-xxl\": \"-0.035rem\",\n \"heading-ls-xl\": \"-0.035em\",\n \"heading-ls-lg\": \"-0.02rem\",\n \"heading-ls-md\": \"-0.02rem\",\n \"heading-ls-sm\": \"0rem\",\n \"heading-ls-xs\": \"0rem\",\n\n \"weight-light\": \"300\",\n \"weight-regular\": \"400\",\n \"weight-semibold\": \"600\",\n \"weight-bold\": \"700\",\n \"font-family\": \"Libre Franklin\",\n \"heading-font-family\": \"Libre Franklin\",\n \"body-font-family\": \"Libre Franklin\",\n\n \"body-size-baseline\": \"1.375rem\",\n \"body-size-md\": \"1.2rem\",\n \"body-size-sm\": \"1.125rem\",\n \"body-size-xs\": \"1rem\",\n\n \"body-lh-baseline\": \"1.75rem\",\n \"body-lh-md\": \"1.625rem\",\n \"body-lh-sm\": \"1.625rem\",\n \"body-lh-xs\": \"1.5rem\",\n\n \"body-ls-baseline\": \"0rem\",\n \"body-ls-md\": \"0rem\",\n \"body-ls-sm\": \"0rem\",\n \"body-ls-xs\": \"0.009rem\",\n\n \"form-label-size\": \"1.25rem\",\n \"form-description-size\": \"1.125rem\",\n\n \"form-label-lh\": \"1.625rem\",\n \"form-description-lh\": \"1.625rem\",\n\n \"form-label-ls\": \"0rem\",\n \"form-description-ls\": \"0rem\",\n};\n"],"names":[],"mappings":"gDAEuD,CACnD,mBAAoB,UACpB,kBAAmB,OACnB,kBAAmB,SACnB,kBAAmB,OACnB,kBAAmB,WACnB,kBAAmB,WAEnB,iBAAkB,SAClB,gBAAiB,SACjB,gBAAiB,OACjB,gBAAiB,SACjB,gBAAiB,UACjB,gBAAiB,UAEjB,iBAAkB,YAClB,gBAAiB,WACjB,gBAAiB,WACjB,gBAAiB,WACjB,gBAAiB,OACjB,gBAAiB,OAEjB,eAAgB,MAChB,iBAAkB,MAClB,kBAAmB,MACnB,cAAe,MACf,cAAe,iBACf,sBAAuB,iBACvB,mBAAoB,iBAEpB,qBAAsB,WACtB,eAAgB,SAChB,eAAgB,WAChB,eAAgB,OAEhB,mBAAoB,UACpB,aAAc,WACd,aAAc,WACd,aAAc,SAEd,mBAAoB,OACpB,aAAc,OACd,aAAc,OACd,aAAc,WAEd,kBAAmB,UACnB,wBAAyB,WAEzB,gBAAiB,WACjB,sBAAuB,WAEvB,gBAAiB,OACjB,sBAAuB"}
1
+ {"version":3,"file":"sgw-digital-lobby-font-spec-set.js","sources":["../../../../../src/theme/font-spec/specs/sgw-digital-lobby-font-spec-set.ts"],"sourcesContent":["import { FontSpecSet } from \"../types\";\n\nexport const SGWDigitalLobbyFontSpecSet: FontSpecSet = {\n \"heading-size-xxl\": \"3.75rem\",\n \"heading-size-xl\": \"3rem\",\n \"heading-size-lg\": \"2.5rem\",\n \"heading-size-md\": \"2rem\",\n \"heading-size-sm\": \"1.625rem\",\n \"heading-size-xs\": \"1.375rem\",\n\n \"heading-lh-xxl\": \"4.5rem\",\n \"heading-lh-xl\": \"3.5rem\",\n \"heading-lh-lg\": \"3rem\",\n \"heading-lh-md\": \"2.5rem\",\n \"heading-lh-sm\": \"2.25rem\",\n \"heading-lh-xs\": \"1.75rem\",\n\n \"heading-ls-xxl\": \"-0.035rem\",\n \"heading-ls-xl\": \"-0.035em\",\n \"heading-ls-lg\": \"-0.02rem\",\n \"heading-ls-md\": \"-0.02rem\",\n \"heading-ls-sm\": \"0rem\",\n \"heading-ls-xs\": \"0rem\",\n\n \"weight-light\": \"300\",\n \"weight-regular\": \"400\",\n \"weight-semibold\": \"600\",\n \"weight-bold\": \"700\",\n \"font-family\": \"Libre Franklin\",\n \"heading-font-family\": \"Libre Franklin\",\n \"body-font-family\": \"Libre Franklin\",\n\n \"body-size-baseline\": \"1.375rem\",\n \"body-size-md\": \"1.25rem\",\n \"body-size-sm\": \"1.125rem\",\n \"body-size-xs\": \"1rem\",\n\n \"body-lh-baseline\": \"1.75rem\",\n \"body-lh-md\": \"1.625rem\",\n \"body-lh-sm\": \"1.625rem\",\n \"body-lh-xs\": \"1.5rem\",\n\n \"body-ls-baseline\": \"0rem\",\n \"body-ls-md\": \"0rem\",\n \"body-ls-sm\": \"0rem\",\n \"body-ls-xs\": \"0.009rem\",\n\n \"form-label-size\": \"1.25rem\",\n \"form-description-size\": \"1.125rem\",\n\n \"form-label-lh\": \"1.625rem\",\n \"form-description-lh\": \"1.625rem\",\n\n \"form-label-ls\": \"0rem\",\n \"form-description-ls\": \"0rem\",\n};\n"],"names":[],"mappings":"gDAEuD,CACnD,mBAAoB,UACpB,kBAAmB,OACnB,kBAAmB,SACnB,kBAAmB,OACnB,kBAAmB,WACnB,kBAAmB,WAEnB,iBAAkB,SAClB,gBAAiB,SACjB,gBAAiB,OACjB,gBAAiB,SACjB,gBAAiB,UACjB,gBAAiB,UAEjB,iBAAkB,YAClB,gBAAiB,WACjB,gBAAiB,WACjB,gBAAiB,WACjB,gBAAiB,OACjB,gBAAiB,OAEjB,eAAgB,MAChB,iBAAkB,MAClB,kBAAmB,MACnB,cAAe,MACf,cAAe,iBACf,sBAAuB,iBACvB,mBAAoB,iBAEpB,qBAAsB,WACtB,eAAgB,UAChB,eAAgB,WAChB,eAAgB,OAEhB,mBAAoB,UACpB,aAAc,WACd,aAAc,WACd,aAAc,SAEd,mBAAoB,OACpB,aAAc,OACd,aAAc,OACd,aAAc,WAEd,kBAAmB,UACnB,wBAAyB,WAEzB,gBAAiB,WACjB,sBAAuB,WAEvB,gBAAiB,OACjB,sBAAuB"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../_virtual/_tslib.js"),t=require("react/jsx-runtime"),r=require("@lifesg/react-icons"),a=require("./timetable-header.style.js");exports.TimeTableHeader=l=>{var{selectedDate:s,loading:i,tableContainerRef:o,totalRecords:n,onPreviousDayClick:d,onNextDayClick:c,onRefresh:u,onCalendarDateSelect:b}=l,h=e.__rest(l,["selectedDate","loading","tableContainerRef","totalRecords","onPreviousDayClick","onNextDayClick","onRefresh","onCalendarDateSelect"]);const g=()=>{o.current&&(o.current.scrollTop=0)},x=()=>{u&&(g(),u())};return t.jsxs(a.NavigationHeaderWrapper,{children:[t.jsx(a.StyledDateNavigator,Object.assign({selectedDate:s,loading:i},h,{onRightArrowClick:e=>{g(),c(e)},onLeftArrowClick:e=>{g(),d(e)},onCalendarDateSelect:b})),void 0===n?t.jsx(t.Fragment,{}):t.jsxs(a.NavigationHeaderSubtitleWrapper,{children:[t.jsxs(a.StyledResultText,{"data-testid":"timetable-records-results",weight:"semibold",children:[n," results found"]}),u&&t.jsx(a.StyledRefreshButton,{"data-testid":"timetable-records-refresh-btn","aria-label":"Refresh timetable records",styleType:"light",sizeType:"small",disabled:i,onClick:x,$loading:i,children:t.jsx(r.RefreshIcon,{})})]})]})};
1
+ "use strict";var e=require("../../_virtual/_tslib.js"),t=require("react/jsx-runtime"),r=require("@lifesg/react-icons"),a=require("./timetable-header.style.js");exports.TimeTableHeader=l=>{var{selectedDate:s,loading:i,tableContainerRef:o,totalRecords:n,onPreviousDayClick:d,onNextDayClick:c,onRefresh:u,onCalendarDateSelect:b}=l,h=e.__rest(l,["selectedDate","loading","tableContainerRef","totalRecords","onPreviousDayClick","onNextDayClick","onRefresh","onCalendarDateSelect"]);const g=()=>{o.current&&(o.current.scrollTop=0)},x=()=>{u&&(g(),u())};return t.jsxs(a.NavigationHeaderWrapper,{children:[t.jsx(a.StyledDateNavigator,Object.assign({selectedDate:s,loading:i},h,{onRightArrowClick:e=>{g(),c(e)},onLeftArrowClick:e=>{g(),d(e)},onCalendarDateSelect:b})),void 0===n?t.jsx(t.Fragment,{}):t.jsxs(a.NavigationHeaderSubtitleWrapper,{children:[t.jsxs(a.StyledResultText,{"data-testid":"timetable-records-results",weight:"semibold",children:[n," result",1!==n?"s":""," found"]}),u&&t.jsx(a.StyledRefreshButton,{"data-testid":"timetable-records-refresh-btn","aria-label":"Refresh timetable records",styleType:"light",sizeType:"small",disabled:i,onClick:x,$loading:i,children:t.jsx(r.RefreshIcon,{})})]})]})};
2
2
  //# sourceMappingURL=timetable-header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timetable-header.js","sources":["../../../../src/timetable/timetable-header/timetable-header.tsx"],"sourcesContent":["import { RefreshIcon } from \"@lifesg/react-icons\";\nimport { RefObject } from \"react\";\nimport {\n NavigationHeaderSubtitleWrapper,\n NavigationHeaderWrapper,\n StyledDateNavigator,\n StyledRefreshButton,\n StyledResultText,\n} from \"./timetable-header.style\";\n\ninterface TimeTableHeaderProps {\n selectedDate: string;\n loading: boolean;\n tableContainerRef: RefObject<HTMLDivElement>;\n minDate?: string | undefined;\n maxDate?: string | undefined;\n totalRecords?: number | undefined;\n showDateAsShortForm?: boolean | undefined;\n showCurrentDateAsToday?: boolean | undefined;\n onPreviousDayClick: (currentDate: string) => void | undefined;\n onNextDayClick: (currentDate: string) => void | undefined;\n onRefresh?: (() => void) | undefined;\n onCalendarDateSelect?: ((currentDate: string) => void) | undefined;\n}\n\nexport const TimeTableHeader = ({\n selectedDate,\n loading,\n tableContainerRef,\n totalRecords,\n onPreviousDayClick,\n onNextDayClick,\n onRefresh,\n onCalendarDateSelect,\n ...otherProps\n}: TimeTableHeaderProps) => {\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n\n const scrollToTop = () => {\n if (tableContainerRef.current) {\n tableContainerRef.current.scrollTop = 0;\n }\n };\n\n const handleRefresh = () => {\n if (!onRefresh) return;\n scrollToTop();\n onRefresh();\n };\n\n const handleRightArrowClick = (date: string) => {\n scrollToTop();\n onNextDayClick(date);\n };\n\n const handleLeftArrowClick = (date: string) => {\n scrollToTop();\n onPreviousDayClick(date);\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderRecordsSection = () => {\n if (totalRecords === undefined) return <></>;\n return (\n <NavigationHeaderSubtitleWrapper>\n <StyledResultText\n data-testid=\"timetable-records-results\"\n weight={\"semibold\"}\n >\n {totalRecords} results found\n </StyledResultText>\n {onRefresh && (\n <StyledRefreshButton\n data-testid=\"timetable-records-refresh-btn\"\n aria-label=\"Refresh timetable records\"\n styleType=\"light\"\n sizeType=\"small\"\n disabled={loading}\n onClick={handleRefresh}\n $loading={loading}\n >\n <RefreshIcon />\n </StyledRefreshButton>\n )}\n </NavigationHeaderSubtitleWrapper>\n );\n };\n\n return (\n <NavigationHeaderWrapper>\n <StyledDateNavigator\n selectedDate={selectedDate}\n loading={loading}\n {...otherProps}\n onRightArrowClick={handleRightArrowClick}\n onLeftArrowClick={handleLeftArrowClick}\n onCalendarDateSelect={onCalendarDateSelect}\n />\n {renderRecordsSection()}\n </NavigationHeaderWrapper>\n );\n};\n"],"names":["_a","selectedDate","loading","tableContainerRef","totalRecords","onPreviousDayClick","onNextDayClick","onRefresh","onCalendarDateSelect","otherProps","__rest","scrollToTop","current","scrollTop","handleRefresh","_jsxs","NavigationHeaderWrapper","children","_jsx","StyledDateNavigator","Object","assign","onRightArrowClick","date","onLeftArrowClick","undefined","NavigationHeaderSubtitleWrapper","StyledResultText","weight","StyledRefreshButton","styleType","sizeType","disabled","onClick","$loading","RefreshIcon"],"mappings":"wLAyBgCA,QAAAC,aAC5BA,EAAYC,QACZA,EAAOC,kBACPA,EAAiBC,aACjBA,EAAYC,mBACZA,EAAkBC,eAClBA,EAAcC,UACdA,EAASC,qBACTA,GAAoBR,EACjBS,EAAUC,EAAAA,OAAAV,EATe,wIAe5B,MAAMW,EAAc,KACZR,EAAkBS,UAClBT,EAAkBS,QAAQC,UAAY,EAC1C,EAGEC,EAAgB,KACbP,IACLI,IACAJ,IAAW,EA2Cf,OACIQ,OAACC,EAAAA,wBAAuB,CAAAC,SAAA,CACpBC,EAAAA,IAACC,sBAAmBC,OAAAC,OAAA,CAChBpB,aAAcA,EACdC,QAASA,GACLO,EAAU,CACda,kBA9CmBC,IAC3BZ,IACAL,EAAeiB,EAAK,EA6CZC,iBA1CkBD,IAC1BZ,IACAN,EAAmBkB,EAAK,EAyChBf,qBAAsBA,UAlCTiB,IAAjBrB,EAAmCc,EAAAA,mBAEnCH,EAAAA,KAACW,EAAAA,gCAA+B,CAAAT,SAAA,CAC5BF,EAAAA,KAACY,EAAAA,iBAAgB,CAAA,cACD,4BACZC,OAAQ,WAAUX,SAAA,CAEjBb,EAAY,oBAEhBG,GACGW,MAACW,EAAAA,oBAAmB,CAAA,cACJ,gCAA+B,aAChC,4BACXC,UAAU,QACVC,SAAS,QACTC,SAAU9B,EACV+B,QAASnB,EAAaoB,SACZhC,EAAOe,SAEjBC,EAAAA,IAACiB,EAAAA,uBAkBS"}
1
+ {"version":3,"file":"timetable-header.js","sources":["../../../../src/timetable/timetable-header/timetable-header.tsx"],"sourcesContent":["import { RefreshIcon } from \"@lifesg/react-icons\";\nimport { RefObject } from \"react\";\nimport {\n NavigationHeaderSubtitleWrapper,\n NavigationHeaderWrapper,\n StyledDateNavigator,\n StyledRefreshButton,\n StyledResultText,\n} from \"./timetable-header.style\";\n\ninterface TimeTableHeaderProps {\n selectedDate: string;\n loading: boolean;\n tableContainerRef: RefObject<HTMLDivElement>;\n minDate?: string | undefined;\n maxDate?: string | undefined;\n totalRecords?: number | undefined;\n showDateAsShortForm?: boolean | undefined;\n showCurrentDateAsToday?: boolean | undefined;\n onPreviousDayClick: (currentDate: string) => void | undefined;\n onNextDayClick: (currentDate: string) => void | undefined;\n onRefresh?: (() => void) | undefined;\n onCalendarDateSelect?: ((currentDate: string) => void) | undefined;\n}\n\nexport const TimeTableHeader = ({\n selectedDate,\n loading,\n tableContainerRef,\n totalRecords,\n onPreviousDayClick,\n onNextDayClick,\n onRefresh,\n onCalendarDateSelect,\n ...otherProps\n}: TimeTableHeaderProps) => {\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n\n const scrollToTop = () => {\n if (tableContainerRef.current) {\n tableContainerRef.current.scrollTop = 0;\n }\n };\n\n const handleRefresh = () => {\n if (!onRefresh) return;\n scrollToTop();\n onRefresh();\n };\n\n const handleRightArrowClick = (date: string) => {\n scrollToTop();\n onNextDayClick(date);\n };\n\n const handleLeftArrowClick = (date: string) => {\n scrollToTop();\n onPreviousDayClick(date);\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderRecordsSection = () => {\n if (totalRecords === undefined) return <></>;\n return (\n <NavigationHeaderSubtitleWrapper>\n <StyledResultText\n data-testid=\"timetable-records-results\"\n weight={\"semibold\"}\n >\n {totalRecords} result{totalRecords !== 1 ? \"s\" : \"\"} found\n </StyledResultText>\n {onRefresh && (\n <StyledRefreshButton\n data-testid=\"timetable-records-refresh-btn\"\n aria-label=\"Refresh timetable records\"\n styleType=\"light\"\n sizeType=\"small\"\n disabled={loading}\n onClick={handleRefresh}\n $loading={loading}\n >\n <RefreshIcon />\n </StyledRefreshButton>\n )}\n </NavigationHeaderSubtitleWrapper>\n );\n };\n\n return (\n <NavigationHeaderWrapper>\n <StyledDateNavigator\n selectedDate={selectedDate}\n loading={loading}\n {...otherProps}\n onRightArrowClick={handleRightArrowClick}\n onLeftArrowClick={handleLeftArrowClick}\n onCalendarDateSelect={onCalendarDateSelect}\n />\n {renderRecordsSection()}\n </NavigationHeaderWrapper>\n );\n};\n"],"names":["_a","selectedDate","loading","tableContainerRef","totalRecords","onPreviousDayClick","onNextDayClick","onRefresh","onCalendarDateSelect","otherProps","__rest","scrollToTop","current","scrollTop","handleRefresh","_jsxs","NavigationHeaderWrapper","children","_jsx","StyledDateNavigator","Object","assign","onRightArrowClick","date","onLeftArrowClick","undefined","NavigationHeaderSubtitleWrapper","StyledResultText","weight","StyledRefreshButton","styleType","sizeType","disabled","onClick","$loading","RefreshIcon"],"mappings":"wLAyBgCA,QAAAC,aAC5BA,EAAYC,QACZA,EAAOC,kBACPA,EAAiBC,aACjBA,EAAYC,mBACZA,EAAkBC,eAClBA,EAAcC,UACdA,EAASC,qBACTA,GAAoBR,EACjBS,EAAUC,EAAAA,OAAAV,EATe,wIAe5B,MAAMW,EAAc,KACZR,EAAkBS,UAClBT,EAAkBS,QAAQC,UAAY,EAC1C,EAGEC,EAAgB,KACbP,IACLI,IACAJ,IAAW,EA2Cf,OACIQ,OAACC,EAAAA,wBAAuB,CAAAC,SAAA,CACpBC,EAAAA,IAACC,sBAAmBC,OAAAC,OAAA,CAChBpB,aAAcA,EACdC,QAASA,GACLO,EAAU,CACda,kBA9CmBC,IAC3BZ,IACAL,EAAeiB,EAAK,EA6CZC,iBA1CkBD,IAC1BZ,IACAN,EAAmBkB,EAAK,EAyChBf,qBAAsBA,UAlCTiB,IAAjBrB,EAAmCc,EAAAA,mBAEnCH,EAAAA,KAACW,kCAA+B,CAAAT,SAAA,CAC5BF,OAACY,EAAAA,iBAAgB,CAAA,cACD,4BACZC,OAAQ,WAAUX,SAAA,CAEjBb,EAAY,UAA0B,IAAjBA,EAAqB,IAAM,GAAE,YAEtDG,GACGW,EAAAA,IAACW,EAAAA,oBAAmB,CAAA,cACJ,gCAA+B,aAChC,4BACXC,UAAU,QACVC,SAAS,QACTC,SAAU9B,EACV+B,QAASnB,EAAaoB,SACZhC,EAAOe,SAEjBC,EAAAA,IAACiB,EAAAA,YAAW,WAkBF"}
@@ -1,2 +1,2 @@
1
- import{__rest as e}from"../_virtual/_tslib.js";import{jsxs as t,jsx as i,Fragment as r}from"react/jsx-runtime";import{ArrowUpIcon as n,ArrowDownIcon as l}from"@lifesg/react-icons";import{useRef as o,useState as d,useCallback as c,useEffect as a}from"react";import{useInView as s}from"../external/react-intersection-observer/index.js";import{useResizeDetector as u}from"../external/react-resize-detector/build/index.esm.js";import"../animations/loading-spinner/loading-spinner.js";import"../animations/loading-dots/loading-dots.js";import{LoadingDotsSpinner as h}from"../animations/loading-dots-spinner/loading-dots-spinner.js";import"styled-components";import{Checkbox as p}from"../checkbox/checkbox.js";import{ErrorDisplay as m}from"../error-display/error-display.js";import"../error-display/helper.js";import{VisuallyHidden as g,concatIds as b}from"../shared/accessibility/index.js";import{Typography as f}from"../typography/typography.js";import"../util/calendar-helper.js";import"../util/date-helper.js";import"../util/date-input-helper.js";import{useId as y}from"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import{useEventListener as w}from"../util/use-event-listener.js";import{TableWrapper as $,TableContainer as v,Table as C,TableBody as S,HeaderRow as k,EmptyViewCell as j,BodyRow as H,LoaderWrapper as x,ActionBarWrapper as B,ActionBar as R,TextButton as A,HeaderCell as I,CheckBoxWrapper as N,HeaderCellWrapper as V,ErrorDisplayTitle as K,BodyCell as M,BodyCellContent as L}from"./data-table.styles.js";const Y=Y=>{var{id:z,headers:D,rows:E,className:W,sortIndicators:_,alternatingRows:q,loadState:F="success",enableMultiSelect:O,selectedIds:P,disabledIds:T,enableActionBar:G,enableSelectAll:J,enableStickyHeader:Q,emptyView:U,actionBarContent:X,renderCustomEmptyView:Z,onHeaderClick:ee,onSelect:te,onSelectAll:ie,onClearSelectionClick:re}=Y,ne=e(Y,["id","headers","rows","className","sortIndicators","alternatingRows","loadState","enableMultiSelect","selectedIds","disabledIds","enableActionBar","enableSelectAll","enableStickyHeader","emptyView","actionBarContent","renderCustomEmptyView","onHeaderClick","onSelect","onSelectAll","onClearSelectionClick"]);const le=o(null),oe=o(null),de=o(null),ce=o(null),ae=o(null),se=y(),ue=D.filter((e=>"string"!=typeof e&&!!e.keyColumn)),[he,pe]=d(!1),[me,ge]=d(!1),[be,fe]=d(!1),[ye,we]=d(!1),[$e,ve]=d(!1),{ref:Ce,inView:Se}=s(),ke=c((()=>{if(!ae.current||!ce.current)return;const e=ae.current.scrollHeight>ae.current.clientHeight;pe(e),e?ce.current.style.transform="translateY(0)":Ye()}),[]);a((()=>{ke()}),[]),u({onResize:ke});w("scroll",(()=>{requestAnimationFrame((()=>{he?Le():Ye()})),ae.current&&fe(ae.current.getBoundingClientRect().bottom<=window.innerHeight)}),"window"),a((()=>{ze()}),[E]);const je=()=>(null==P?void 0:P.length)===(null==E?void 0:E.length),He=e=>!!(null==P?void 0:P.includes(e)),xe=e=>!!q&&e%2==1,Be=e=>!!(null==T?void 0:T.includes(e)),Re=e=>{if(ne["data-testid"])return`${ne["data-testid"]}-${e}`},Ae=()=>D.length+(O?1:0),Ie=e=>null==_?void 0:_[e],Ne=e=>{const t=Ie(e);if(t)return"asc"===t?"ascending":"descending"},Ve=e=>` by ${"asc"===Ie(e)?"descending":"ascending"} order`,Ke=(e,t)=>`${se}-row-${e}-${t}-key-column`,Me=e=>{const t=ue.map((t=>Ke(e,t.fieldKey)));return b(...t)},Le=()=>{if(!ae.current)return;const e=ae.current.getBoundingClientRect();we(e.bottom>window.innerHeight+30&&e.top<window.innerHeight-200)},Ye=()=>{if(!(le.current&&oe.current&&ae.current&&ce.current&&de.current))return;const e=oe.current.getBoundingClientRect();if(e.top>window.innerHeight){const t=e.bottom-window.innerHeight,i=le.current.getBoundingClientRect().height-de.current.clientHeight-32,r=Math.min(t,i);ce.current.style.transform=`translateY(-${r}px)`}else ce.current.style.transform="translateY(0)"},ze=()=>{le.current&&ae.current&&ve(le.current.clientHeight+(G?56:0)<ae.current.clientHeight)},De=e=>{const{fieldKey:r,label:n,clickable:l=!1,style:o}="string"==typeof e?{fieldKey:e,label:e,style:void 0}:e,d=!!Ie(r),c=(e=>`${se}-header-${e}`)(r);return t(I,{"data-testid":Re(`header-${r}`),$clickable:l,scope:"col","aria-sort":Ne(r),style:o,$isCheckbox:!1,onClick:()=>(e=>{null==ee||ee(e)})(r),children:[t(V,{id:c,children:["string"==typeof n?i(f.BodyBL,{weight:"bold",children:n}):n,Ee(r)]}),(l||d)&&i(g,{children:t("button",{onClick:e=>((e,t)=>{e.stopPropagation(),null==ee||ee(t)})(e,r),children:[d&&"Sort ",i("span",{"aria-labelledby":c}),d&&Ve(r)]})})]},r)},Ee=e=>{const t=null==_?void 0:_[e];return t?"asc"===t?i(n,{"aria-hidden":!0,"data-testid":Re(`header-${e}-arrowup`)}):i(l,{"aria-hidden":!0,"data-testid":Re(`header-${e}-arrowdown`)}):i(r,{})},We=()=>i(I,{"data-testid":Re("header-selection"),$clickable:!1,$isCheckbox:!0,scope:"col",children:t(N,{children:[i(g,{children:"Row selection"}),J&&i(p,{checked:je(),indeterminate:!!P&&0!==P.length&&!je(),"aria-label":"Select all rows",onClick:()=>{ie&&ie(je())}})]})}),_e=(e,t)=>{const r="string"!=typeof e?e.style:void 0,n="string"==typeof e?e:e.fieldKey,l=t.id.toString(),o=t[n],d=`${l}-${n}`;return i(M,{"data-testid":Re(`row-${d}`),id:Ke(l,n),style:r,$isCheckbox:!1,children:"string"==typeof o||"number"==typeof o?i(L,{children:o}):"function"==typeof o?o(t,{isSelected:He(l)}):o},d)},qe=e=>{const t=e.id.toString();return i(M,{"data-testid":Re(`row-${t}-selection`),$isCheckbox:!0,children:i(N,{children:i(p,{checked:He(t),"aria-labelledby":Me(t),onClick:()=>{te&&te(t,!He(t))},disabled:Be(t),focusableWhenDisabled:Be(t)})})})},Fe=()=>i(m,Object.assign({type:"no-item-found"},U,{title:(null==U?void 0:U.title)?"string"==typeof U.title?i(K,{weight:"bold",children:U.title}):U.title:i(K,{weight:"bold",children:"No <items> found"}),description:(null==U?void 0:U.description)?U.description:"No matching rows"}));return t($,{id:z||"table-wrapper","data-testid":ne["data-testid"]||"table",className:W,ref:ae,onScroll:()=>{he&&ae.current&&ge(ae.current.scrollTop+ae.current.clientHeight>=ae.current.scrollHeight)},tabIndex:0,children:[i(v,{children:t(C,{$end:be,$scrollable:he,ref:le,$stickyHeader:Q,children:[i("thead",{ref:de,children:t(k,{children:[O&&We(),D.map(De)]})}),i(S,{$showLastRowBottomBorder:$e,children:"success"===F?!E||E.length<1?i("tr",{children:i(j,{colSpan:Ae(),children:Z?Z():Fe()})}):i(r,{children:null==E?void 0:E.map(((e,i)=>t(H,{"data-testid":Re(`row-${e.id.toString()}`),$alternating:xe(i),$isSelectable:O,$isSelected:He(e.id.toString()),children:[O&&qe(e),D.map((t=>_e(t,e)))]},e.id.toString())))}):i("tr",{children:i("td",{colSpan:Ae(),children:i(x,{role:"status","aria-live":"polite","aria-label":"Loading table",children:"loading"===F&&i(h,{})})})})})]})}),G&&P&&P.length>0&&(()=>{var e,r,n,l;const o=null!==(e=null==P?void 0:P.length)&&void 0!==e?e:0;return i(B,{ref:ce,$fixed:ye,$left:null===(n=null===(r=null==le?void 0:le.current)||void 0===r?void 0:r.getBoundingClientRect())||void 0===n?void 0:n.left,$width:null===(l=null==le?void 0:le.current)||void 0===l?void 0:l.clientWidth,children:t(R,{$float:(he?!me:!Se)||ye,$scrollable:he,children:[i(f.BodyMD,{weight:"semibold",children:`${o} item${o>1?"s":""} selected`}),i(A,{type:"button","aria-label":`Clear selection of ${o} item${1===o?"":"s"}`,onClick:re,children:"Clear selection"}),X]})})})(),i("div",{ref:e=>{oe.current=e,Ce(e)}})]})};export{Y as DataTable};
1
+ import{__rest as e}from"../_virtual/_tslib.js";import{jsxs as t,jsx as i,Fragment as r}from"react/jsx-runtime";import{ArrowUpIcon as n,ArrowDownIcon as l}from"@lifesg/react-icons";import{useRef as o,useState as d,useCallback as a,useEffect as c}from"react";import{useInView as s}from"../external/react-intersection-observer/index.js";import{useResizeDetector as u}from"../external/react-resize-detector/build/index.esm.js";import"../animations/loading-spinner/loading-spinner.js";import"../animations/loading-dots/loading-dots.js";import{LoadingDotsSpinner as h}from"../animations/loading-dots-spinner/loading-dots-spinner.js";import"styled-components";import{Checkbox as p}from"../checkbox/checkbox.js";import{ErrorDisplay as m}from"../error-display/error-display.js";import"../error-display/helper.js";import{VisuallyHidden as g,concatIds as b}from"../shared/accessibility/index.js";import{Typography as f}from"../typography/typography.js";import"../util/calendar-helper.js";import"../util/date-helper.js";import"../util/date-input-helper.js";import{useId as y}from"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import{useEventListener as $}from"../util/use-event-listener.js";import{TableWrapper as w,TableContainer as v,Table as C,TableBody as S,HeaderRow as k,BodyRow as j,EmptyViewCell as H,LoaderWrapper as x,ActionBarWrapper as B,ActionBar as R,TextButton as A,HeaderCell as I,CheckBoxWrapper as N,HeaderCellWrapper as V,ErrorDisplayTitle as K,BodyCell as M,BodyCellContent as L}from"./data-table.styles.js";const Y=Y=>{var{id:z,headers:D,rows:E,className:W,sortIndicators:_,alternatingRows:q,loadState:F="success",enableMultiSelect:O,selectedIds:P,disabledIds:T,enableActionBar:G,enableSelectAll:J,enableStickyHeader:Q,emptyView:U,actionBarContent:X,renderCustomEmptyView:Z,onHeaderClick:ee,onSelect:te,onSelectAll:ie,onClearSelectionClick:re}=Y,ne=e(Y,["id","headers","rows","className","sortIndicators","alternatingRows","loadState","enableMultiSelect","selectedIds","disabledIds","enableActionBar","enableSelectAll","enableStickyHeader","emptyView","actionBarContent","renderCustomEmptyView","onHeaderClick","onSelect","onSelectAll","onClearSelectionClick"]);const le=o(null),oe=o(null),de=o(null),ae=o(null),ce=o(null),se=y(),ue=D.filter((e=>"string"!=typeof e&&!!e.keyColumn)),[he,pe]=d(!1),[me,ge]=d(!1),[be,fe]=d(!1),[ye,$e]=d(!1),[we,ve]=d(!1),{ref:Ce,inView:Se}=s(),ke=a((()=>{if(!ce.current||!ae.current)return;const e=ce.current.scrollHeight>ce.current.clientHeight;pe(e),e?ae.current.style.transform="translateY(0)":Ye()}),[]);c((()=>{ke()}),[]),u({onResize:ke});$("scroll",(()=>{requestAnimationFrame((()=>{he?Le():Ye()})),ce.current&&fe(ce.current.getBoundingClientRect().bottom<=window.innerHeight)}),"window"),c((()=>{ze()}),[E]);const je=()=>!!(E&&E.length&&P)&&P.length===E.length,He=e=>!!(null==P?void 0:P.includes(e)),xe=e=>!!q&&e%2==1,Be=e=>!!(null==T?void 0:T.includes(e)),Re=e=>{if(ne["data-testid"])return`${ne["data-testid"]}-${e}`},Ae=()=>D.length+(O?1:0),Ie=e=>null==_?void 0:_[e],Ne=e=>{const t=Ie(e);if(t)return"asc"===t?"ascending":"descending"},Ve=e=>` by ${"asc"===Ie(e)?"descending":"ascending"} order`,Ke=(e,t)=>`${se}-row-${e}-${t}-key-column`,Me=e=>{const t=ue.map((t=>Ke(e,t.fieldKey)));return b(...t)},Le=()=>{if(!ce.current)return;const e=ce.current.getBoundingClientRect();$e(e.bottom>window.innerHeight+30&&e.top<window.innerHeight-200)},Ye=()=>{if(!(le.current&&oe.current&&ce.current&&ae.current&&de.current))return;const e=oe.current.getBoundingClientRect();if(e.top>window.innerHeight){const t=e.bottom-window.innerHeight,i=le.current.getBoundingClientRect().height-de.current.clientHeight-32,r=Math.min(t,i);ae.current.style.transform=`translateY(-${r}px)`}else ae.current.style.transform="translateY(0)"},ze=()=>{le.current&&ce.current&&ve(le.current.clientHeight+(G?56:0)<ce.current.clientHeight)},De=e=>{const{fieldKey:r,label:n,clickable:l=!1,style:o}="string"==typeof e?{fieldKey:e,label:e,style:void 0}:e,d=!!Ie(r),a=(e=>`${se}-header-${e}`)(r);return t(I,{"data-testid":Re(`header-${r}`),$clickable:l,scope:"col","aria-sort":Ne(r),style:o,$isCheckbox:!1,onClick:()=>(e=>{null==ee||ee(e)})(r),children:[t(V,{id:a,children:["string"==typeof n?i(f.BodyBL,{weight:"bold",children:n}):n,Ee(r)]}),(l||d)&&i(g,{children:t("button",{onClick:e=>((e,t)=>{e.stopPropagation(),null==ee||ee(t)})(e,r),children:[d&&"Sort ",i("span",{"aria-labelledby":a}),d&&Ve(r)]})})]},r)},Ee=e=>{const t=null==_?void 0:_[e];return t?"asc"===t?i(n,{"aria-hidden":!0,"data-testid":Re(`header-${e}-arrowup`)}):i(l,{"aria-hidden":!0,"data-testid":Re(`header-${e}-arrowdown`)}):i(r,{})},We=()=>i(I,{"data-testid":Re("header-selection"),$clickable:!1,$isCheckbox:!0,scope:"col",children:t(N,{children:[i(g,{children:"Row selection"}),J&&i(p,{checked:je(),indeterminate:!!P&&0!==P.length&&!je(),disabled:!E||!E.length||!P,"aria-label":"Select all rows",onClick:()=>{ie&&ie(je())}})]})}),_e=(e,t)=>{const r="string"!=typeof e?e.style:void 0,n="string"==typeof e?e:e.fieldKey,l=t.id.toString(),o=t[n],d=`${l}-${n}`;return i(M,{"data-testid":Re(`row-${d}`),id:Ke(l,n),style:r,$isCheckbox:!1,children:"string"==typeof o||"number"==typeof o?i(L,{children:o}):"function"==typeof o?o(t,{isSelected:He(l)}):o},d)},qe=e=>{const t=e.id.toString();return i(M,{"data-testid":Re(`row-${t}-selection`),$isCheckbox:!0,children:i(N,{children:i(p,{checked:He(t),"aria-labelledby":Me(t),onClick:()=>{te&&te(t,!He(t))},disabled:Be(t),focusableWhenDisabled:Be(t)})})})},Fe=()=>i(m,Object.assign({type:"no-item-found"},U,{title:(null==U?void 0:U.title)?"string"==typeof U.title?i(K,{weight:"bold",children:U.title}):U.title:i(K,{weight:"bold",children:"No <items> found"}),description:(null==U?void 0:U.description)?U.description:"No matching rows"}));return t(w,{id:z||"table-wrapper","data-testid":ne["data-testid"]||"table",className:W,ref:ce,onScroll:()=>{he&&ce.current&&ge(ce.current.scrollTop+ce.current.clientHeight>=ce.current.scrollHeight)},tabIndex:0,children:[i(v,{children:t(C,{$end:be,$scrollable:he,ref:le,$stickyHeader:Q,children:[i("thead",{ref:de,children:t(k,{children:[O&&We(),D.map(De)]})}),i(S,{$showLastRowBottomBorder:we,children:"success"===F?!E||E.length<1?i(j,{$alternating:!1,children:i(H,{colSpan:Ae(),children:Z?Z():Fe()})}):i(r,{children:null==E?void 0:E.map(((e,i)=>t(j,{"data-testid":Re(`row-${e.id.toString()}`),$alternating:xe(i),$isSelectable:O,$isSelected:He(e.id.toString()),children:[O&&qe(e),D.map((t=>_e(t,e)))]},e.id.toString())))}):i(j,{$alternating:!1,children:i("td",{colSpan:Ae(),children:i(x,{role:"status","aria-live":"polite","aria-label":"Loading table",children:"loading"===F&&i(h,{})})})})})]})}),G&&P&&P.length>0&&(()=>{var e,r,n,l;const o=null!==(e=null==P?void 0:P.length)&&void 0!==e?e:0;return i(B,{ref:ae,$fixed:ye,$left:null===(n=null===(r=null==le?void 0:le.current)||void 0===r?void 0:r.getBoundingClientRect())||void 0===n?void 0:n.left,$width:null===(l=null==le?void 0:le.current)||void 0===l?void 0:l.clientWidth,children:t(R,{$float:(he?!me:!Se)||ye,$scrollable:he,children:[i(f.BodyMD,{weight:"semibold",children:`${o} item${o>1?"s":""} selected`}),i(A,{type:"button","aria-label":`Clear selection of ${o} item${1===o?"":"s"}`,onClick:re,children:"Clear selection"}),X]})})})(),i("div",{ref:e=>{oe.current=e,Ce(e)}})]})};export{Y as DataTable};
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 { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useInView } from \"react-intersection-observer\";\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 { useId } from \"../util\";\nimport { useEventListener } from \"../util/use-event-listener\";\nimport {\n ActionBar,\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 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 tableEndRef = useRef<HTMLDivElement | null>(null);\n const headerRef = useRef<HTMLTableSectionElement>(null);\n const actionBarRef = 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 [scrollable, setScrollable] = useState(false);\n const [scrollEnd, setScrollEnd] = useState(false);\n const [tableEnd, setTableEnd] = useState(false);\n const [isFloatingActionBar, setIsFloatingActionBar] = useState(false);\n const [showLastBorder, setShowLastBorder] = useState(false);\n\n const { ref: endRef, inView: end } = useInView();\n\n // =============================================================================\n // EFFECTS, EVENT LISTENERS\n // ============================================================================\n const onResize = useCallback(() => {\n if (!wrapperRef.current || !actionBarRef.current) {\n return;\n }\n const scrollable =\n wrapperRef.current.scrollHeight > wrapperRef.current.clientHeight;\n setScrollable(scrollable);\n\n if (scrollable) {\n actionBarRef.current.style.transform = `translateY(0)`;\n } else {\n calculateStickyInViewport();\n }\n }, []);\n\n useEffect(() => {\n onResize();\n }, []);\n\n useResizeDetector({ onResize });\n\n const scrollHandler = () => {\n requestAnimationFrame(() => {\n if (scrollable) {\n calculateFixedInViewport();\n } else {\n calculateStickyInViewport();\n }\n });\n\n if (wrapperRef.current) {\n setTableEnd(\n wrapperRef.current.getBoundingClientRect().bottom <=\n window.innerHeight\n );\n }\n };\n\n useEventListener(\"scroll\", scrollHandler, \"window\");\n\n useEffect(() => {\n checkLastBorder();\n }, [rows]);\n\n // ===========================================================================\n // HELPER FUNCTIONS\n // ===========================================================================\n const isAllCheckboxSelected = (): boolean => {\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 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 calculateFixedInViewport = () => {\n if (!wrapperRef.current) {\n return;\n }\n const wrapperBounds = wrapperRef.current.getBoundingClientRect();\n setIsFloatingActionBar(\n wrapperBounds.bottom > window.innerHeight + 30 &&\n wrapperBounds.top < window.innerHeight - 200\n );\n };\n\n const calculateStickyInViewport = () => {\n if (\n !tableRef.current ||\n !tableEndRef.current ||\n !wrapperRef.current ||\n !actionBarRef.current ||\n !headerRef.current\n ) {\n return;\n }\n\n const endBounds = tableEndRef.current.getBoundingClientRect();\n\n if (endBounds.top > window.innerHeight) {\n const bottomOffset = endBounds.bottom - window.innerHeight;\n const bottomToHeaderOffset =\n tableRef.current.getBoundingClientRect().height -\n headerRef.current.clientHeight -\n 32;\n const maxBottomOffset = Math.min(\n bottomOffset,\n bottomToHeaderOffset\n );\n\n actionBarRef.current.style.transform = `translateY(-${maxBottomOffset}px)`;\n } else {\n actionBarRef.current.style.transform = `translateY(0)`;\n }\n };\n\n const checkLastBorder = () => {\n if (!tableRef.current || !wrapperRef.current) {\n return;\n }\n // 56 pixels added due to the behavior of action bar\n setShowLastBorder(\n tableRef.current.clientHeight + (enableActionBar ? 56 : 0) <\n wrapperRef.current.clientHeight\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 <thead ref={headerRef}>\n <HeaderRow>\n {enableMultiSelect && renderHeaderCheckBox()}\n {headers.map(renderHeaderCell)}\n </HeaderRow>\n </thead>\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 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 <tr>\n <EmptyViewCell colSpan={getTotalColumns()}>\n {renderCustomEmptyView\n ? renderCustomEmptyView()\n : renderBasicEmptyView()}\n </EmptyViewCell>\n </tr>\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 $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 <tr>\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 </tr>\n );\n };\n\n const renderSelectionBar = () => {\n const count = selectedIds?.length ?? 0;\n\n return (\n <ActionBarWrapper\n ref={actionBarRef}\n $fixed={isFloatingActionBar}\n $left={tableRef?.current?.getBoundingClientRect()?.left}\n $width={tableRef?.current?.clientWidth}\n >\n <ActionBar\n $float={\n (scrollable ? !scrollEnd : !end) || isFloatingActionBar\n }\n $scrollable={scrollable}\n >\n <Typography.BodyMD weight=\"semibold\">{`${count} item${\n count > 1 ? \"s\" : \"\"\n } selected`}</Typography.BodyMD>\n <TextButton\n type=\"button\"\n aria-label={`Clear selection of ${count} item${\n count === 1 ? \"\" : \"s\"\n }`}\n onClick={onClearSelectionClick}\n >\n Clear selection\n </TextButton>\n {actionBarContent}\n </ActionBar>\n </ActionBarWrapper>\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 onScroll={() => {\n if (scrollable && wrapperRef.current) {\n setScrollEnd(\n wrapperRef.current.scrollTop +\n wrapperRef.current.clientHeight >=\n wrapperRef.current.scrollHeight\n );\n }\n }}\n tabIndex={0} // scrollable container must be focusable to support keyboard users\n >\n <TableContainer>\n <Table\n $end={tableEnd}\n $scrollable={scrollable}\n ref={tableRef}\n $stickyHeader={enableStickyHeader}\n >\n {renderHeaders()}\n <TableBody $showLastRowBottomBorder={showLastBorder}>\n {loadState === \"success\"\n ? renderRows()\n : renderLoader()}\n </TableBody>\n </Table>\n </TableContainer>\n {enableActionBar &&\n selectedIds &&\n selectedIds.length > 0 &&\n renderSelectionBar()}\n <div\n ref={(r) => {\n tableEndRef.current = r;\n endRef(r);\n }}\n />\n </TableWrapper>\n );\n};\n"],"names":["DataTable","_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","tableEndRef","headerRef","actionBarRef","wrapperRef","internalId","useId","keyColumns","filter","header","keyColumn","scrollable","setScrollable","useState","scrollEnd","setScrollEnd","tableEnd","setTableEnd","isFloatingActionBar","setIsFloatingActionBar","showLastBorder","setShowLastBorder","ref","endRef","inView","end","useInView","onResize","useCallback","current","scrollHeight","clientHeight","style","transform","calculateStickyInViewport","useEffect","useResizeDetector","useEventListener","requestAnimationFrame","calculateFixedInViewport","getBoundingClientRect","bottom","window","innerHeight","checkLastBorder","isAllCheckboxSelected","length","isRowSelected","rowId","includes","isAlternatingRow","index","isDisabledRow","getDataTestId","subStr","getTotalColumns","getSortDirection","fieldKey","getHeaderAriaSort","sortDirection","getSortButtonAriaLabel","getCellId","getRowCheckboxAriaLabelledBy","keyColumnIds","map","concatIds","wrapperBounds","top","endBounds","bottomOffset","bottomToHeaderOffset","height","maxBottomOffset","Math","min","renderHeaderCell","label","clickable","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","renderRowCell","row","toString","cellData","cellId","BodyCell","BodyCellContent","isSelected","renderRowCheckBox","disabled","focusableWhenDisabled","renderBasicEmptyView","ErrorDisplay","Object","assign","type","title","ErrorDisplayTitle","description","TableWrapper","onScroll","scrollTop","tabIndex","TableContainer","Table","$end","$stickyHeader","HeaderRow","TableBody","$showLastRowBottomBorder","EmptyViewCell","colSpan","BodyRow","$alternating","$isSelectable","$isSelected","LoaderWrapper","role","LoadingDotsSpinner","count","ActionBarWrapper","$fixed","$left","_c","_b","left","$width","_d","clientWidth","ActionBar","$float","$scrollable","BodyMD","TextButton","renderSelectionBar","r"],"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 { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useInView } from \"react-intersection-observer\";\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 { useId } from \"../util\";\nimport { useEventListener } from \"../util/use-event-listener\";\nimport {\n ActionBar,\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 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 tableEndRef = useRef<HTMLDivElement | null>(null);\n const headerRef = useRef<HTMLTableSectionElement>(null);\n const actionBarRef = 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 [scrollable, setScrollable] = useState(false);\n const [scrollEnd, setScrollEnd] = useState(false);\n const [tableEnd, setTableEnd] = useState(false);\n const [isFloatingActionBar, setIsFloatingActionBar] = useState(false);\n const [showLastBorder, setShowLastBorder] = useState(false);\n\n const { ref: endRef, inView: end } = useInView();\n\n // =============================================================================\n // EFFECTS, EVENT LISTENERS\n // ============================================================================\n const onResize = useCallback(() => {\n if (!wrapperRef.current || !actionBarRef.current) {\n return;\n }\n const scrollable =\n wrapperRef.current.scrollHeight > wrapperRef.current.clientHeight;\n setScrollable(scrollable);\n\n if (scrollable) {\n actionBarRef.current.style.transform = `translateY(0)`;\n } else {\n calculateStickyInViewport();\n }\n }, []);\n\n useEffect(() => {\n onResize();\n }, []);\n\n useResizeDetector({ onResize });\n\n const scrollHandler = () => {\n requestAnimationFrame(() => {\n if (scrollable) {\n calculateFixedInViewport();\n } else {\n calculateStickyInViewport();\n }\n });\n\n if (wrapperRef.current) {\n setTableEnd(\n wrapperRef.current.getBoundingClientRect().bottom <=\n window.innerHeight\n );\n }\n };\n\n useEventListener(\"scroll\", scrollHandler, \"window\");\n\n useEffect(() => {\n checkLastBorder();\n }, [rows]);\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 calculateFixedInViewport = () => {\n if (!wrapperRef.current) {\n return;\n }\n const wrapperBounds = wrapperRef.current.getBoundingClientRect();\n setIsFloatingActionBar(\n wrapperBounds.bottom > window.innerHeight + 30 &&\n wrapperBounds.top < window.innerHeight - 200\n );\n };\n\n const calculateStickyInViewport = () => {\n if (\n !tableRef.current ||\n !tableEndRef.current ||\n !wrapperRef.current ||\n !actionBarRef.current ||\n !headerRef.current\n ) {\n return;\n }\n\n const endBounds = tableEndRef.current.getBoundingClientRect();\n\n if (endBounds.top > window.innerHeight) {\n const bottomOffset = endBounds.bottom - window.innerHeight;\n const bottomToHeaderOffset =\n tableRef.current.getBoundingClientRect().height -\n headerRef.current.clientHeight -\n 32;\n const maxBottomOffset = Math.min(\n bottomOffset,\n bottomToHeaderOffset\n );\n\n actionBarRef.current.style.transform = `translateY(-${maxBottomOffset}px)`;\n } else {\n actionBarRef.current.style.transform = `translateY(0)`;\n }\n };\n\n const checkLastBorder = () => {\n if (!tableRef.current || !wrapperRef.current) {\n return;\n }\n // 56 pixels added due to the behavior of action bar\n setShowLastBorder(\n tableRef.current.clientHeight + (enableActionBar ? 56 : 0) <\n wrapperRef.current.clientHeight\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 <thead ref={headerRef}>\n <HeaderRow>\n {enableMultiSelect && renderHeaderCheckBox()}\n {headers.map(renderHeaderCell)}\n </HeaderRow>\n </thead>\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 $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\n return (\n <ActionBarWrapper\n ref={actionBarRef}\n $fixed={isFloatingActionBar}\n $left={tableRef?.current?.getBoundingClientRect()?.left}\n $width={tableRef?.current?.clientWidth}\n >\n <ActionBar\n $float={\n (scrollable ? !scrollEnd : !end) || isFloatingActionBar\n }\n $scrollable={scrollable}\n >\n <Typography.BodyMD weight=\"semibold\">{`${count} item${\n count > 1 ? \"s\" : \"\"\n } selected`}</Typography.BodyMD>\n <TextButton\n type=\"button\"\n aria-label={`Clear selection of ${count} item${\n count === 1 ? \"\" : \"s\"\n }`}\n onClick={onClearSelectionClick}\n >\n Clear selection\n </TextButton>\n {actionBarContent}\n </ActionBar>\n </ActionBarWrapper>\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 onScroll={() => {\n if (scrollable && wrapperRef.current) {\n setScrollEnd(\n wrapperRef.current.scrollTop +\n wrapperRef.current.clientHeight >=\n wrapperRef.current.scrollHeight\n );\n }\n }}\n tabIndex={0} // scrollable container must be focusable to support keyboard users\n >\n <TableContainer>\n <Table\n $end={tableEnd}\n $scrollable={scrollable}\n ref={tableRef}\n $stickyHeader={enableStickyHeader}\n >\n {renderHeaders()}\n <TableBody $showLastRowBottomBorder={showLastBorder}>\n {loadState === \"success\"\n ? renderRows()\n : renderLoader()}\n </TableBody>\n </Table>\n </TableContainer>\n {enableActionBar &&\n selectedIds &&\n selectedIds.length > 0 &&\n renderSelectionBar()}\n <div\n ref={(r) => {\n tableEndRef.current = r;\n endRef(r);\n }}\n />\n </TableWrapper>\n );\n};\n"],"names":["DataTable","_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","tableEndRef","headerRef","actionBarRef","wrapperRef","internalId","useId","keyColumns","filter","header","keyColumn","scrollable","setScrollable","useState","scrollEnd","setScrollEnd","tableEnd","setTableEnd","isFloatingActionBar","setIsFloatingActionBar","showLastBorder","setShowLastBorder","ref","endRef","inView","end","useInView","onResize","useCallback","current","scrollHeight","clientHeight","style","transform","calculateStickyInViewport","useEffect","useResizeDetector","useEventListener","requestAnimationFrame","calculateFixedInViewport","getBoundingClientRect","bottom","window","innerHeight","checkLastBorder","isAllCheckboxSelected","length","isRowSelected","rowId","includes","isAlternatingRow","index","isDisabledRow","getDataTestId","subStr","getTotalColumns","getSortDirection","fieldKey","getHeaderAriaSort","sortDirection","getSortButtonAriaLabel","getCellId","getRowCheckboxAriaLabelledBy","keyColumnIds","map","concatIds","wrapperBounds","top","endBounds","bottomOffset","bottomToHeaderOffset","height","maxBottomOffset","Math","min","renderHeaderCell","label","clickable","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","onScroll","scrollTop","tabIndex","TableContainer","Table","$end","$stickyHeader","HeaderRow","TableBody","$showLastRowBottomBorder","BodyRow","$alternating","EmptyViewCell","colSpan","$isSelectable","$isSelected","LoaderWrapper","role","LoadingDotsSpinner","count","ActionBarWrapper","$fixed","$left","_c","_b","left","$width","_d","clientWidth","ActionBar","$float","$scrollable","BodyMD","TextButton","renderSelectionBar","r"],"mappings":"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"}