@hashicorp/design-system-components 5.2.0-rc-20260107211222 → 5.2.0-rc-20260108162959

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 (96) hide show
  1. package/declarations/components/hds/theme-context/index.d.ts +24 -0
  2. package/declarations/components/hds/theme-context/types.d.ts +19 -0
  3. package/declarations/components/hds/theme-switcher/index.d.ts +43 -0
  4. package/declarations/components.d.ts +2 -0
  5. package/declarations/services/hds-intl.d.ts +4 -3
  6. package/declarations/services/hds-theming.d.ts +57 -0
  7. package/declarations/services.d.ts +1 -0
  8. package/declarations/template-registry.d.ts +6 -0
  9. package/dist/_app_/components/hds/theme-context.js +1 -0
  10. package/dist/_app_/components/hds/theme-switcher.js +1 -0
  11. package/dist/_app_/services/hds-theming.js +1 -0
  12. package/dist/components/hds/advanced-table/index.js.map +1 -1
  13. package/dist/components/hds/advanced-table/models/column.js.map +1 -1
  14. package/dist/components/hds/advanced-table/models/row.js.map +1 -1
  15. package/dist/components/hds/advanced-table/models/table.js.map +1 -1
  16. package/dist/components/hds/advanced-table/td.js.map +1 -1
  17. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
  18. package/dist/components/hds/advanced-table/th-reorder-drop-target.js.map +1 -1
  19. package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -1
  20. package/dist/components/hds/advanced-table/th-selectable.js.map +1 -1
  21. package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
  22. package/dist/components/hds/advanced-table/th.js.map +1 -1
  23. package/dist/components/hds/alert/index.js.map +1 -1
  24. package/dist/components/hds/app-header/index.js.map +1 -1
  25. package/dist/components/hds/app-side-nav/index.js.map +1 -1
  26. package/dist/components/hds/app-side-nav/list/index.js.map +1 -1
  27. package/dist/components/hds/app-side-nav/portal/target.js.map +1 -1
  28. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  29. package/dist/components/hds/code-block/index.js.map +1 -1
  30. package/dist/components/hds/code-editor/index.js.map +1 -1
  31. package/dist/components/hds/copy/button/index.js.map +1 -1
  32. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  33. package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
  34. package/dist/components/hds/dismiss-button/index.js.map +1 -1
  35. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  36. package/dist/components/hds/flyout/index.js.map +1 -1
  37. package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
  38. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  39. package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
  40. package/dist/components/hds/form/super-select/single/base.js.map +1 -1
  41. package/dist/components/hds/form/text-input/field.js.map +1 -1
  42. package/dist/components/hds/interactive/index.js.map +1 -1
  43. package/dist/components/hds/modal/index.js.map +1 -1
  44. package/dist/components/hds/pagination/compact/index.js.map +1 -1
  45. package/dist/components/hds/pagination/info/index.js.map +1 -1
  46. package/dist/components/hds/pagination/numbered/index.js.map +1 -1
  47. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  48. package/dist/components/hds/side-nav/index.js.map +1 -1
  49. package/dist/components/hds/side-nav/list/index.js.map +1 -1
  50. package/dist/components/hds/side-nav/portal/target.js.map +1 -1
  51. package/dist/components/hds/stepper/list/index.js.map +1 -1
  52. package/dist/components/hds/stepper/nav/index.js.map +1 -1
  53. package/dist/components/hds/table/index.js.map +1 -1
  54. package/dist/components/hds/table/th-button-sort.js.map +1 -1
  55. package/dist/components/hds/table/th-selectable.js.map +1 -1
  56. package/dist/components/hds/tabs/index.js.map +1 -1
  57. package/dist/components/hds/tag/index.js.map +1 -1
  58. package/dist/components/hds/theme-context/index.js +45 -0
  59. package/dist/components/hds/theme-context/index.js.map +1 -0
  60. package/dist/components/hds/theme-context/types.js +27 -0
  61. package/dist/components/hds/theme-context/types.js.map +1 -0
  62. package/dist/components/hds/theme-switcher/index.js +100 -0
  63. package/dist/components/hds/theme-switcher/index.js.map +1 -0
  64. package/dist/components/hds/time/index.js.map +1 -1
  65. package/dist/components/hds/time/range.js.map +1 -1
  66. package/dist/components.js +2 -0
  67. package/dist/components.js.map +1 -1
  68. package/dist/helpers/hds-t.js.map +1 -1
  69. package/dist/modifiers/hds-code-editor.js.map +1 -1
  70. package/dist/services/hds-intl.js.map +1 -1
  71. package/dist/services/hds-theming.js +214 -0
  72. package/dist/services/hds-theming.js.map +1 -0
  73. package/dist/services/hds-time.js.map +1 -1
  74. package/dist/services.js +1 -1
  75. package/dist/styles/@hashicorp/design-system-components-common.css +9588 -0
  76. package/dist/styles/@hashicorp/design-system-components-common.css.map +1 -0
  77. package/dist/styles/@hashicorp/design-system-components-common.scss +24 -0
  78. package/dist/styles/@hashicorp/design-system-components.css +501 -320
  79. package/dist/styles/@hashicorp/design-system-components.css.map +1 -0
  80. package/dist/styles/@hashicorp/design-system-components.scss +4 -62
  81. package/dist/styles/@hashicorp/design-system-power-select-overrides.css +229 -0
  82. package/dist/styles/@hashicorp/design-system-power-select-overrides.css.map +1 -0
  83. package/dist/styles/components/badge-count.scss +26 -76
  84. package/dist/styles/components/badge.scss +26 -131
  85. package/dist/styles/components/button.scss +5 -0
  86. package/dist/styles/components/dropdown.scss +3 -5
  87. package/dist/styles/components/form/file-input.scss +2 -2
  88. package/dist/styles/components/form/key-value-inputs.scss +2 -4
  89. package/dist/styles/components/index.scss +52 -0
  90. package/dist/styles/components/theme-context.scss +12 -0
  91. package/dist/styles/mixins/_button.scss +82 -129
  92. package/dist/styles/mixins/_carbonization.scss +31 -0
  93. package/dist/styles/mixins/_interactive-dark-theme.scss +1 -1
  94. package/dist/utils/hds-aria-described-by.js.map +1 -1
  95. package/package.json +10 -6
  96. package/dist/styles/@hashicorp/design-system-components.scss.map +0 -1
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type Owner from '@ember/owner';
7
+ import type { HdsThemeContexts } from './types.ts';
8
+ import type { HdsThemes, HdsModes } from '../../../services/hds-theming.ts';
9
+ export interface HdsThemeContextSignature {
10
+ Args: {
11
+ context: HdsThemeContexts;
12
+ };
13
+ Blocks: {
14
+ default: [];
15
+ };
16
+ Element: HTMLElement;
17
+ }
18
+ export declare const CONTEXTUAL_THEMES: HdsThemes[];
19
+ export declare const CONTEXTUAL_MODES: HdsModes[];
20
+ export declare const CONTEXTUAL_VALUES: HdsThemeContexts[];
21
+ export default class HdsThemeContext extends Component<HdsThemeContextSignature> {
22
+ constructor(owner: Owner, args: HdsThemeContextSignature['Args']);
23
+ get classNames(): string;
24
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import { HdsThemeValues, HdsModesLightValues, HdsModesDarkValues } from '../../../services/hds-theming.ts';
6
+ import type { HdsThemes, HdsModes } from '../../../services/hds-theming.ts';
7
+ export declare const HdsThemeContextThemesValues: {
8
+ readonly Default: HdsThemeValues.Default;
9
+ readonly System: HdsThemeValues.System;
10
+ readonly Light: HdsThemeValues.Light;
11
+ readonly Dark: HdsThemeValues.Dark;
12
+ };
13
+ export declare const HdsThemeContextModesValues: {
14
+ readonly CdsG0: HdsModesLightValues.CdsG0;
15
+ readonly CdsG10: HdsModesLightValues.CdsG10;
16
+ readonly CdsG90: HdsModesDarkValues.CdsG90;
17
+ readonly CdsG100: HdsModesDarkValues.CdsG100;
18
+ };
19
+ export type HdsThemeContexts = HdsThemes | Exclude<HdsModes, 'default'>;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type { HdsDropdownSignature } from '../dropdown/index.ts';
7
+ import type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.ts';
8
+ import type { HdsIconSignature } from '../icon/index.ts';
9
+ import type HdsThemingService from '../../../services/hds-theming.ts';
10
+ import type { HdsThemes, HdsOnSetThemeCallback } from '../../../services/hds-theming.ts';
11
+ interface ThemeOption {
12
+ theme: HdsThemes | undefined;
13
+ icon: HdsIconSignature['Args']['name'];
14
+ label: string;
15
+ }
16
+ export interface HdsThemeSwitcherSignature {
17
+ Args: {
18
+ toggleSize?: HdsDropdownToggleButtonSignature['Args']['size'];
19
+ toggleIsFullWidth?: HdsDropdownToggleButtonSignature['Args']['isFullWidth'];
20
+ hasDefaultOption?: boolean;
21
+ hasSystemOption?: boolean;
22
+ onSetTheme?: HdsOnSetThemeCallback;
23
+ };
24
+ Element: HdsDropdownSignature['Element'];
25
+ }
26
+ export default class HdsThemeSwitcher extends Component<HdsThemeSwitcherSignature> {
27
+ readonly hdsTheming: HdsThemingService;
28
+ get toggleSize(): "small" | "medium";
29
+ get toggleIsFullWidth(): boolean;
30
+ get toggleContent(): {
31
+ label: string;
32
+ icon: "type" | "map" | "filter" | "code" | "link" | "menu" | "search" | "video" | "circle" | "image" | "path" | "tag" | "repeat" | "hash" | "queue" | "shuffle" | "chevron-up" | "chevron-down" | "unfold-open" | "unfold-close" | "arrow-down" | "arrow-up" | "swap-vertical" | "top" | "key" | "move" | "change" | "pause" | "play" | "move-horizontal" | "loading" | "loading-static" | "running" | "running-static" | "apple" | "apple-color" | "alibaba" | "alibaba-color" | "amazon-ecs" | "amazon-ecs-color" | "amazon-eks" | "amazon-eks-color" | "ansible-community" | "ansible-community-color" | "ansible-automation-platform" | "ansible-automation-platform-color" | "auth0" | "auth0-color" | "aws" | "aws-color" | "aws-cdk" | "aws-cdk-color" | "aws-cloudwatch" | "aws-cloudwatch-color" | "aws-ec2" | "aws-ec2-color" | "aws-lambda" | "aws-lambda-color" | "aws-s3" | "aws-s3-color" | "azure" | "azure-color" | "azure-aks" | "azure-aks-color" | "azure-blob-storage" | "azure-blob-storage-color" | "azure-devops" | "azure-devops-color" | "azure-vms" | "azure-vms-color" | "bitbucket" | "bitbucket-color" | "bridgecrew" | "bridgecrew-color" | "cisco" | "cisco-color" | "codepen" | "codepen-color" | "confluence" | "confluence-color" | "confluent" | "confluent-color" | "datadog" | "datadog-color" | "digital-ocean" | "digital-ocean-color" | "docker" | "docker-color" | "duo" | "duo-color" | "elastic-observability" | "elastic-observability-color" | "f5" | "f5-color" | "facebook" | "facebook-color" | "figma" | "figma-color" | "gcp" | "gcp-color" | "git" | "git-color" | "gitlab" | "gitlab-color" | "github" | "github-color" | "google" | "google-color" | "google-docs" | "google-docs-color" | "google-drive" | "google-drive-color" | "google-forms" | "google-forms-color" | "google-sheets" | "google-sheets-color" | "google-slides" | "google-slides-color" | "grafana" | "grafana-color" | "helm" | "helm-color" | "infracost" | "infracost-color" | "jenkins" | "jenkins-color" | "jfrog" | "jfrog-color" | "jira" | "jira-color" | "jwt" | "jwt-color" | "kubernetes" | "kubernetes-color" | "lightlytics" | "lightlytics-color" | "linkedin" | "linkedin-color" | "linode" | "linode-color" | "linux" | "linux-color" | "loom" | "loom-color" | "meetup" | "meetup-color" | "microsoft" | "microsoft-color" | "microsoft-teams" | "microsoft-teams-color" | "minio" | "minio-color" | "mongodb" | "mongodb-color" | "new-relic" | "new-relic-color" | "okta" | "okta-color" | "oracle" | "oracle-color" | "opa" | "opa-color" | "openid" | "openid-color" | "openstack" | "openstack-color" | "pack" | "pack-color" | "pager-duty" | "pager-duty-color" | "ping-identity " | "ping-identity-color" | "postgres" | "postgres-color" | "rabbitmq" | "rabbitmq-color" | "saml" | "saml-color" | "service-now" | "service-now-color" | "slack" | "slack-color" | "snyk" | "snyk-color" | "splunk" | "splunk-color" | "twilio" | "twilio-color" | "twitch" | "twitch-color" | "twitter" | "twitter-color" | "twitter-x" | "twitter-x-color" | "vantage" | "vantage-color" | "venafi" | "venafi-color" | "vercel" | "vercel-color" | "vmware" | "vmware-color" | "youtube" | "youtube-color" | "boundary" | "boundary-color" | "boundary-fill" | "boundary-fill-color" | "boundary-square" | "boundary-square-color" | "consul" | "consul-color" | "consul-fill" | "consul-fill-color" | "consul-square" | "consul-square-color" | "nomad" | "nomad-color" | "nomad-fill" | "nomad-fill-color" | "nomad-square" | "nomad-square-color" | "packer" | "packer-color" | "packer-fill" | "packer-fill-color" | "packer-square" | "packer-square-color" | "terraform" | "terraform-color" | "terraform-fill" | "terraform-fill-color" | "terraform-square" | "terraform-square-color" | "vagrant" | "vagrant-color" | "vagrant-fill" | "vagrant-fill-color" | "vagrant-square" | "vagrant-square-color" | "vault" | "vault-color" | "vault-fill" | "vault-fill-color" | "vault-square" | "vault-square-color" | "vault-radar" | "vault-radar-color" | "vault-radar-fill" | "vault-radar-fill-color" | "vault-radar-square" | "vault-radar-square-color" | "vault-secrets" | "vault-secrets-color" | "vault-secrets-fill" | "vault-secrets-fill-color" | "vault-secrets-square" | "vault-secrets-square-color" | "waypoint" | "waypoint-color" | "waypoint-fill" | "waypoint-fill-color" | "waypoint-square" | "waypoint-square-color" | "hashicorp" | "hashicorp-color" | "hashicorp-fill" | "hashicorp-fill-color" | "hashicorp-square" | "hashicorp-square-color" | "hcp" | "hcp-color" | "hcp-fill" | "hcp-fill-color" | "hcp-square" | "hcp-square-color" | "accessibility" | "folder-users" | "frown" | "identity-service" | "identity-user" | "meh" | "robot" | "smile" | "user" | "user-check" | "user-circle" | "user-circle-fill" | "user-minus" | "user-plus" | "user-x" | "users" | "ampersand" | "beaker" | "bucket" | "bulb" | "circle-dot" | "circle-fill" | "circle-half" | "diamond" | "diamond-fill" | "disc" | "dot" | "dot-half" | "droplet" | "flag" | "gift" | "government" | "handshake" | "hexagon" | "hexagon-fill" | "labyrinth" | "layers" | "moon" | "octagon" | "outline" | "random" | "rocket" | "sparkle" | "square" | "square-fill" | "sun" | "triangle" | "triangle-fill" | "truck" | "wand" | "zap" | "zap-off" | "docs" | "docs-download" | "docs-link" | "guide" | "guide-link" | "help" | "info" | "info-fill" | "learn" | "learn-link" | "support" | "alert-circle" | "alert-circle-fill" | "alert-diamond" | "alert-diamond-fill" | "alert-octagon" | "alert-octagon-fill" | "alert-triangle" | "alert-triangle-fill" | "check" | "check-circle" | "check-circle-fill" | "check-diamond" | "check-diamond-fill" | "check-hexagon" | "check-hexagon-fill" | "check-square" | "check-square-fill" | "skip" | "x" | "x-circle" | "x-circle-fill" | "x-diamond" | "x-diamond-fill" | "x-hexagon" | "x-hexagon-fill" | "x-square" | "x-square-fill" | "bug" | "certificate" | "eye" | "eye-off" | "fingerprint" | "keychain" | "lock" | "lock-fill" | "lock-off" | "shield" | "shield-alert" | "shield-check" | "shield-off" | "shield-x" | "token" | "unlock" | "verified" | "wall" | "minus" | "minus-circle" | "minus-circle-fill" | "minus-plus" | "minus-plus-circle" | "minus-plus-square" | "minus-square" | "minus-square-fill" | "plus" | "plus-circle" | "plus-circle-fill" | "plus-square" | "camera" | "camera-off" | "cast" | "closed-caption" | "fast-forward" | "film" | "headphones" | "music" | "pause-circle" | "play-circle" | "radio" | "rewind" | "rss" | "skip-back" | "skip-forward" | "speaker" | "stop-circle" | "volume" | "volume-down" | "volume-up" | "volume-x" | "wifi" | "wifi-off" | "compass" | "crosshair" | "map-pin" | "navigation" | "navigation-alt" | "redirect" | "target" | "align-center" | "align-justify" | "align-left" | "align-right" | "battery" | "battery-charging" | "bookmark" | "bookmark-add" | "bookmark-add-fill" | "bookmark-fill" | "bookmark-remove" | "bookmark-remove-fill" | "bottom" | "command" | "crop" | "dashboard" | "delete" | "download" | "edit" | "end" | "entry-point" | "exit-point" | "external-link" | "filter-circle" | "filter-fill" | "grid" | "grid-alt" | "home" | "jump-link" | "layout" | "list" | "maximize" | "maximize-alt" | "minimize" | "minimize-alt" | "more-horizontal" | "more-vertical" | "mouse-pointer" | "paperclip" | "pen-tool" | "pencil-tool" | "pin" | "pin-off" | "power" | "printer" | "reload" | "resize-column" | "rotate-cw" | "rotate-ccw" | "share" | "sidebar" | "sidebar-hide" | "sidebar-show" | "sign-in" | "sign-out" | "slash" | "slash-square" | "sort-asc" | "sort-desc" | "start" | "switcher" | "sync" | "sync-alert" | "sync-reverse" | "text-wrap" | "toggle-left" | "toggle-right" | "trash" | "upload" | "zoom-in" | "zoom-out" | "archive" | "clipboard" | "clipboard-checked" | "clipboard-copy" | "clipboard-x" | "file" | "file-change" | "file-check" | "file-diff" | "file-minus" | "file-plus" | "file-source" | "file-text" | "file-x" | "files" | "folder" | "folder-fill" | "folder-minus" | "folder-minus-fill" | "folder-plus" | "folder-plus-fill" | "folder-star" | "inbox" | "api" | "auto-apply" | "build" | "change-circle" | "change-square" | "channel" | "cloud" | "cloud-check" | "cloud-download" | "cloud-lightning" | "cloud-lock" | "cloud-off" | "cloud-upload" | "cloud-x" | "connection" | "connection-gateway" | "cpu" | "duplicate" | "gateway" | "git-branch" | "git-commit" | "git-merge" | "git-pull-request" | "git-repo" | "hammer" | "key-values" | "mainframe" | "mesh" | "module" | "monitor" | "network" | "network-alt" | "node" | "pipeline" | "plug" | "replication-direct" | "replication-perf" | "scissors" | "server" | "server-cluster" | "serverless" | "service" | "settings" | "sliders" | "smartphone" | "socket" | "step" | "tablet" | "terminal" | "terminal-screen" | "test" | "tools" | "transform-data" | "tv" | "webhook" | "wrench" | "calendar" | "clock" | "clock-filled" | "delay" | "event" | "history" | "hourglass" | "watch" | "bar-chart" | "bar-chart-alt" | "box" | "collections" | "database" | "hard-drive" | "line-chart" | "line-chart-up" | "logs" | "package" | "pie-chart" | "save" | "trend-down" | "trend-up" | "activity" | "at-sign" | "award" | "bell" | "bell-active" | "bell-active-fill" | "bell-off" | "discussion-circle" | "discussion-square" | "heart" | "heart-fill" | "heart-off" | "mail" | "mail-open" | "message-circle" | "message-circle-fill" | "message-square" | "message-square-fill" | "mic" | "mic-off" | "newspaper" | "phone" | "phone-call" | "phone-off" | "send" | "star" | "star-circle" | "star-fill" | "star-off" | "thumbs-down" | "thumbs-up" | "video-off" | "bank-vault" | "briefcase" | "credit-card" | "dollar-sign" | "enterprise" | "globe" | "globe-private" | "org" | "provider" | "shopping-bag" | "shopping-cart" | "arrow-down-circle" | "arrow-down-left" | "arrow-down-right" | "arrow-left" | "arrow-left-circle" | "arrow-right" | "arrow-right-circle" | "arrow-up-circle" | "arrow-up-left" | "arrow-up-right" | "caret" | "chevron-left" | "chevron-right" | "chevrons-down" | "chevrons-left" | "chevrons-right" | "chevrons-up" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "load-balancer" | "migrate" | "swap-horizontal";
33
+ } | {
34
+ label: string;
35
+ icon: undefined;
36
+ };
37
+ get hasDefaultOption(): boolean;
38
+ get hasSystemOption(): boolean;
39
+ get _options(): Partial<Record<"default" | "light" | "dark" | "system", ThemeOption>>;
40
+ get currentTheme(): "default" | "light" | "dark" | "system" | undefined;
41
+ onSelectTheme(theme: HdsThemes | undefined): void;
42
+ }
43
+ export {};
@@ -222,6 +222,8 @@ export { default as HdsTextBody } from './components/hds/text/body.ts';
222
222
  export { default as HdsTextCode } from './components/hds/text/code.ts';
223
223
  export { default as HdsTextDisplay } from './components/hds/text/display.ts';
224
224
  export * from './components/hds/text/types.ts';
225
+ export { default as HdsThemeContext } from './components/hds/theme-context/index.ts';
226
+ export { default as HdsThemeSwitcher } from './components/hds/theme-switcher/index.ts';
225
227
  export { default as HdsTime } from './components/hds/time/index.ts';
226
228
  export { default as HdsTimeSingle } from './components/hds/time/single.ts';
227
229
  export { default as HdsTimeRange } from './components/hds/time/range.ts';
@@ -4,12 +4,13 @@
4
4
  */
5
5
  import Service from '@ember/service';
6
6
  import type { IntlService } from 'ember-intl';
7
- type IntlTOptions = Parameters<IntlService['t']>[1];
8
- export type HdsIntlTOptions = IntlTOptions & {
7
+ import type { FormatMessageParameters } from 'ember-intl/-private/formatjs';
8
+ export type HdsIntlTOptions = FormatMessageParameters[1] & {
9
9
  default: string;
10
+ htmlSafe?: boolean | undefined;
11
+ locale?: string | undefined;
10
12
  };
11
13
  export default class HdsIntlService extends Service {
12
14
  get intl(): IntlService | undefined;
13
15
  t(key: string, options: HdsIntlTOptions): string;
14
16
  }
15
- export {};
@@ -0,0 +1,57 @@
1
+ import Service from '@ember/service';
2
+ export declare enum HdsThemeValues {
3
+ Default = "default",
4
+ System = "system",
5
+ Light = "light",
6
+ Dark = "dark"
7
+ }
8
+ export declare enum HdsModesBaseValues {
9
+ Default = "default"
10
+ }
11
+ export declare enum HdsModesLightValues {
12
+ CdsG0 = "cds-g0",
13
+ CdsG10 = "cds-g10"
14
+ }
15
+ export declare enum HdsModesDarkValues {
16
+ CdsG90 = "cds-g90",
17
+ CdsG100 = "cds-g100"
18
+ }
19
+ export type HdsThemes = `${HdsThemeValues}`;
20
+ export type HdsModes = `${HdsModesBaseValues}` | `${HdsModesLightValues}` | `${HdsModesDarkValues}`;
21
+ export type HdsModesLight = `${HdsModesLightValues}`;
22
+ export type HdsModesDark = `${HdsModesDarkValues}`;
23
+ type HdsThemingOptions = {
24
+ lightTheme: HdsModesLight;
25
+ darkTheme: HdsModesDark;
26
+ };
27
+ type SetThemeArgs = {
28
+ theme: HdsThemes | undefined;
29
+ options?: HdsThemingOptions;
30
+ onSetTheme?: HdsOnSetThemeCallback;
31
+ };
32
+ export type HdsOnSetThemeCallbackArgs = {
33
+ currentTheme: HdsThemes | undefined;
34
+ currentMode: HdsModes | undefined;
35
+ };
36
+ export type HdsOnSetThemeCallback = (args: HdsOnSetThemeCallbackArgs) => void;
37
+ export declare const THEMES: HdsThemes[];
38
+ export declare const MODES_LIGHT: HdsModesLight[];
39
+ export declare const MODES_DARK: HdsModesDark[];
40
+ export declare const MODES: HdsModes[];
41
+ export declare const HDS_THEMING_LOCALSTORAGE_DATA = "hds-theming-data";
42
+ export declare const DEFAULT_THEMING_OPTION_LIGHT_THEME = HdsModesLightValues.CdsG0;
43
+ export declare const DEFAULT_THEMING_OPTION_DARK_THEME = HdsModesDarkValues.CdsG100;
44
+ export default class HdsThemingService extends Service {
45
+ _currentTheme: HdsThemes | undefined;
46
+ _currentMode: HdsModes | undefined;
47
+ _currentLightTheme: HdsModesLight;
48
+ _currentDarkTheme: HdsModesDark;
49
+ globalOnSetTheme: HdsOnSetThemeCallback | undefined;
50
+ initializeTheme(): void;
51
+ setTheme({ theme, options, onSetTheme }: SetThemeArgs): void;
52
+ get currentTheme(): HdsThemes | undefined;
53
+ get currentMode(): HdsModes | undefined;
54
+ get currentLightTheme(): HdsModesLight;
55
+ get currentDarkTheme(): HdsModesDark;
56
+ }
57
+ export {};
@@ -2,3 +2,4 @@
2
2
  * Copyright IBM Corp. 2021, 2025
3
3
  * SPDX-License-Identifier: MPL-2.0
4
4
  */
5
+ export * from './services/hds-theming.ts';
@@ -217,6 +217,8 @@ import type HdsTagComponent from './components/hds/tag';
217
217
  import type HdsTooltipButtonComponent from './components/hds/tooltip-button';
218
218
  import type HdsToastComponent from './components/hds/toast';
219
219
  import type HdsTextCodeComponent from './components/hds/text/code';
220
+ import type HdsThemeContextComponent from './components/hds/theme-context';
221
+ import type HdsThemeSwitcherComponent from './components/hds/theme-switcher';
220
222
  import type HdsTimeComponent from './components/hds/time';
221
223
  import type HdsTimeSingleComponent from './components/hds/time/single';
222
224
  import type HdsTimeRangeComponent from './components/hds/time/range';
@@ -687,6 +689,10 @@ export default interface HdsComponentsRegistry {
687
689
  'hds/tooltip-button': typeof HdsTooltipButtonComponent;
688
690
  'Hds::Toast': typeof HdsToastComponent;
689
691
  'hds/toast': typeof HdsToastComponent;
692
+ 'Hds::ThemeContext': typeof HdsThemeContextComponent;
693
+ 'hds/theme-context': typeof HdsThemeContextComponent;
694
+ 'Hds::ThemeSwitcher': typeof HdsThemeSwitcherComponent;
695
+ 'hds/theme-switcher': typeof HdsThemeSwitcherComponent;
690
696
  'Hds::Time': typeof HdsTimeComponent;
691
697
  'hds/time': typeof HdsTimeComponent;
692
698
  'Hds::Time::Single': typeof HdsTimeSingleComponent;
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/theme-context/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/theme-switcher/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/services/hds-theming";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableTableModel from './models/table.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n} from './types.ts';\nimport type HdsAdvancedTableColumnType from './models/column.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type HdsAdvancedTableTd from './td.ts';\nimport type HdsAdvancedTableTh from './th.ts';\nimport type HdsAdvancedTableTr from './tr.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsAdvancedTableDensities[] = Object.values(\n HdsAdvancedTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[] = Object.values(\n HdsAdvancedTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;\n\nexport const BORDER_WIDTH = 1;\n\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyFirstColumn: boolean,\n hasFirstColumnPxWidth: boolean,\n isStickyColumnPinned: boolean\n) => {\n const horizontalScrollBarHeight =\n scrollWrapper.offsetHeight - scrollWrapper.clientHeight;\n const verticalScrollBarWidth =\n scrollWrapper.offsetWidth - scrollWrapper.clientWidth;\n\n let leftOffset = 0;\n\n if (hasStickyFirstColumn) {\n const stickyColumnHeaders = theadElement.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n\n stickyColumnHeaders?.forEach((el) => {\n // querySelectorAll returns Elements, which don't have offsetWidth\n // need to use offsetWidth to account for the cell borders\n const elAsHTMLElement = el as HTMLElement;\n leftOffset += elAsHTMLElement.offsetWidth;\n });\n\n // offsets the left: -1px position if there are multiple sticky columns or the first column has a fixed pixel width\n if (stickyColumnHeaders.length > 1 || hasFirstColumnPxWidth) {\n leftOffset -= 1;\n }\n\n // offsets the left: -1px position if the sticky column is already pinned when the scroll indicator is calculated\n if (isStickyColumnPinned) {\n leftOffset -= 1;\n }\n }\n\n return {\n bottom: `${horizontalScrollBarHeight}px`,\n height: `${scrollWrapper.offsetHeight - horizontalScrollBarHeight}px`,\n left: `${leftOffset}px`,\n right: `${verticalScrollBarWidth}px`,\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: boolean,\n isStickyColumnPinned: boolean\n) => {\n // if there is no select checkbox column, the sticky column is all the way to the left\n if (!hasRowSelection) return '0px';\n\n const selectableCell = theadElement.querySelector(\n '.hds-advanced-table__th--is-selectable'\n ) as HTMLElement;\n\n let leftOffset = selectableCell?.offsetWidth ?? 0;\n\n // if the sticky column is pinned when the offset is calculated, we need to account for the increased width of the border\n if (isStickyColumnPinned && leftOffset > 0) {\n leftOffset -= 2;\n }\n\n return `${leftOffset}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n columnOrder?: string[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n reorderedMessageText?: string;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasReorderableColumns?: boolean;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onColumnResize?: (columnKey: string, newWidth?: string) => void;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n };\n Blocks: {\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsAdvancedTableTr,\n | 'selectionScope'\n | 'isLastRow'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'hasStickyColumn'\n | 'isStickyColumnPinned'\n | 'isParentRow'\n | 'depth'\n | 'displayRow'\n >;\n Th?: WithBoundArgs<\n typeof HdsAdvancedTableTh,\n | 'depth'\n | 'isExpandable'\n | 'isExpanded'\n | 'newLabel'\n | 'parentId'\n | 'scope'\n | 'isStickyColumn'\n | 'isStickyColumnPinned'\n | 'onClickToggle'\n >;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n @tracked private _tableHeight = 0;\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _tableModel!: HdsAdvancedTableTableModel;\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n private _scrollWrapperElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked hasPinnedFirstColumn: boolean | undefined = undefined;\n @tracked reorderedMessageText = '';\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n hasStickyFirstColumn,\n onSort,\n } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder: this._onColumnReorder.bind(this),\n onSort,\n });\n\n this._runAssertions();\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get childrenKey(): string {\n const { childrenKey = 'children' } = this.args;\n\n return childrenKey;\n }\n\n get hasStickyFirstColumn(): boolean | undefined {\n // The user-controlled `hasPinnedFirstColumn` variable takes precedence over the model's `hasStickyFirstColumn` property.\n if (this.hasPinnedFirstColumn !== undefined) {\n return this.hasPinnedFirstColumn;\n } else if (this.args.hasStickyFirstColumn === false) {\n return this.args.hasStickyFirstColumn;\n }\n\n return undefined;\n }\n\n get hasScrollIndicator(): boolean {\n if (this.hasStickyFirstColumn) {\n return true;\n }\n\n return false;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n const { sortBy, sortOrder } = this._tableModel;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (sortBy !== undefined && sortOrder !== undefined) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n return `Sorted by ${sortBy} ${sortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isSelectable must not be true if there are nested rows.',\n !isSelectable\n );\n return isSelectable;\n }\n\n return isSelectable;\n }\n\n get isStriped(): boolean {\n const { isStriped = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isStriped must not be true if there are nested rows.',\n !isStriped\n );\n return isStriped;\n }\n\n return isStriped;\n }\n\n get density(): HdsAdvancedTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get hasStickyHeader(): boolean {\n if (this.args.maxHeight && this.args.hasStickyHeader !== false) {\n return true;\n } else if (this.args.hasStickyHeader && !this.args.maxHeight) {\n assert('Must set @maxHeight to use @hasStickyHeader.', false);\n }\n\n return false;\n }\n\n get valign(): HdsAdvancedTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n // returns the grid-template-columns CSS attribute for the grid\n get gridTemplateColumns(): string {\n const { isSelectable } = this.args;\n const { orderedColumns } = this._tableModel;\n\n // if there is a select checkbox, the first column has a 'min-content' width to hug the checkbox content\n let style = isSelectable ? 'min-content ' : '';\n\n for (let i = 0; i < orderedColumns.length; i++) {\n style += ` ${orderedColumns[i]!.appliedWidth}`;\n }\n\n return style;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table'];\n\n if (this.isStriped) {\n classes.push('hds-advanced-table--striped');\n }\n\n if (this.density) {\n classes.push(`hds-advanced-table--density-${this.density}`);\n }\n\n if (this.valign) {\n classes.push(`hds-advanced-table--valign-${this.valign}`);\n }\n\n if (this._tableModel.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\n const classes = ['hds-advanced-table__thead'];\n\n if (this.hasStickyHeader) {\n classes.push('hds-advanced-table__thead--sticky');\n }\n\n if (this.isStickyHeaderPinned) {\n classes.push('hds-advanced-table__thead--is-pinned');\n }\n\n if (this._tableModel.hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n private _registerGridElement = modifier((element: HTMLDivElement) => {\n this._tableModel.gridElement = element;\n });\n\n private _registerThElement = modifier(\n (element: HTMLDivElement, [column]: [HdsAdvancedTableColumnType]) => {\n if (column === undefined) {\n return;\n }\n\n column.thElement = element;\n }\n );\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollWrapperElement = element;\n\n const updateHorizontalScrollIndicators = () => {\n this.showScrollIndicatorRight = element.clientWidth < element.scrollWidth;\n };\n\n this._scrollHandler = () => {\n this._updateScrollIndicators(element);\n };\n\n element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n this._tableHeight = element.offsetHeight;\n\n const hasFirstColumnPxWidth =\n this._tableModel.columns[0]?.pxWidth !== undefined;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n hasFirstColumnPxWidth,\n this.isStickyColumnPinned\n );\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n const { isSelectable = false } = this.args;\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n updateHorizontalScrollIndicators();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n updateHorizontalScrollIndicators();\n\n // on render check if should show bottom scroll indicator\n if (element.clientHeight < element.scrollHeight) {\n this.showScrollIndicatorBottom = true;\n }\n\n return () => {\n element.removeEventListener('scroll', this._scrollHandler);\n this._resizeObserver.disconnect();\n };\n });\n\n private _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n const sortableColumns = columns.filter((column) => column.isSortable);\n const sortableColumnLabels = sortableColumns.map(\n (column) => column.label\n );\n\n assert(\n 'Cannot have reorderable columns if there are nested rows.',\n !hasReorderableColumns\n );\n\n assert(\n `Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`,\n sortableColumns.length === 0\n );\n\n assert(\n 'Cannot have a sticky first column if there are nested rows.',\n hasStickyFirstColumn === undefined\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\n\n if (hasReorderableColumns) {\n assert(\n 'Cannot have both reorderable columns and a sticky first column.',\n hasStickyFirstColumn === undefined\n );\n }\n }\n\n private _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n }) => {\n // Guard against accessing hdsIntl service after component destruction\n if (this.isDestroying || this.isDestroyed) return;\n\n const { reorderedMessageText } = this.args;\n\n if (reorderedMessageText !== undefined) {\n this.reorderedMessageText = reorderedMessageText;\n } else {\n const newPosition = insertedAt + 1;\n const translatedReorderedMessageText = this.hdsIntl.t(\n 'hds.advanced-table.reordered-message',\n {\n default: `Moved ${column.label} column to position ${newPosition}`,\n columnLabel: column.label,\n newPosition,\n }\n );\n\n this.reorderedMessageText = translatedReorderedMessageText;\n }\n\n this.args.onColumnReorder?.({\n column,\n newOrder,\n insertedAt,\n });\n };\n\n onSelectionChangeCallback(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n const { onSelectionChange } = this.args;\n\n if (typeof onSelectionChange !== 'function') return;\n\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n\n @action\n setupTableModelData(): void {\n const { columns, model, sortBy, sortOrder } = this.args;\n\n this._tableModel.setupData({\n columns,\n model,\n sortBy,\n sortOrder,\n });\n }\n\n @action\n updateTableModelColumnOrder(): void {\n if (this.args.columnOrder === undefined) {\n return;\n }\n\n this._tableModel.columnOrder = this.args.columnOrder;\n }\n\n @action\n onSelectionAllChange(): void {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n }\n\n @action\n onSelectionRowChange(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n }\n\n @action\n didInsertSelectAllCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void {\n this._selectAllCheckbox = checkbox;\n }\n\n @action\n willDestroySelectAllCheckbox(): void {\n this._selectAllCheckbox = undefined;\n }\n\n @action\n didInsertRowCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n }\n\n @action\n willDestroyRowCheckbox(selectionKey?: string): void {\n if (selectionKey === undefined) {\n return;\n }\n\n const index = this._selectableRows.findIndex(\n (row) => row.selectionKey === selectionKey\n );\n\n if (index === -1) {\n return;\n }\n\n this._selectableRows.splice(index, 1);\n\n this.setSelectAllState();\n }\n\n @action\n setSelectAllState(): void {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n }\n\n private _updateScrollIndicators(element: HTMLElement): void {\n // 6px as a buffer so the shadow doesn't appear over the border radius on the edge of the table\n const SCROLL_BUFFER = 6;\n\n // left scroll indicator and sticky column styles\n if (element.scrollLeft > SCROLL_BUFFER) {\n if (this.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n if (!this.showScrollIndicatorLeft) {\n this.showScrollIndicatorLeft = true;\n }\n } else if (element.scrollLeft === 0 && this.showScrollIndicatorLeft) {\n this.isStickyColumnPinned = false;\n this.showScrollIndicatorLeft = false;\n }\n\n // the right edge is how far the user can scroll, which is the full width of the table - the visible section of the table (also subtract the buffer)\n const rightEdge = element.scrollWidth - element.clientWidth - SCROLL_BUFFER;\n\n // right scroll indicator\n if (element.scrollLeft < rightEdge) {\n this.showScrollIndicatorRight = true;\n } else {\n this.showScrollIndicatorRight = false;\n }\n\n // sticky header\n if (element.scrollTop > 0) {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = true;\n }\n this.showScrollIndicatorTop = true;\n } else {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = false;\n }\n this.showScrollIndicatorTop = false;\n }\n\n // the bottom edge is how far the user can scroll, which is the full height of the table - the visible section of the table (also subtract the buffer)\n const bottomEdge =\n element.scrollHeight - element.clientHeight - SCROLL_BUFFER;\n\n // bottom scroll indicator\n if (element.scrollTop < bottomEdge) {\n this.showScrollIndicatorBottom = true;\n } else {\n this.showScrollIndicatorBottom = false;\n }\n }\n\n private _onPinFirstColumn = (): void => {\n this.hasPinnedFirstColumn = this.hasPinnedFirstColumn ? false : true;\n // we need to retrigger the scroll indicator updates if the pinned state is changed when the table is already scrolled\n this._updateScrollIndicators(this._scrollWrapperElement);\n };\n\n private _isStickyColumn = (\n column: HdsAdvancedTableColumnType\n ): boolean | undefined => {\n if (column.isFirst && this.hasStickyFirstColumn !== undefined) {\n return this.hasStickyFirstColumn;\n }\n return undefined;\n };\n}\n"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","BORDER_WIDTH","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyFirstColumn","hasFirstColumnPxWidth","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","tracked","undefined","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","constructor","owner","args","model","columns","columnOrder","childrenKey","hasReorderableColumns","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","onColumnReorder","_onColumnReorder","bind","_runAssertions","hasPinnedFirstColumn","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","hasRowsWithChildren","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","gridTemplateColumns","orderedColumns","style","appliedWidth","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_registerGridElement","modifier","element","gridElement","_registerThElement","column","thElement","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","_tableHeight","pxWidth","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_setUpThead","newOrder","insertedAt","isDestroying","isDestroyed","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","setupTableModelData","setupData","n","action","updateTableModelColumnOrder","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","index","findIndex","splice","selectableRowsCount","selectedRowsCount","indeterminate","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","_isStickyColumn","isFirst","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/advanced-table/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { service } from '@ember/service';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableTableModel from './models/table.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport {\n HdsAdvancedTableDensityValues,\n HdsAdvancedTableVerticalAlignmentValues,\n} from './types.ts';\nimport type {\n HdsAdvancedTableColumn,\n HdsAdvancedTableDensities,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableOnSelectionChangeSignature,\n HdsAdvancedTableSelectableRow,\n HdsAdvancedTableThSortOrder,\n HdsAdvancedTableVerticalAlignment,\n HdsAdvancedTableModel,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderCallback,\n} from './types.ts';\nimport type HdsAdvancedTableColumnType from './models/column.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type HdsAdvancedTableTd from './td.ts';\nimport type HdsAdvancedTableTh from './th.ts';\nimport type HdsAdvancedTableTr from './tr.ts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport const DENSITIES: HdsAdvancedTableDensities[] = Object.values(\n HdsAdvancedTableDensityValues\n);\nexport const DEFAULT_DENSITY = HdsAdvancedTableDensityValues.Medium;\n\nexport const VALIGNMENTS: HdsAdvancedTableVerticalAlignment[] = Object.values(\n HdsAdvancedTableVerticalAlignmentValues\n);\nexport const DEFAULT_VALIGN = HdsAdvancedTableVerticalAlignmentValues.Top;\n\nexport const BORDER_WIDTH = 1;\n\nconst DEFAULT_SCROLL_DIMENSIONS = {\n bottom: '0px',\n height: '0px',\n left: '0px',\n right: '0px',\n width: '0px',\n};\n\nconst getScrollIndicatorDimensions = (\n scrollWrapper: HTMLDivElement,\n theadElement: HTMLDivElement,\n hasStickyFirstColumn: boolean,\n hasFirstColumnPxWidth: boolean,\n isStickyColumnPinned: boolean\n) => {\n const horizontalScrollBarHeight =\n scrollWrapper.offsetHeight - scrollWrapper.clientHeight;\n const verticalScrollBarWidth =\n scrollWrapper.offsetWidth - scrollWrapper.clientWidth;\n\n let leftOffset = 0;\n\n if (hasStickyFirstColumn) {\n const stickyColumnHeaders = theadElement.querySelectorAll(\n '.hds-advanced-table__th--is-sticky-column'\n );\n\n stickyColumnHeaders?.forEach((el) => {\n // querySelectorAll returns Elements, which don't have offsetWidth\n // need to use offsetWidth to account for the cell borders\n const elAsHTMLElement = el as HTMLElement;\n leftOffset += elAsHTMLElement.offsetWidth;\n });\n\n // offsets the left: -1px position if there are multiple sticky columns or the first column has a fixed pixel width\n if (stickyColumnHeaders.length > 1 || hasFirstColumnPxWidth) {\n leftOffset -= 1;\n }\n\n // offsets the left: -1px position if the sticky column is already pinned when the scroll indicator is calculated\n if (isStickyColumnPinned) {\n leftOffset -= 1;\n }\n }\n\n return {\n bottom: `${horizontalScrollBarHeight}px`,\n height: `${scrollWrapper.offsetHeight - horizontalScrollBarHeight}px`,\n left: `${leftOffset}px`,\n right: `${verticalScrollBarWidth}px`,\n width: `${scrollWrapper.offsetWidth - verticalScrollBarWidth}px`,\n };\n};\n\nconst getStickyColumnLeftOffset = (\n theadElement: HTMLDivElement,\n hasRowSelection: boolean,\n isStickyColumnPinned: boolean\n) => {\n // if there is no select checkbox column, the sticky column is all the way to the left\n if (!hasRowSelection) return '0px';\n\n const selectableCell = theadElement.querySelector(\n '.hds-advanced-table__th--is-selectable'\n ) as HTMLElement;\n\n let leftOffset = selectableCell?.offsetWidth ?? 0;\n\n // if the sticky column is pinned when the offset is calculated, we need to account for the increased width of the border\n if (isStickyColumnPinned && leftOffset > 0) {\n leftOffset -= 2;\n }\n\n return `${leftOffset}px`;\n};\n\nexport interface HdsAdvancedTableSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n caption?: string;\n columns: HdsAdvancedTableColumn[];\n columnOrder?: string[];\n density?: HdsAdvancedTableDensities;\n identityKey?: string;\n isSelectable?: boolean;\n isStriped?: boolean;\n model: HdsAdvancedTableModel;\n reorderedMessageText?: string;\n selectionAriaLabelSuffix?: string;\n sortBy?: string;\n selectableColumnKey?: string;\n sortedMessageText?: string;\n sortOrder?: HdsAdvancedTableThSortOrder;\n valign?: HdsAdvancedTableVerticalAlignment;\n hasReorderableColumns?: boolean;\n hasResizableColumns?: boolean;\n hasStickyHeader?: boolean;\n hasStickyFirstColumn?: boolean;\n childrenKey?: string;\n maxHeight?: string;\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onColumnResize?: (columnKey: string, newWidth?: string) => void;\n onSelectionChange?: (\n selection: HdsAdvancedTableOnSelectionChangeSignature\n ) => void;\n onSort?: (sortBy: string, sortOrder: HdsAdvancedTableThSortOrder) => void;\n };\n Blocks: {\n body?: [\n {\n Td?: WithBoundArgs<typeof HdsAdvancedTableTd, 'align'>;\n Tr?: WithBoundArgs<\n typeof HdsAdvancedTableTr,\n | 'selectionScope'\n | 'isLastRow'\n | 'isSelectable'\n | 'onSelectionChange'\n | 'didInsert'\n | 'willDestroy'\n | 'selectionAriaLabelSuffix'\n | 'hasStickyColumn'\n | 'isStickyColumnPinned'\n | 'isParentRow'\n | 'depth'\n | 'displayRow'\n >;\n Th?: WithBoundArgs<\n typeof HdsAdvancedTableTh,\n | 'depth'\n | 'isExpandable'\n | 'isExpanded'\n | 'newLabel'\n | 'parentId'\n | 'scope'\n | 'isStickyColumn'\n | 'isStickyColumnPinned'\n | 'onClickToggle'\n >;\n data?: Record<string, unknown>;\n rowIndex?: number | string;\n isOpen?: HdsAdvancedTableExpandState;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTable extends Component<HdsAdvancedTableSignature> {\n @service hdsIntl!: HdsIntlService;\n\n @tracked\n private _selectAllCheckbox?: HdsFormCheckboxBaseSignature['Element'] =\n undefined;\n @tracked private _isSelectAllCheckboxSelected?: boolean = undefined;\n @tracked private _tableHeight = 0;\n private _selectableRows: HdsAdvancedTableSelectableRow[] = [];\n private _captionId = 'caption-' + guidFor(this);\n private _tableModel!: HdsAdvancedTableTableModel;\n private _scrollHandler!: (event: Event) => void;\n private _resizeObserver!: ResizeObserver;\n private _theadElement!: HTMLDivElement;\n private _scrollWrapperElement!: HTMLDivElement;\n\n @tracked scrollIndicatorDimensions = DEFAULT_SCROLL_DIMENSIONS;\n @tracked isStickyColumnPinned = false;\n @tracked isStickyHeaderPinned = false;\n @tracked hasPinnedFirstColumn: boolean | undefined = undefined;\n @tracked reorderedMessageText = '';\n @tracked showScrollIndicatorLeft = false;\n @tracked showScrollIndicatorRight = false;\n @tracked showScrollIndicatorTop = false;\n @tracked showScrollIndicatorBottom = false;\n @tracked stickyColumnOffset = '0px';\n\n constructor(owner: Owner, args: HdsAdvancedTableSignature['Args']) {\n super(owner, args);\n\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n hasStickyFirstColumn,\n onSort,\n } = args;\n\n this._tableModel = new HdsAdvancedTableTableModel({\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder: this._onColumnReorder.bind(this),\n onSort,\n });\n\n this._runAssertions();\n\n if (hasStickyFirstColumn) {\n this.hasPinnedFirstColumn = true;\n }\n }\n\n get identityKey(): string | undefined {\n // we have to provide a way for the consumer to pass undefined because Ember tries to interpret undefined as missing an arg and therefore falls back to the default\n if (this.args.identityKey === 'none') {\n return undefined;\n } else {\n return this.args.identityKey ?? '@identity';\n }\n }\n\n get childrenKey(): string {\n const { childrenKey = 'children' } = this.args;\n\n return childrenKey;\n }\n\n get hasStickyFirstColumn(): boolean | undefined {\n // The user-controlled `hasPinnedFirstColumn` variable takes precedence over the model's `hasStickyFirstColumn` property.\n if (this.hasPinnedFirstColumn !== undefined) {\n return this.hasPinnedFirstColumn;\n } else if (this.args.hasStickyFirstColumn === false) {\n return this.args.hasStickyFirstColumn;\n }\n\n return undefined;\n }\n\n get hasScrollIndicator(): boolean {\n if (this.hasStickyFirstColumn) {\n return true;\n }\n\n return false;\n }\n\n get sortedMessageText(): string {\n const { sortedMessageText } = this.args;\n const { sortBy, sortOrder } = this._tableModel;\n\n if (sortedMessageText !== undefined) {\n return sortedMessageText;\n } else if (sortBy !== undefined && sortOrder !== undefined) {\n // we should allow the user to define a custom value here (e.g., for i18n) - tracked with HDS-965\n return `Sorted by ${sortBy} ${sortOrder}ending`;\n } else {\n return '';\n }\n }\n\n get isSelectable(): boolean {\n const { isSelectable = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isSelectable must not be true if there are nested rows.',\n !isSelectable\n );\n return isSelectable;\n }\n\n return isSelectable;\n }\n\n get isStriped(): boolean {\n const { isStriped = false } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n assert(\n '@isStriped must not be true if there are nested rows.',\n !isStriped\n );\n return isStriped;\n }\n\n return isStriped;\n }\n\n get density(): HdsAdvancedTableDensities {\n const { density = DEFAULT_DENSITY } = this.args;\n\n assert(\n `@density for \"Hds::Table\" must be one of the following: ${DENSITIES.join(\n ', '\n )}; received: ${density}`,\n DENSITIES.includes(density)\n );\n\n return density;\n }\n\n get hasStickyHeader(): boolean {\n if (this.args.maxHeight && this.args.hasStickyHeader !== false) {\n return true;\n } else if (this.args.hasStickyHeader && !this.args.maxHeight) {\n assert('Must set @maxHeight to use @hasStickyHeader.', false);\n }\n\n return false;\n }\n\n get valign(): HdsAdvancedTableVerticalAlignment {\n const { valign = DEFAULT_VALIGN } = this.args;\n\n assert(\n `@valign for \"Hds::Table\" must be one of the following: ${VALIGNMENTS.join(\n ', '\n )}; received: ${valign}`,\n VALIGNMENTS.includes(valign)\n );\n\n return valign;\n }\n\n // returns the grid-template-columns CSS attribute for the grid\n get gridTemplateColumns(): string {\n const { isSelectable } = this.args;\n const { orderedColumns } = this._tableModel;\n\n // if there is a select checkbox, the first column has a 'min-content' width to hug the checkbox content\n let style = isSelectable ? 'min-content ' : '';\n\n for (let i = 0; i < orderedColumns.length; i++) {\n style += ` ${orderedColumns[i]!.appliedWidth}`;\n }\n\n return style;\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table'];\n\n if (this.isStriped) {\n classes.push('hds-advanced-table--striped');\n }\n\n if (this.density) {\n classes.push(`hds-advanced-table--density-${this.density}`);\n }\n\n if (this.valign) {\n classes.push(`hds-advanced-table--valign-${this.valign}`);\n }\n\n if (this._tableModel.hasRowsWithChildren) {\n classes.push(`hds-advanced-table--nested`);\n }\n\n return classes.join(' ');\n }\n\n get theadClassNames(): string {\n const classes = ['hds-advanced-table__thead'];\n\n if (this.hasStickyHeader) {\n classes.push('hds-advanced-table__thead--sticky');\n }\n\n if (this.isStickyHeaderPinned) {\n classes.push('hds-advanced-table__thead--is-pinned');\n }\n\n if (this._tableModel.hasResizableColumns) {\n classes.push('hds-advanced-table__thead--has-resizable-columns');\n }\n\n return classes.join(' ');\n }\n\n private _registerGridElement = modifier((element: HTMLDivElement) => {\n this._tableModel.gridElement = element;\n });\n\n private _registerThElement = modifier(\n (element: HTMLDivElement, [column]: [HdsAdvancedTableColumnType]) => {\n if (column === undefined) {\n return;\n }\n\n column.thElement = element;\n }\n );\n\n private _setUpScrollWrapper = modifier((element: HTMLDivElement) => {\n this._scrollWrapperElement = element;\n\n const updateHorizontalScrollIndicators = () => {\n this.showScrollIndicatorRight = element.clientWidth < element.scrollWidth;\n };\n\n this._scrollHandler = () => {\n this._updateScrollIndicators(element);\n };\n\n element.addEventListener('scroll', this._scrollHandler);\n\n const updateMeasurements = () => {\n this._tableHeight = element.offsetHeight;\n\n const hasFirstColumnPxWidth =\n this._tableModel.columns[0]?.pxWidth !== undefined;\n\n this.scrollIndicatorDimensions = getScrollIndicatorDimensions(\n element,\n this._theadElement,\n this.hasStickyFirstColumn ? true : false,\n hasFirstColumnPxWidth,\n this.isStickyColumnPinned\n );\n\n if (this.hasStickyFirstColumn) {\n this.stickyColumnOffset = getStickyColumnLeftOffset(\n this._theadElement,\n isSelectable,\n this.isStickyColumnPinned\n );\n }\n };\n\n const { isSelectable = false } = this.args;\n\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach(() => {\n updateMeasurements();\n updateHorizontalScrollIndicators();\n });\n });\n\n this._resizeObserver.observe(element);\n\n updateMeasurements();\n\n // on render check if should show right scroll indicator\n updateHorizontalScrollIndicators();\n\n // on render check if should show bottom scroll indicator\n if (element.clientHeight < element.scrollHeight) {\n this.showScrollIndicatorBottom = true;\n }\n\n return () => {\n element.removeEventListener('scroll', this._scrollHandler);\n this._resizeObserver.disconnect();\n };\n });\n\n private _runAssertions() {\n const {\n columns,\n hasReorderableColumns,\n hasResizableColumns,\n hasStickyFirstColumn,\n } = this.args;\n\n if (this._tableModel.hasRowsWithChildren) {\n const sortableColumns = columns.filter((column) => column.isSortable);\n const sortableColumnLabels = sortableColumns.map(\n (column) => column.label\n );\n\n assert(\n 'Cannot have reorderable columns if there are nested rows.',\n !hasReorderableColumns\n );\n\n assert(\n `Cannot have sortable columns if there are nested rows. Sortable columns are ${sortableColumnLabels.toString()}`,\n sortableColumns.length === 0\n );\n\n assert(\n 'Cannot have a sticky first column if there are nested rows.',\n hasStickyFirstColumn === undefined\n );\n\n assert(\n `Cannot have resizable columns if there are nested rows.`,\n !hasResizableColumns\n );\n }\n\n if (hasReorderableColumns) {\n assert(\n 'Cannot have both reorderable columns and a sticky first column.',\n hasStickyFirstColumn === undefined\n );\n }\n }\n\n private _setUpThead = modifier((element: HTMLDivElement) => {\n this._theadElement = element;\n });\n\n private _onColumnReorder: HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n }) => {\n // Guard against accessing hdsIntl service after component destruction\n if (this.isDestroying || this.isDestroyed) return;\n\n const { reorderedMessageText } = this.args;\n\n if (reorderedMessageText !== undefined) {\n this.reorderedMessageText = reorderedMessageText;\n } else {\n const newPosition = insertedAt + 1;\n const translatedReorderedMessageText = this.hdsIntl.t(\n 'hds.advanced-table.reordered-message',\n {\n default: `Moved ${column.label} column to position ${newPosition}`,\n columnLabel: column.label,\n newPosition,\n }\n );\n\n this.reorderedMessageText = translatedReorderedMessageText;\n }\n\n this.args.onColumnReorder?.({\n column,\n newOrder,\n insertedAt,\n });\n };\n\n onSelectionChangeCallback(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n const { onSelectionChange } = this.args;\n\n if (typeof onSelectionChange !== 'function') return;\n\n onSelectionChange({\n selectionKey: selectionKey,\n selectionCheckboxElement: checkbox,\n selectedRowsKeys: this._selectableRows.reduce<string[]>((acc, row) => {\n if (row.checkbox.checked) {\n acc.push(row.selectionKey);\n }\n return acc;\n }, []),\n selectableRowsStates: this._selectableRows.reduce(\n (\n acc: { selectionKey: string; isSelected: boolean | undefined }[],\n row\n ) => {\n acc.push({\n selectionKey: row.selectionKey,\n isSelected: row.checkbox.checked,\n });\n return acc;\n },\n []\n ),\n });\n }\n\n @action\n setupTableModelData(): void {\n const { columns, model, sortBy, sortOrder } = this.args;\n\n this._tableModel.setupData({\n columns,\n model,\n sortBy,\n sortOrder,\n });\n }\n\n @action\n updateTableModelColumnOrder(): void {\n if (this.args.columnOrder === undefined) {\n return;\n }\n\n this._tableModel.columnOrder = this.args.columnOrder;\n }\n\n @action\n onSelectionAllChange(): void {\n this._selectableRows.forEach((row) => {\n row.checkbox.checked = this._selectAllCheckbox?.checked ?? false;\n });\n this._isSelectAllCheckboxSelected =\n this._selectAllCheckbox?.checked ?? false;\n this.onSelectionChangeCallback(this._selectAllCheckbox, 'all');\n }\n\n @action\n onSelectionRowChange(\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n this.setSelectAllState();\n this.onSelectionChangeCallback(checkbox, selectionKey);\n }\n\n @action\n didInsertSelectAllCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element']\n ): void {\n this._selectAllCheckbox = checkbox;\n }\n\n @action\n willDestroySelectAllCheckbox(): void {\n this._selectAllCheckbox = undefined;\n }\n\n @action\n didInsertRowCheckbox(\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ): void {\n if (selectionKey) {\n this._selectableRows.push({ selectionKey, checkbox });\n }\n this.setSelectAllState();\n }\n\n @action\n willDestroyRowCheckbox(selectionKey?: string): void {\n if (selectionKey === undefined) {\n return;\n }\n\n const index = this._selectableRows.findIndex(\n (row) => row.selectionKey === selectionKey\n );\n\n if (index === -1) {\n return;\n }\n\n this._selectableRows.splice(index, 1);\n\n this.setSelectAllState();\n }\n\n @action\n setSelectAllState(): void {\n if (this._selectAllCheckbox) {\n const selectableRowsCount = this._selectableRows.length;\n const selectedRowsCount = this._selectableRows.filter(\n (row) => row.checkbox.checked\n ).length;\n\n this._selectAllCheckbox.checked =\n selectedRowsCount === selectableRowsCount;\n this._selectAllCheckbox.indeterminate =\n selectedRowsCount > 0 && selectedRowsCount < selectableRowsCount;\n this._isSelectAllCheckboxSelected = this._selectAllCheckbox.checked;\n }\n }\n\n private _updateScrollIndicators(element: HTMLElement): void {\n // 6px as a buffer so the shadow doesn't appear over the border radius on the edge of the table\n const SCROLL_BUFFER = 6;\n\n // left scroll indicator and sticky column styles\n if (element.scrollLeft > SCROLL_BUFFER) {\n if (this.hasStickyFirstColumn) {\n this.isStickyColumnPinned = true;\n }\n if (!this.showScrollIndicatorLeft) {\n this.showScrollIndicatorLeft = true;\n }\n } else if (element.scrollLeft === 0 && this.showScrollIndicatorLeft) {\n this.isStickyColumnPinned = false;\n this.showScrollIndicatorLeft = false;\n }\n\n // the right edge is how far the user can scroll, which is the full width of the table - the visible section of the table (also subtract the buffer)\n const rightEdge = element.scrollWidth - element.clientWidth - SCROLL_BUFFER;\n\n // right scroll indicator\n if (element.scrollLeft < rightEdge) {\n this.showScrollIndicatorRight = true;\n } else {\n this.showScrollIndicatorRight = false;\n }\n\n // sticky header\n if (element.scrollTop > 0) {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = true;\n }\n this.showScrollIndicatorTop = true;\n } else {\n if (this.hasStickyHeader) {\n this.isStickyHeaderPinned = false;\n }\n this.showScrollIndicatorTop = false;\n }\n\n // the bottom edge is how far the user can scroll, which is the full height of the table - the visible section of the table (also subtract the buffer)\n const bottomEdge =\n element.scrollHeight - element.clientHeight - SCROLL_BUFFER;\n\n // bottom scroll indicator\n if (element.scrollTop < bottomEdge) {\n this.showScrollIndicatorBottom = true;\n } else {\n this.showScrollIndicatorBottom = false;\n }\n }\n\n private _onPinFirstColumn = (): void => {\n this.hasPinnedFirstColumn = this.hasPinnedFirstColumn ? false : true;\n // we need to retrigger the scroll indicator updates if the pinned state is changed when the table is already scrolled\n this._updateScrollIndicators(this._scrollWrapperElement);\n };\n\n private _isStickyColumn = (\n column: HdsAdvancedTableColumnType\n ): boolean | undefined => {\n if (column.isFirst && this.hasStickyFirstColumn !== undefined) {\n return this.hasStickyFirstColumn;\n }\n return undefined;\n };\n}\n"],"names":["DENSITIES","Object","values","HdsAdvancedTableDensityValues","DEFAULT_DENSITY","Medium","VALIGNMENTS","HdsAdvancedTableVerticalAlignmentValues","DEFAULT_VALIGN","Top","BORDER_WIDTH","DEFAULT_SCROLL_DIMENSIONS","bottom","height","left","right","width","getScrollIndicatorDimensions","scrollWrapper","theadElement","hasStickyFirstColumn","hasFirstColumnPxWidth","isStickyColumnPinned","horizontalScrollBarHeight","offsetHeight","clientHeight","verticalScrollBarWidth","offsetWidth","clientWidth","leftOffset","stickyColumnHeaders","querySelectorAll","forEach","el","elAsHTMLElement","length","getStickyColumnLeftOffset","hasRowSelection","selectableCell","querySelector","HdsAdvancedTable","Component","g","prototype","service","i","void 0","tracked","undefined","_selectableRows","_captionId","guidFor","_tableModel","_scrollHandler","_resizeObserver","_theadElement","_scrollWrapperElement","constructor","owner","args","model","columns","columnOrder","childrenKey","hasReorderableColumns","hasResizableColumns","sortBy","sortOrder","onSort","HdsAdvancedTableTableModel","onColumnReorder","_onColumnReorder","bind","_runAssertions","hasPinnedFirstColumn","identityKey","hasScrollIndicator","sortedMessageText","isSelectable","hasRowsWithChildren","assert","isStriped","density","join","includes","hasStickyHeader","maxHeight","valign","gridTemplateColumns","orderedColumns","style","appliedWidth","classNames","classes","push","theadClassNames","isStickyHeaderPinned","_registerGridElement","modifier","element","gridElement","_registerThElement","column","thElement","_setUpScrollWrapper","updateHorizontalScrollIndicators","showScrollIndicatorRight","scrollWidth","_updateScrollIndicators","addEventListener","updateMeasurements","_tableHeight","pxWidth","scrollIndicatorDimensions","stickyColumnOffset","ResizeObserver","entries","observe","scrollHeight","showScrollIndicatorBottom","removeEventListener","disconnect","sortableColumns","filter","isSortable","sortableColumnLabels","map","label","toString","_setUpThead","newOrder","insertedAt","isDestroying","isDestroyed","reorderedMessageText","newPosition","translatedReorderedMessageText","hdsIntl","t","default","columnLabel","onSelectionChangeCallback","checkbox","selectionKey","onSelectionChange","selectionCheckboxElement","selectedRowsKeys","reduce","acc","row","checked","selectableRowsStates","isSelected","setupTableModelData","setupData","n","action","updateTableModelColumnOrder","onSelectionAllChange","_selectAllCheckbox","_isSelectAllCheckboxSelected","onSelectionRowChange","setSelectAllState","didInsertSelectAllCheckbox","willDestroySelectAllCheckbox","didInsertRowCheckbox","willDestroyRowCheckbox","index","findIndex","splice","selectableRowsCount","selectedRowsCount","indeterminate","SCROLL_BUFFER","scrollLeft","showScrollIndicatorLeft","rightEdge","scrollTop","showScrollIndicatorTop","bottomEdge","_onPinFirstColumn","_isStickyColumn","isFirst","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"column.js","sources":["../../../../../src/components/hds/advanced-table/models/column.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type { HdsAdvancedTableThReorderHandleSignature } from '../th-reorder-handle.ts';\nimport type HdsAdvancedTableModel from './table.ts';\nimport type { HdsDropdownToggleButtonSignature } from '../../dropdown/toggle/button.ts';\nimport type {\n HdsAdvancedTableCell,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableColumn as HdsAdvancedTableColumnType,\n} from '../types';\n\nexport const DEFAULT_WIDTH = '1fr'; // default to '1fr' to allow flexible width\nexport const DEFAULT_MIN_WIDTH = '150px';\nexport const DEFAULT_MAX_WIDTH = '800px';\n\nfunction isPxSize(value?: string): boolean {\n if (value === undefined) {\n return false;\n }\n\n return /^-?\\d+(\\.\\d+)?px$/.test(value);\n}\n\nfunction pxToNumber(pxString: string): number {\n return parseFloat(pxString.slice(0, -2));\n}\n\nexport default class HdsAdvancedTableColumn {\n @tracked label: string = '';\n @tracked align?: HdsAdvancedTableHorizontalAlignment = 'left';\n @tracked isBeingDragged: boolean = false;\n @tracked isExpandable?: boolean = false;\n @tracked isSortable?: boolean = false;\n @tracked isVisuallyHidden?: boolean = false;\n @tracked key: string;\n @tracked tooltip?: string = undefined;\n @tracked sortingFunction?: (a: unknown, b: unknown) => number = undefined;\n\n // elements\n @tracked thElement?: HTMLDivElement = undefined;\n @tracked\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'] =\n undefined;\n @tracked\n thContextMenuToggleElement?: HdsDropdownToggleButtonSignature['Element'] =\n undefined;\n\n // width properties\n @tracked transientWidth?: `${number}px` = undefined; // used for transient width changes\n @tracked width: string = DEFAULT_WIDTH;\n @tracked minWidth: `${number}px` = DEFAULT_MIN_WIDTH;\n @tracked maxWidth: `${number}px` = DEFAULT_MAX_WIDTH;\n @tracked originalWidth: string = this.width; // used to restore the width when resetting\n @tracked widthDebts: Record<string, number> = {}; // used to track width changes imposed by other columns\n\n table: HdsAdvancedTableModel;\n\n get cells(): HdsAdvancedTableCell[] {\n return this.table.flattenedVisibleRows.map((row) => {\n const cell = row.cells.find((cell) => cell.columnKey === this.key);\n\n return cell!;\n });\n }\n\n get appliedWidth(): string {\n return this.transientWidth ?? this.width;\n }\n get pxAppliedWidth(): number | undefined {\n if (isPxSize(this.appliedWidth)) {\n return pxToNumber(this.appliedWidth);\n }\n }\n\n get pxTransientWidth(): number | undefined {\n if (this.transientWidth !== undefined) {\n return pxToNumber(this.transientWidth);\n }\n }\n set pxTransientWidth(value: number | undefined) {\n if (value !== undefined && value >= 0) {\n this.transientWidth = `${value}px`;\n } else {\n this.transientWidth = undefined;\n }\n }\n\n get pxWidth(): number {\n if (isPxSize(this.width)) {\n return pxToNumber(this.width);\n } else {\n return this.thElement?.offsetWidth ?? 0;\n }\n }\n set pxWidth(value: number) {\n this.width = `${value}px`;\n }\n\n get pxMinWidth(): number {\n return isPxSize(this.minWidth) ? pxToNumber(this.minWidth) : 0;\n }\n\n get pxMaxWidth(): number {\n return isPxSize(this.maxWidth) ? pxToNumber(this.maxWidth) : Infinity;\n }\n\n get index(): number {\n const { orderedColumns } = this.table;\n\n if (orderedColumns.length === 0) {\n return -1;\n }\n\n return orderedColumns.findIndex((column) => column.key === this.key);\n }\n\n get isFirst(): boolean {\n return this.index === 0;\n }\n\n get isLast(): boolean {\n return this.index !== -1 && this.index === this.table.columns.length - 1;\n }\n\n get siblings(): {\n previous?: HdsAdvancedTableColumn;\n next?: HdsAdvancedTableColumn;\n } {\n const { index, table } = this;\n const { orderedColumns } = table;\n\n if (index === -1) {\n return {};\n }\n\n return {\n previous: this.isFirst ? undefined : orderedColumns[index - 1],\n next: this.isLast ? undefined : orderedColumns[index + 1],\n };\n }\n\n constructor(args: {\n column: HdsAdvancedTableColumnType;\n table: HdsAdvancedTableModel;\n }) {\n const { column, table } = args;\n\n // set reference to table model\n this.table = table;\n\n // set column properties\n this.label = column.label;\n this.align = column.align ?? 'left';\n this.isExpandable = 'isExpandable' in column ? column.isExpandable : false;\n this.isSortable = column.isSortable ?? false;\n this.isVisuallyHidden = column.isVisuallyHidden ?? false;\n this.key = column.key ?? guidFor(this);\n this.tooltip = column.tooltip;\n this._setWidthValues(column);\n this.sortingFunction = column.sortingFunction;\n }\n\n // main collection function\n private collectWidthDebts(): void {\n this.table.columns.forEach((debtor) => {\n const debtToCollect = debtor.widthDebts[this.key] ?? 0;\n\n if (debtToCollect <= 0) {\n return;\n }\n\n const amountPaid = debtor._sourceFundsForPayment(debtToCollect);\n\n if (amountPaid > 0) {\n this.pxWidth = (this.pxWidth ?? 0) + amountPaid;\n\n const remainingDebt = debtToCollect - amountPaid;\n\n if (remainingDebt > 0) {\n debtor.widthDebts[this.key] = remainingDebt;\n } else {\n delete debtor.widthDebts[this.key];\n }\n }\n });\n }\n\n // function for recursively recovering width debts without ending up in a deficit\n private _sourceFundsForPayment(amountNeeded: number): number {\n let fundsSourced = 0;\n\n // preferentially source width from our own surplus first\n const surplus = Math.max(0, (this.pxWidth ?? 0) - this.pxMinWidth);\n const paymentFromSurplus = Math.min(amountNeeded, surplus);\n\n if (paymentFromSurplus > 0) {\n this.pxWidth = (this.pxWidth ?? 0) - paymentFromSurplus;\n\n fundsSourced = fundsSourced + paymentFromSurplus;\n }\n\n // if we dont have enough to cover, source from debtors recursively\n const shortfall = amountNeeded - fundsSourced;\n\n if (shortfall > 0) {\n const ourDebtors = this.table.columns.filter(\n (column) => column.widthDebts[this.key]\n );\n\n for (const subDebtor of ourDebtors) {\n const amountStillNeeded = amountNeeded - fundsSourced;\n\n if (amountStillNeeded <= 0) {\n break;\n }\n\n const subDebtOwed = subDebtor.widthDebts[this.key] ?? 0;\n const amountToRequest = Math.min(amountStillNeeded, subDebtOwed);\n\n const collectedFromSubDebtor =\n subDebtor._sourceFundsForPayment(amountToRequest);\n\n if (collectedFromSubDebtor > 0) {\n fundsSourced = fundsSourced + collectedFromSubDebtor;\n\n // Update the sub-debtor's ledger.\n const remainingSubDebt = subDebtOwed - collectedFromSubDebtor;\n\n if (remainingSubDebt > 0) {\n subDebtor.widthDebts[this.key] = remainingSubDebt;\n } else {\n delete subDebtor.widthDebts[this.key];\n }\n }\n }\n }\n\n return fundsSourced;\n }\n\n private payWidthDebts(): void {\n Object.entries(this.widthDebts).forEach(([lenderKey, amount]) => {\n const lender = this.table.getColumnByKey(lenderKey);\n\n if (lender !== undefined) {\n // Give the width back to the column that lent it to us\n lender.pxWidth = (lender.pxWidth ?? 0) + amount;\n }\n });\n\n // Clear our own debt ledger, as we've paid everyone back\n this.widthDebts = {};\n }\n\n private settleWidthDebts(): void {\n this.collectWidthDebts();\n this.payWidthDebts();\n }\n\n // set initial width values\n private _setWidthValues({\n width,\n minWidth,\n maxWidth,\n }: HdsAdvancedTableColumnType): void {\n this.width = width ?? DEFAULT_WIDTH;\n\n // capture the width at the time of instantiation so it can be restored\n this.originalWidth = this.width;\n\n this.minWidth = minWidth ?? DEFAULT_MIN_WIDTH;\n this.maxWidth = maxWidth ?? DEFAULT_MAX_WIDTH;\n }\n\n @action focusReorderHandle(): void {\n if (this.thElement === undefined) {\n return;\n }\n\n // focus the th element first (parent) to ensure the handle is visible\n this.thElement.focus({ preventScroll: true });\n\n if (this.reorderHandleElement === undefined) {\n return;\n }\n\n // then focus the reorder handle element\n this.reorderHandleElement.focus();\n }\n\n // Sets the column width in pixels, ensuring it respects the min and max width constraints.\n setPxTransientWidth(newPxWidth: number): void {\n const pxMinWidth = this.pxMinWidth ?? 1;\n const minLimitedPxWidth = Math.max(newPxWidth, pxMinWidth);\n\n this.pxTransientWidth =\n this.pxMaxWidth !== undefined\n ? Math.min(minLimitedPxWidth, this.pxMaxWidth)\n : minLimitedPxWidth;\n\n if (this.key === undefined) {\n return;\n }\n }\n\n @action\n restoreWidth(): void {\n this.settleWidthDebts();\n\n this.width = this.originalWidth;\n }\n}\n"],"names":["DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","isPxSize","value","undefined","test","pxToNumber","pxString","parseFloat","slice","HdsAdvancedTableColumn","g","prototype","tracked","i","width","table","cells","flattenedVisibleRows","map","row","cell","find","columnKey","key","appliedWidth","transientWidth","pxAppliedWidth","pxTransientWidth","pxWidth","thElement","offsetWidth","pxMinWidth","minWidth","pxMaxWidth","maxWidth","Infinity","index","orderedColumns","length","findIndex","column","isFirst","isLast","columns","siblings","previous","next","constructor","args","label","align","isExpandable","isSortable","isVisuallyHidden","guidFor","tooltip","_setWidthValues","sortingFunction","collectWidthDebts","forEach","debtor","debtToCollect","widthDebts","amountPaid","_sourceFundsForPayment","remainingDebt","amountNeeded","fundsSourced","surplus","Math","max","paymentFromSurplus","min","shortfall","ourDebtors","filter","subDebtor","amountStillNeeded","subDebtOwed","amountToRequest","collectedFromSubDebtor","remainingSubDebt","payWidthDebts","Object","entries","lenderKey","amount","lender","getColumnByKey","settleWidthDebts","originalWidth","focusReorderHandle","focus","preventScroll","reorderHandleElement","n","action","setPxTransientWidth","newPxWidth","minLimitedPxWidth","restoreWidth"],"mappings":";;;;;AAAA;AACA;AACA;AACA;;AAeO,MAAMA,aAAa,GAAG,MAAM;AAC5B,MAAMC,iBAAiB,GAAG;AAC1B,MAAMC,iBAAiB,GAAG;AAEjC,SAASC,QAAQA,CAACC,KAAc,EAAW;EACzC,IAAIA,KAAK,KAAKC,SAAS,EAAE;AACvB,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,OAAO,mBAAmB,CAACC,IAAI,CAACF,KAAK,CAAC;AACxC;AAEA,SAASG,UAAUA,CAACC,QAAgB,EAAU;EAC5C,OAAOC,UAAU,CAACD,QAAQ,CAACE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C;AAEe,MAAMC,sBAAsB,CAAC;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CACzCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAiB,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CAC1BC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA+C,MAAM;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CAC5DC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA2B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,eAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CACvCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA0B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,aAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,cAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CACtCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CACpCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA8B,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,iBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,KAAA,EAAA,CAC1CC,OAAO,CAAA,CAAA;AAAA;EAAA,IAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACPC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAoBT,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAU,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,iBAAA,EAAA,CACpCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwDT,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,gBAAA,IAAAU,CAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAGxEC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA8BT,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,UAAA,IAAAU,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAA,MAAA,EAAA;AAD/C,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CAECC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAENT,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,qBAAA,IAAAU,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,4BAAA,EAAA,CACVC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAENT,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,2BAAA,IAAAU,CAAA,CAAA,IAAA,EAAA,4BAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,gBAAA,EAAA,CAGVC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAkCT,SAAS;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,eAAA,IAAAU,CAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,EAAA,MAAA,EAAA;AADnD,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CAECC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAiBd,aAAa;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,MAAA,IAAAe,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA;AADe,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CAEpDC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA2Bb,iBAAiB;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,SAAA,IAAAc,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,UAAA,EAAA,CACnDC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA2BZ,iBAAiB;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,SAAA,IAAAa,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CACnDC,OAAO,CAAA,EAAA,YAAA;MAAA,OAAyB,IAAI,CAACE,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,cAAA,IAAAD,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CAC1CC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsC,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAA,MAAA,EAAA;AAAE;;EAElDE,KAAK;EAEL,IAAIC,KAAKA,GAA2B;IAClC,OAAO,IAAI,CAACD,KAAK,CAACE,oBAAoB,CAACC,GAAG,CAAEC,GAAG,IAAK;AAClD,MAAA,MAAMC,IAAI,GAAGD,GAAG,CAACH,KAAK,CAACK,IAAI,CAAED,IAAI,IAAKA,IAAI,CAACE,SAAS,KAAK,IAAI,CAACC,GAAG,CAAC;AAElE,MAAA,OAAOH,IAAI;AACb,IAAA,CAAC,CAAC;AACJ,EAAA;EAEA,IAAII,YAAYA,GAAW;AACzB,IAAA,OAAO,IAAI,CAACC,cAAc,IAAI,IAAI,CAACX,KAAK;AAC1C,EAAA;EACA,IAAIY,cAAcA,GAAuB;AACvC,IAAA,IAAIzB,QAAQ,CAAC,IAAI,CAACuB,YAAY,CAAC,EAAE;AAC/B,MAAA,OAAOnB,UAAU,CAAC,IAAI,CAACmB,YAAY,CAAC;AACtC,IAAA;AACF,EAAA;EAEA,IAAIG,gBAAgBA,GAAuB;AACzC,IAAA,IAAI,IAAI,CAACF,cAAc,KAAKtB,SAAS,EAAE;AACrC,MAAA,OAAOE,UAAU,CAAC,IAAI,CAACoB,cAAc,CAAC;AACxC,IAAA;AACF,EAAA;EACA,IAAIE,gBAAgBA,CAACzB,KAAyB,EAAE;AAC9C,IAAA,IAAIA,KAAK,KAAKC,SAAS,IAAID,KAAK,IAAI,CAAC,EAAE;AACrC,MAAA,IAAI,CAACuB,cAAc,GAAG,CAAA,EAAGvB,KAAK,CAAA,EAAA,CAAI;AACpC,IAAA,CAAC,MAAM;MACL,IAAI,CAACuB,cAAc,GAAGtB,SAAS;AACjC,IAAA;AACF,EAAA;EAEA,IAAIyB,OAAOA,GAAW;AACpB,IAAA,IAAI3B,QAAQ,CAAC,IAAI,CAACa,KAAK,CAAC,EAAE;AACxB,MAAA,OAAOT,UAAU,CAAC,IAAI,CAACS,KAAK,CAAC;AAC/B,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,IAAI,CAACe,SAAS,EAAEC,WAAW,IAAI,CAAC;AACzC,IAAA;AACF,EAAA;EACA,IAAIF,OAAOA,CAAC1B,KAAa,EAAE;AACzB,IAAA,IAAI,CAACY,KAAK,GAAG,CAAA,EAAGZ,KAAK,CAAA,EAAA,CAAI;AAC3B,EAAA;EAEA,IAAI6B,UAAUA,GAAW;AACvB,IAAA,OAAO9B,QAAQ,CAAC,IAAI,CAAC+B,QAAQ,CAAC,GAAG3B,UAAU,CAAC,IAAI,CAAC2B,QAAQ,CAAC,GAAG,CAAC;AAChE,EAAA;EAEA,IAAIC,UAAUA,GAAW;AACvB,IAAA,OAAOhC,QAAQ,CAAC,IAAI,CAACiC,QAAQ,CAAC,GAAG7B,UAAU,CAAC,IAAI,CAAC6B,QAAQ,CAAC,GAAGC,QAAQ;AACvE,EAAA;EAEA,IAAIC,KAAKA,GAAW;IAClB,MAAM;AAAEC,MAAAA;KAAgB,GAAG,IAAI,CAACtB,KAAK;AAErC,IAAA,IAAIsB,cAAc,CAACC,MAAM,KAAK,CAAC,EAAE;AAC/B,MAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,OAAOD,cAAc,CAACE,SAAS,CAAEC,MAAM,IAAKA,MAAM,CAACjB,GAAG,KAAK,IAAI,CAACA,GAAG,CAAC;AACtE,EAAA;EAEA,IAAIkB,OAAOA,GAAY;AACrB,IAAA,OAAO,IAAI,CAACL,KAAK,KAAK,CAAC;AACzB,EAAA;EAEA,IAAIM,MAAMA,GAAY;AACpB,IAAA,OAAO,IAAI,CAACN,KAAK,KAAK,EAAE,IAAI,IAAI,CAACA,KAAK,KAAK,IAAI,CAACrB,KAAK,CAAC4B,OAAO,CAACL,MAAM,GAAG,CAAC;AAC1E,EAAA;EAEA,IAAIM,QAAQA,GAGV;IACA,MAAM;MAAER,KAAK;AAAErB,MAAAA;AAAM,KAAC,GAAG,IAAI;IAC7B,MAAM;AAAEsB,MAAAA;AAAe,KAAC,GAAGtB,KAAK;AAEhC,IAAA,IAAIqB,KAAK,KAAK,EAAE,EAAE;AAChB,MAAA,OAAO,EAAE;AACX,IAAA;IAEA,OAAO;AACLS,MAAAA,QAAQ,EAAE,IAAI,CAACJ,OAAO,GAAGtC,SAAS,GAAGkC,cAAc,CAACD,KAAK,GAAG,CAAC,CAAC;MAC9DU,IAAI,EAAE,IAAI,CAACJ,MAAM,GAAGvC,SAAS,GAAGkC,cAAc,CAACD,KAAK,GAAG,CAAC;KACzD;AACH,EAAA;EAEAW,WAAWA,CAACC,IAGX,EAAE;IACD,MAAM;MAAER,MAAM;AAAEzB,MAAAA;AAAM,KAAC,GAAGiC,IAAI;;AAE9B;IACA,IAAI,CAACjC,KAAK,GAAGA,KAAK;;AAElB;AACA,IAAA,IAAI,CAACkC,KAAK,GAAGT,MAAM,CAACS,KAAK;AACzB,IAAA,IAAI,CAACC,KAAK,GAAGV,MAAM,CAACU,KAAK,IAAI,MAAM;IACnC,IAAI,CAACC,YAAY,GAAG,cAAc,IAAIX,MAAM,GAAGA,MAAM,CAACW,YAAY,GAAG,KAAK;AAC1E,IAAA,IAAI,CAACC,UAAU,GAAGZ,MAAM,CAACY,UAAU,IAAI,KAAK;AAC5C,IAAA,IAAI,CAACC,gBAAgB,GAAGb,MAAM,CAACa,gBAAgB,IAAI,KAAK;IACxD,IAAI,CAAC9B,GAAG,GAAGiB,MAAM,CAACjB,GAAG,IAAI+B,OAAO,CAAC,IAAI,CAAC;AACtC,IAAA,IAAI,CAACC,OAAO,GAAGf,MAAM,CAACe,OAAO;AAC7B,IAAA,IAAI,CAACC,eAAe,CAAChB,MAAM,CAAC;AAC5B,IAAA,IAAI,CAACiB,eAAe,GAAGjB,MAAM,CAACiB,eAAe;AAC/C,EAAA;;AAEA;AACQC,EAAAA,iBAAiBA,GAAS;IAChC,IAAI,CAAC3C,KAAK,CAAC4B,OAAO,CAACgB,OAAO,CAAEC,MAAM,IAAK;MACrC,MAAMC,aAAa,GAAGD,MAAM,CAACE,UAAU,CAAC,IAAI,CAACvC,GAAG,CAAC,IAAI,CAAC;MAEtD,IAAIsC,aAAa,IAAI,CAAC,EAAE;AACtB,QAAA;AACF,MAAA;AAEA,MAAA,MAAME,UAAU,GAAGH,MAAM,CAACI,sBAAsB,CAACH,aAAa,CAAC;MAE/D,IAAIE,UAAU,GAAG,CAAC,EAAE;QAClB,IAAI,CAACnC,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO,IAAI,CAAC,IAAImC,UAAU;AAE/C,QAAA,MAAME,aAAa,GAAGJ,aAAa,GAAGE,UAAU;QAEhD,IAAIE,aAAa,GAAG,CAAC,EAAE;UACrBL,MAAM,CAACE,UAAU,CAAC,IAAI,CAACvC,GAAG,CAAC,GAAG0C,aAAa;AAC7C,QAAA,CAAC,MAAM;AACL,UAAA,OAAOL,MAAM,CAACE,UAAU,CAAC,IAAI,CAACvC,GAAG,CAAC;AACpC,QAAA;AACF,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;EACQyC,sBAAsBA,CAACE,YAAoB,EAAU;IAC3D,IAAIC,YAAY,GAAG,CAAC;;AAEpB;AACA,IAAA,MAAMC,OAAO,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC1C,OAAO,IAAI,CAAC,IAAI,IAAI,CAACG,UAAU,CAAC;IAClE,MAAMwC,kBAAkB,GAAGF,IAAI,CAACG,GAAG,CAACN,YAAY,EAAEE,OAAO,CAAC;IAE1D,IAAIG,kBAAkB,GAAG,CAAC,EAAE;MAC1B,IAAI,CAAC3C,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO,IAAI,CAAC,IAAI2C,kBAAkB;MAEvDJ,YAAY,GAAGA,YAAY,GAAGI,kBAAkB;AAClD,IAAA;;AAEA;AACA,IAAA,MAAME,SAAS,GAAGP,YAAY,GAAGC,YAAY;IAE7C,IAAIM,SAAS,GAAG,CAAC,EAAE;MACjB,MAAMC,UAAU,GAAG,IAAI,CAAC3D,KAAK,CAAC4B,OAAO,CAACgC,MAAM,CACzCnC,MAAM,IAAKA,MAAM,CAACsB,UAAU,CAAC,IAAI,CAACvC,GAAG,CACxC,CAAC;AAED,MAAA,KAAK,MAAMqD,SAAS,IAAIF,UAAU,EAAE;AAClC,QAAA,MAAMG,iBAAiB,GAAGX,YAAY,GAAGC,YAAY;QAErD,IAAIU,iBAAiB,IAAI,CAAC,EAAE;AAC1B,UAAA;AACF,QAAA;QAEA,MAAMC,WAAW,GAAGF,SAAS,CAACd,UAAU,CAAC,IAAI,CAACvC,GAAG,CAAC,IAAI,CAAC;QACvD,MAAMwD,eAAe,GAAGV,IAAI,CAACG,GAAG,CAACK,iBAAiB,EAAEC,WAAW,CAAC;AAEhE,QAAA,MAAME,sBAAsB,GAC1BJ,SAAS,CAACZ,sBAAsB,CAACe,eAAe,CAAC;QAEnD,IAAIC,sBAAsB,GAAG,CAAC,EAAE;UAC9Bb,YAAY,GAAGA,YAAY,GAAGa,sBAAsB;;AAEpD;AACA,UAAA,MAAMC,gBAAgB,GAAGH,WAAW,GAAGE,sBAAsB;UAE7D,IAAIC,gBAAgB,GAAG,CAAC,EAAE;YACxBL,SAAS,CAACd,UAAU,CAAC,IAAI,CAACvC,GAAG,CAAC,GAAG0D,gBAAgB;AACnD,UAAA,CAAC,MAAM;AACL,YAAA,OAAOL,SAAS,CAACd,UAAU,CAAC,IAAI,CAACvC,GAAG,CAAC;AACvC,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,OAAO4C,YAAY;AACrB,EAAA;AAEQe,EAAAA,aAAaA,GAAS;AAC5BC,IAAAA,MAAM,CAACC,OAAO,CAAC,IAAI,CAACtB,UAAU,CAAC,CAACH,OAAO,CAAC,CAAC,CAAC0B,SAAS,EAAEC,MAAM,CAAC,KAAK;MAC/D,MAAMC,MAAM,GAAG,IAAI,CAACxE,KAAK,CAACyE,cAAc,CAACH,SAAS,CAAC;MAEnD,IAAIE,MAAM,KAAKpF,SAAS,EAAE;AACxB;QACAoF,MAAM,CAAC3D,OAAO,GAAG,CAAC2D,MAAM,CAAC3D,OAAO,IAAI,CAAC,IAAI0D,MAAM;AACjD,MAAA;AACF,IAAA,CAAC,CAAC;;AAEF;AACA,IAAA,IAAI,CAACxB,UAAU,GAAG,EAAE;AACtB,EAAA;AAEQ2B,EAAAA,gBAAgBA,GAAS;IAC/B,IAAI,CAAC/B,iBAAiB,EAAE;IACxB,IAAI,CAACwB,aAAa,EAAE;AACtB,EAAA;;AAEA;AACQ1B,EAAAA,eAAeA,CAAC;IACtB1C,KAAK;IACLkB,QAAQ;AACRE,IAAAA;AAC0B,GAAC,EAAQ;AACnC,IAAA,IAAI,CAACpB,KAAK,GAAGA,KAAK,IAAIhB,aAAa;;AAEnC;AACA,IAAA,IAAI,CAAC4F,aAAa,GAAG,IAAI,CAAC5E,KAAK;AAE/B,IAAA,IAAI,CAACkB,QAAQ,GAAGA,QAAQ,IAAIjC,iBAAiB;AAC7C,IAAA,IAAI,CAACmC,QAAQ,GAAGA,QAAQ,IAAIlC,iBAAiB;AAC/C,EAAA;AAEQ2F,EAAAA,kBAAkBA,GAAS;AACjC,IAAA,IAAI,IAAI,CAAC9D,SAAS,KAAK1B,SAAS,EAAE;AAChC,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAAC0B,SAAS,CAAC+D,KAAK,CAAC;AAAEC,MAAAA,aAAa,EAAE;AAAK,KAAC,CAAC;AAE7C,IAAA,IAAI,IAAI,CAACC,oBAAoB,KAAK3F,SAAS,EAAE;AAC3C,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAAC2F,oBAAoB,CAACF,KAAK,EAAE;AACnC,EAAA;;AAEA;AAAA,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAApF,SAAA,EAAA,oBAAA,EAAA,CAhBCqF,MAAM,CAAA,CAAA;AAAA;EAiBPC,mBAAmBA,CAACC,UAAkB,EAAQ;AAC5C,IAAA,MAAMnE,UAAU,GAAG,IAAI,CAACA,UAAU,IAAI,CAAC;IACvC,MAAMoE,iBAAiB,GAAG9B,IAAI,CAACC,GAAG,CAAC4B,UAAU,EAAEnE,UAAU,CAAC;IAE1D,IAAI,CAACJ,gBAAgB,GACnB,IAAI,CAACM,UAAU,KAAK9B,SAAS,GACzBkE,IAAI,CAACG,GAAG,CAAC2B,iBAAiB,EAAE,IAAI,CAAClE,UAAU,CAAC,GAC5CkE,iBAAiB;AAEvB,IAAA,IAAI,IAAI,CAAC5E,GAAG,KAAKpB,SAAS,EAAE;AAC1B,MAAA;AACF,IAAA;AACF,EAAA;AAGAiG,EAAAA,YAAYA,GAAS;IACnB,IAAI,CAACX,gBAAgB,EAAE;AAEvB,IAAA,IAAI,CAAC3E,KAAK,GAAG,IAAI,CAAC4E,aAAa;AACjC,EAAA;AAAC,EAAA;IAAAK,CAAA,CAAA,IAAA,CAAApF,SAAA,EAAA,cAAA,EAAA,CALAqF,MAAM,CAAA,CAAA;AAAA;AAMT;;;;"}
1
+ {"version":3,"file":"column.js","sources":["../../../../../src/components/hds/advanced-table/models/column.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type { HdsAdvancedTableThReorderHandleSignature } from '../th-reorder-handle.ts';\nimport type HdsAdvancedTableModel from './table.ts';\nimport type { HdsDropdownToggleButtonSignature } from '../../dropdown/toggle/button.ts';\nimport type {\n HdsAdvancedTableCell,\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableColumn as HdsAdvancedTableColumnType,\n} from '../types';\n\nexport const DEFAULT_WIDTH = '1fr'; // default to '1fr' to allow flexible width\nexport const DEFAULT_MIN_WIDTH = '150px';\nexport const DEFAULT_MAX_WIDTH = '800px';\n\nfunction isPxSize(value?: string): boolean {\n if (value === undefined) {\n return false;\n }\n\n return /^-?\\d+(\\.\\d+)?px$/.test(value);\n}\n\nfunction pxToNumber(pxString: string): number {\n return parseFloat(pxString.slice(0, -2));\n}\n\nexport default class HdsAdvancedTableColumn {\n @tracked label: string = '';\n @tracked align?: HdsAdvancedTableHorizontalAlignment = 'left';\n @tracked isBeingDragged: boolean = false;\n @tracked isExpandable?: boolean = false;\n @tracked isSortable?: boolean = false;\n @tracked isVisuallyHidden?: boolean = false;\n @tracked key: string;\n @tracked tooltip?: string = undefined;\n @tracked sortingFunction?: (a: unknown, b: unknown) => number = undefined;\n\n // elements\n @tracked thElement?: HTMLDivElement = undefined;\n @tracked\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'] =\n undefined;\n @tracked\n thContextMenuToggleElement?: HdsDropdownToggleButtonSignature['Element'] =\n undefined;\n\n // width properties\n @tracked transientWidth?: `${number}px` = undefined; // used for transient width changes\n @tracked width: string = DEFAULT_WIDTH;\n @tracked minWidth: `${number}px` = DEFAULT_MIN_WIDTH;\n @tracked maxWidth: `${number}px` = DEFAULT_MAX_WIDTH;\n @tracked originalWidth: string = this.width; // used to restore the width when resetting\n @tracked widthDebts: Record<string, number> = {}; // used to track width changes imposed by other columns\n\n table: HdsAdvancedTableModel;\n\n get cells(): HdsAdvancedTableCell[] {\n return this.table.flattenedVisibleRows.map((row) => {\n const cell = row.cells.find((cell) => cell.columnKey === this.key);\n\n return cell!;\n });\n }\n\n get appliedWidth(): string {\n return this.transientWidth ?? this.width;\n }\n get pxAppliedWidth(): number | undefined {\n if (isPxSize(this.appliedWidth)) {\n return pxToNumber(this.appliedWidth);\n }\n }\n\n get pxTransientWidth(): number | undefined {\n if (this.transientWidth !== undefined) {\n return pxToNumber(this.transientWidth);\n }\n }\n set pxTransientWidth(value: number | undefined) {\n if (value !== undefined && value >= 0) {\n this.transientWidth = `${value}px`;\n } else {\n this.transientWidth = undefined;\n }\n }\n\n get pxWidth(): number {\n if (isPxSize(this.width)) {\n return pxToNumber(this.width);\n } else {\n return this.thElement?.offsetWidth ?? 0;\n }\n }\n set pxWidth(value: number) {\n this.width = `${value}px`;\n }\n\n get pxMinWidth(): number {\n return isPxSize(this.minWidth) ? pxToNumber(this.minWidth) : 0;\n }\n\n get pxMaxWidth(): number {\n return isPxSize(this.maxWidth) ? pxToNumber(this.maxWidth) : Infinity;\n }\n\n get index(): number {\n const { orderedColumns } = this.table;\n\n if (orderedColumns.length === 0) {\n return -1;\n }\n\n return orderedColumns.findIndex((column) => column.key === this.key);\n }\n\n get isFirst(): boolean {\n return this.index === 0;\n }\n\n get isLast(): boolean {\n return this.index !== -1 && this.index === this.table.columns.length - 1;\n }\n\n get siblings(): {\n previous?: HdsAdvancedTableColumn;\n next?: HdsAdvancedTableColumn;\n } {\n const { index, table } = this;\n const { orderedColumns } = table;\n\n if (index === -1) {\n return {};\n }\n\n return {\n previous: this.isFirst ? undefined : orderedColumns[index - 1],\n next: this.isLast ? undefined : orderedColumns[index + 1],\n };\n }\n\n constructor(args: {\n column: HdsAdvancedTableColumnType;\n table: HdsAdvancedTableModel;\n }) {\n const { column, table } = args;\n\n // set reference to table model\n this.table = table;\n\n // set column properties\n this.label = column.label;\n this.align = column.align ?? 'left';\n this.isExpandable = 'isExpandable' in column ? column.isExpandable : false;\n this.isSortable = column.isSortable ?? false;\n this.isVisuallyHidden = column.isVisuallyHidden ?? false;\n this.key = column.key ?? guidFor(this);\n this.tooltip = column.tooltip;\n this._setWidthValues(column);\n this.sortingFunction = column.sortingFunction;\n }\n\n // main collection function\n private collectWidthDebts(): void {\n this.table.columns.forEach((debtor) => {\n const debtToCollect = debtor.widthDebts[this.key] ?? 0;\n\n if (debtToCollect <= 0) {\n return;\n }\n\n const amountPaid = debtor._sourceFundsForPayment(debtToCollect);\n\n if (amountPaid > 0) {\n this.pxWidth = (this.pxWidth ?? 0) + amountPaid;\n\n const remainingDebt = debtToCollect - amountPaid;\n\n if (remainingDebt > 0) {\n debtor.widthDebts[this.key] = remainingDebt;\n } else {\n delete debtor.widthDebts[this.key];\n }\n }\n });\n }\n\n // function for recursively recovering width debts without ending up in a deficit\n private _sourceFundsForPayment(amountNeeded: number): number {\n let fundsSourced = 0;\n\n // preferentially source width from our own surplus first\n const surplus = Math.max(0, (this.pxWidth ?? 0) - this.pxMinWidth);\n const paymentFromSurplus = Math.min(amountNeeded, surplus);\n\n if (paymentFromSurplus > 0) {\n this.pxWidth = (this.pxWidth ?? 0) - paymentFromSurplus;\n\n fundsSourced = fundsSourced + paymentFromSurplus;\n }\n\n // if we dont have enough to cover, source from debtors recursively\n const shortfall = amountNeeded - fundsSourced;\n\n if (shortfall > 0) {\n const ourDebtors = this.table.columns.filter(\n (column) => column.widthDebts[this.key]\n );\n\n for (const subDebtor of ourDebtors) {\n const amountStillNeeded = amountNeeded - fundsSourced;\n\n if (amountStillNeeded <= 0) {\n break;\n }\n\n const subDebtOwed = subDebtor.widthDebts[this.key] ?? 0;\n const amountToRequest = Math.min(amountStillNeeded, subDebtOwed);\n\n const collectedFromSubDebtor =\n subDebtor._sourceFundsForPayment(amountToRequest);\n\n if (collectedFromSubDebtor > 0) {\n fundsSourced = fundsSourced + collectedFromSubDebtor;\n\n // Update the sub-debtor's ledger.\n const remainingSubDebt = subDebtOwed - collectedFromSubDebtor;\n\n if (remainingSubDebt > 0) {\n subDebtor.widthDebts[this.key] = remainingSubDebt;\n } else {\n delete subDebtor.widthDebts[this.key];\n }\n }\n }\n }\n\n return fundsSourced;\n }\n\n private payWidthDebts(): void {\n Object.entries(this.widthDebts).forEach(([lenderKey, amount]) => {\n const lender = this.table.getColumnByKey(lenderKey);\n\n if (lender !== undefined) {\n // Give the width back to the column that lent it to us\n lender.pxWidth = (lender.pxWidth ?? 0) + amount;\n }\n });\n\n // Clear our own debt ledger, as we've paid everyone back\n this.widthDebts = {};\n }\n\n private settleWidthDebts(): void {\n this.collectWidthDebts();\n this.payWidthDebts();\n }\n\n // set initial width values\n private _setWidthValues({\n width,\n minWidth,\n maxWidth,\n }: HdsAdvancedTableColumnType): void {\n this.width = width ?? DEFAULT_WIDTH;\n\n // capture the width at the time of instantiation so it can be restored\n this.originalWidth = this.width;\n\n this.minWidth = minWidth ?? DEFAULT_MIN_WIDTH;\n this.maxWidth = maxWidth ?? DEFAULT_MAX_WIDTH;\n }\n\n @action focusReorderHandle(): void {\n if (this.thElement === undefined) {\n return;\n }\n\n // focus the th element first (parent) to ensure the handle is visible\n this.thElement.focus({ preventScroll: true });\n\n if (this.reorderHandleElement === undefined) {\n return;\n }\n\n // then focus the reorder handle element\n this.reorderHandleElement.focus();\n }\n\n // Sets the column width in pixels, ensuring it respects the min and max width constraints.\n setPxTransientWidth(newPxWidth: number): void {\n const pxMinWidth = this.pxMinWidth ?? 1;\n const minLimitedPxWidth = Math.max(newPxWidth, pxMinWidth);\n\n this.pxTransientWidth =\n this.pxMaxWidth !== undefined\n ? Math.min(minLimitedPxWidth, this.pxMaxWidth)\n : minLimitedPxWidth;\n\n if (this.key === undefined) {\n return;\n }\n }\n\n @action\n restoreWidth(): void {\n this.settleWidthDebts();\n\n this.width = this.originalWidth;\n }\n}\n"],"names":["DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","isPxSize","value","undefined","test","pxToNumber","pxString","parseFloat","slice","HdsAdvancedTableColumn","g","prototype","tracked","i","void 0","width","table","cells","flattenedVisibleRows","map","row","cell","find","columnKey","key","appliedWidth","transientWidth","pxAppliedWidth","pxTransientWidth","pxWidth","thElement","offsetWidth","pxMinWidth","minWidth","pxMaxWidth","maxWidth","Infinity","index","orderedColumns","length","findIndex","column","isFirst","isLast","columns","siblings","previous","next","constructor","args","label","align","isExpandable","isSortable","isVisuallyHidden","guidFor","tooltip","_setWidthValues","sortingFunction","collectWidthDebts","forEach","debtor","debtToCollect","widthDebts","amountPaid","_sourceFundsForPayment","remainingDebt","amountNeeded","fundsSourced","surplus","Math","max","paymentFromSurplus","min","shortfall","ourDebtors","filter","subDebtor","amountStillNeeded","subDebtOwed","amountToRequest","collectedFromSubDebtor","remainingSubDebt","payWidthDebts","Object","entries","lenderKey","amount","lender","getColumnByKey","settleWidthDebts","originalWidth","focusReorderHandle","focus","preventScroll","reorderHandleElement","n","action","setPxTransientWidth","newPxWidth","minLimitedPxWidth","restoreWidth"],"mappings":"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"}