@digital-realty/ix-account-switcher 1.2.10 → 1.2.12

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.
@@ -33,6 +33,7 @@ export declare class IxAccountSwitcher extends LitElement {
33
33
  keyValue: string;
34
34
  treeData: any;
35
35
  private enableFetchPage;
36
+ selectedNodeRef: HTMLElement | null;
36
37
  updated: (changedProperties: Map<string | symbol, unknown>) => Promise<void>;
37
38
  private awaitUpdateComplete;
38
39
  private filterVisibleAccounts;
@@ -55,6 +55,7 @@ export class IxAccountSwitcher extends LitElement {
55
55
  this.keyValue = '';
56
56
  this.treeData = mapAccountsToTreeNode(this.accounts, '');
57
57
  this.enableFetchPage = false;
58
+ this.selectedNodeRef = null;
58
59
  this.updated = async (changedProperties) => {
59
60
  var _a, _b;
60
61
  super.updated(changedProperties);
@@ -202,20 +203,16 @@ export class IxAccountSwitcher extends LitElement {
202
203
  this.scrollSelectedAccountIntoView();
203
204
  };
204
205
  this.scrollSelectedAccountIntoView = async () => {
205
- var _a;
206
206
  await this.awaitUpdateComplete();
207
+ if (!this.selectedNodeRef || !this.selectedNodeRef.isConnected)
208
+ return;
207
209
  // scroll selected account into view
208
- const accountIndex = this.accounts.findIndex(i => i.id === this.selectedAccountNumber);
209
- const tree = this.accountTree.querySelector('ix-tree');
210
- if (tree.shadowRoot) {
211
- const treeContainer = tree.shadowRoot.querySelector('.ix-tree-container');
212
- (_a = treeContainer.children[accountIndex]) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
213
- block: 'start',
214
- });
215
- // Adjust scroll position slightly to ensure can scroll
216
- this.accountTree.scrollTop -= 4;
217
- this.scrollTop = this.accountTree.scrollTop;
218
- }
210
+ this.selectedNodeRef.scrollIntoView({
211
+ block: 'start',
212
+ });
213
+ // Adjust scroll position slightly to ensure can scroll
214
+ this.accountTree.scrollTop -= 4;
215
+ this.scrollTop = this.accountTree.scrollTop;
219
216
  };
220
217
  this.closeDialog = () => {
221
218
  this.showDialog = false;
@@ -257,6 +254,9 @@ export class IxAccountSwitcher extends LitElement {
257
254
  .rootNode=${this.treeData}
258
255
  selectedNodeId=${this.selectedAccountNumber}
259
256
  ?allowMultiline=${true}
257
+ @selected-node-ref=${(e) => {
258
+ this.selectedNodeRef = e.detail;
259
+ }}
260
260
  @on-tree-node-selected=${(e) => {
261
261
  if (e.detail.message.id === this.selectedAccountNumber) {
262
262
  this.closeDialog();
@@ -481,4 +481,7 @@ __decorate([
481
481
  __decorate([
482
482
  state()
483
483
  ], IxAccountSwitcher.prototype, "enableFetchPage", void 0);
484
+ __decorate([
485
+ state()
486
+ ], IxAccountSwitcher.prototype, "selectedNodeRef", void 0);
484
487
  //# sourceMappingURL=IxAccountSwitcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IxAccountSwitcher.js","sourceRoot":"","sources":["../src/IxAccountSwitcher.ts"],"names":[],"mappings":"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","sourcesContent":["import '@digital-realty/ix-dialog/ix-dialog.js';\nimport '@digital-realty/ix-field/ix-field.js';\nimport '@digital-realty/ix-icon-button/ix-icon-button.js';\nimport '@digital-realty/ix-label-tag/ix-label-tag.js';\nimport '@digital-realty/ix-progress/ix-progress.js';\nimport '@digital-realty/ix-select/ix-select.js';\nimport '@digital-realty/ix-select/ix-select-option.js';\nimport '@digital-realty/ix-textbox/ix-textbox.js';\nimport '@digital-realty/ix-tree/ix-tree.js';\nimport { html, LitElement, nothing, TemplateResult } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport findAccountById from './utils/find-account-by-id.js';\nimport { mapAccountsToTreeNode } from './utils/map-accounts-to-tree.js';\nimport type { NestedAccounts } from './types.js';\nimport { authedUser } from './state/authedUser.js';\nimport { findAccountHierarchy } from './utils/account-hierarchy-util.js';\nimport { IxAccountSwitcherTestIds as TestIds } from './ix-account-switcher-test-ids.js';\n\nfunction debounce<T extends (...args: any[]) => void>(\n func: T,\n wait: number,\n immediate = false\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null;\n\n return function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n const context = this;\n\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n const callNow = immediate && !timeout;\n\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) func.apply(context, args);\n };\n}\n\nexport class IxAccountSwitcher extends LitElement {\n @query('#accountTree') readonly accountTree!: HTMLElement;\n\n @query('#searchInput') readonly searchInput!: HTMLElement;\n\n @property({ type: String, reflect: true }) selectedAccountNumber: string = '';\n\n @property({ type: Array }) accounts: NestedAccounts[] = [];\n\n @property({ type: Boolean }) prevDataAvailable: boolean = false;\n\n @property({ type: Boolean }) nextDataAvailable: boolean = false;\n\n @property({ type: Boolean }) disabled: boolean = false;\n\n @property({ type: Boolean }) enableFilterDialog: boolean = false;\n\n @state() showDialog: boolean = false;\n\n @state() visibleAccounts: NestedAccounts[] = [];\n\n @property({ type: Boolean }) loading: boolean = false;\n\n @state() scrollLoading: boolean = false;\n\n @state() prevScrollLoading: boolean = false;\n\n @state() displayFilters: boolean = false;\n\n @state() filterString: string = '';\n\n @state() selectedAccount?: NestedAccounts;\n\n @state() scrollTop: number = 0;\n\n @state() accountsLength: number = 0;\n\n @state() resettingInitialList: boolean = false;\n\n @state() rebuildingTree: boolean = false;\n\n @property() keyValue: string = '';\n\n @state() treeData: any = mapAccountsToTreeNode(this.accounts, '');\n\n @state() private enableFetchPage: boolean = false;\n\n updated = async (changedProperties: Map<string | symbol, unknown>) => {\n super.updated(changedProperties);\n\n if (changedProperties.has('accounts')) {\n this.loading = false;\n if (!this.selectedAccount) {\n // if not yet found from account number\n this.selectedAccount = this.getSelectedAccount();\n }\n\n authedUser.setAccountHierarchy(\n findAccountHierarchy(this.accounts, this.selectedAccountNumber)\n );\n this.filterVisibleAccounts();\n\n if (this.scrollLoading) {\n const hasPrevData = this.prevDataAvailable;\n this.prevDataAvailable = false;\n this.scrollLoading = false;\n await this.awaitUpdateComplete();\n this.getAnchorNode(this.accountsLength - 1)?.scrollIntoView({\n block: 'end',\n });\n this.prevDataAvailable = hasPrevData;\n this.accountTree.scrollTop += 20;\n } else if (this.prevScrollLoading) {\n this.prevScrollLoading = false;\n const accountIndex = this.accounts.length - this.accountsLength;\n await this.awaitUpdateComplete();\n this.getAnchorNode(accountIndex)?.scrollIntoView({ block: 'start' });\n this.accountTree.scrollTop -= 20;\n } else if (this.resettingInitialList) {\n await this.awaitUpdateComplete();\n this.scrollSelectedAccountIntoView();\n this.resettingInitialList = false;\n }\n }\n };\n\n private async awaitUpdateComplete() {\n await this.updateComplete;\n await new Promise(requestAnimationFrame);\n await new Promise(requestAnimationFrame);\n }\n\n private async filterVisibleAccounts() {\n this.treeData = mapAccountsToTreeNode(\n this.accounts,\n this.filterString.length > 2 ? this.filterString : undefined\n );\n\n this.rebuildingTree = true;\n await this.awaitUpdateComplete();\n this.rebuildingTree = false;\n }\n\n filterAccountsBySearchTerm = debounce(async (filterString: string) => {\n if (this.filterString.length < 3 && filterString.length < 3) {\n this.filterString = filterString;\n // no need to update tree\n return;\n }\n\n this.filterString = filterString;\n\n if (filterString.length < 3) {\n this.resettingInitialList = true;\n }\n\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: filterString.length < 3 ? '' : filterString,\n },\n bubbles: true,\n composed: true,\n })\n );\n\n this.loading = true;\n }, 300);\n\n getAnchorNode = (position: number) => {\n const tree = this.accountTree.querySelector('ix-tree') as HTMLElement;\n if (tree?.shadowRoot) {\n const treeContainer = tree.shadowRoot.querySelector(\n '.ix-tree-container'\n ) as HTMLElement;\n return treeContainer.children[position] as HTMLElement;\n }\n return null;\n };\n\n getMoreAccountsOnScroll = async (e: Event) => {\n if (!this.enableFetchPage) {\n this.enableFetchPage = true;\n return;\n }\n if (this.scrollLoading || this.prevScrollLoading || this.loading) return;\n\n const target = e.currentTarget as HTMLElement;\n const distanceToBottom =\n this.accountTree.scrollHeight -\n (target.clientHeight + this.accountTree.scrollTop);\n\n if (\n this.accountTree.scrollTop < this.scrollTop &&\n this.accountTree.scrollTop < 12\n ) {\n if (!this.prevDataAvailable) return;\n this.prevScrollLoading = true;\n this.accountsLength = this.accounts.length;\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: this.filterString,\n prev: true,\n },\n bubbles: true,\n composed: true,\n })\n );\n this.enableFetchPage = false;\n }\n\n if (this.accountTree.scrollTop > this.scrollTop && distanceToBottom < 2) {\n if (!this.nextDataAvailable) return;\n this.scrollLoading = true;\n await this.updateComplete;\n this.scrollTop = this.accountTree.scrollTop;\n this.accountsLength = this.accounts.length;\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: this.filterString,\n next: true,\n },\n bubbles: true,\n composed: true,\n })\n );\n this.enableFetchPage = false;\n }\n\n this.scrollTop = this.accountTree.scrollTop;\n };\n\n openDialog = () => {\n if (this.disabled) return;\n if (this.accounts.length === 0) {\n this.loading = true;\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: '',\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n this.showDialog = true;\n const el = this.searchInput as HTMLElement;\n if (el) {\n const inner = el.querySelector('md-filled-text-field');\n const field = inner?.shadowRoot?.querySelector('md-filled-field');\n const icon = field?.shadowRoot?.querySelector('.start') as HTMLElement;\n if (icon) {\n icon.style.minWidth = '32px';\n icon.style.color = 'rgba(9, 34, 65, 0.7)';\n }\n if (field) {\n const input = field.querySelector('input') as HTMLInputElement;\n input.style.lineHeight = '24px';\n setTimeout(() => {\n input.focus();\n }, 50);\n }\n }\n\n this.scrollSelectedAccountIntoView();\n };\n\n scrollSelectedAccountIntoView = async () => {\n await this.awaitUpdateComplete();\n // scroll selected account into view\n const accountIndex = this.accounts.findIndex(\n i => i.id === this.selectedAccountNumber\n );\n const tree = this.accountTree.querySelector('ix-tree') as HTMLElement;\n if (tree.shadowRoot) {\n const treeContainer = tree.shadowRoot.querySelector(\n '.ix-tree-container'\n ) as HTMLElement;\n treeContainer.children[accountIndex]?.scrollIntoView({\n block: 'start',\n });\n\n // Adjust scroll position slightly to ensure can scroll\n this.accountTree.scrollTop -= 4;\n\n this.scrollTop = this.accountTree.scrollTop;\n }\n };\n\n closeDialog = () => {\n this.showDialog = false;\n if (this.filterString.length > 0) {\n this.filterString = '';\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: '',\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n };\n\n private renderTree(): TemplateResult<1> {\n if (!this.accounts.length)\n return html`<div class=\"padded-container\">\n <p class=\"no-results\">No Results Found</p>\n </div>`;\n if (this.rebuildingTree) {\n return html``;\n }\n return html`\n <ix-tree\n aria-label=\"Account Switcher\"\n .rootNode=${this.treeData}\n selectedNodeId=${this.selectedAccountNumber}\n ?allowMultiline=${true}\n @on-tree-node-selected=${(e: CustomEvent) => {\n if (e.detail.message.id === this.selectedAccountNumber) {\n this.closeDialog();\n return;\n }\n this.dispatchEvent(\n new CustomEvent('account-switched', {\n detail: e.detail.message.id,\n bubbles: true,\n composed: true,\n })\n );\n this.loading = true;\n }}\n ></ix-tree>\n `;\n }\n\n private renderDialog(): TemplateResult<1> {\n return html`<ix-dialog\n id=\"account-switcher-dialog\"\n ?open=${this.showDialog}\n @closed=${this.closeDialog}\n disableNextClickIsFromContent=\"true\"\n >\n <div class=\"headline\" slot=\"headline\">\n <span class=\"title\">Switch Account</span>\n <ix-icon-button @click=${this.closeDialog} icon=\"close\">\n </ix-icon-button>\n </div>\n\n <form\n id=\"account-switcher-dialog-form\"\n class=\"form\"\n method=\"dialog\"\n slot=\"content\"\n >\n <ix-textbox\n id=\"searchInput\"\n filled\n leading-icon=\"Search\"\n has-leading-icon\n placeholder=\"Search\"\n .value=${this.filterString}\n @input=${(e: Event) => {\n const input = e.target as HTMLInputElement;\n this.filterAccountsBySearchTerm(input.value);\n }}\n ></ix-textbox>\n\n <div\n id=\"accountTree\"\n style=\"${this.loading ? 'loading-container-switch' : ''}\"\n @scroll=${this.getMoreAccountsOnScroll}\n >\n <div id=\"scroll-inner\">\n ${this.prevDataAvailable\n ? html`\n <div id=\"loadPrevious\">\n ${this.prevScrollLoading\n ? html`<div>\n <ix-progress\n .linear=${false}\n .indeterminate=${true}\n ></ix-progress>\n </div>`\n : nothing}\n </div>\n `\n : nothing}\n ${this.loading\n ? html`<div class=\"loading-container-switch\">\n <ix-progress\n .linear=${false}\n .indeterminate=${true}\n ></ix-progress>\n </div>`\n : this.renderTree()}\n <div id=\"loadMore\">\n ${this.scrollLoading\n ? html`<div>\n <ix-progress\n .linear=${false}\n .indeterminate=${true}\n ></ix-progress>\n </div>`\n : nothing}\n </div>\n </div>\n </div>\n </form>\n </ix-dialog>`;\n }\n\n getSelectedAccount() {\n const selectedAccount = findAccountById(\n this.accounts,\n this.selectedAccountNumber as string\n );\n authedUser.setSelectedAccount(selectedAccount ?? undefined);\n\n return selectedAccount;\n }\n\n private renderNestedAccountStructureSelect(): TemplateResult<1> {\n return html`\n <ix-field\n ?disabled=${this.disabled}\n @click=${this.openDialog}\n data-testid=${TestIds.NESTED_ACCOUNT_SWITCHER_TRIGGER}\n >\n <div class=\"subaccount-wrap\">\n <span\n class=\"subaccount-name\"\n data-testid=\"ix-account-switcher-subaccount-name\"\n >\n ${this.selectedAccount?.displayName}\n </span>\n <ix-icon class=\"dd-icon\">arrow_drop_down</ix-icon>\n </div>\n </ix-field>\n `;\n }\n\n private renderFlatAccountStructureSelect(): TemplateResult<1> {\n const selectedAccount = this.getSelectedAccount();\n const activeLabelTag = html`<ix-label-tag>Active</ix-label-tag>`;\n\n const options = this.accounts.map(account => {\n const isSelected = account.id === selectedAccount?.id;\n\n return html`<ix-select-option value=${account.id} .selected=${isSelected}>\n <div slot=\"headline\">${account?.displayName ?? account.name}</div>\n <div slot=\"end\">${isSelected ? activeLabelTag : nothing}</div>\n </ix-select-option>`;\n });\n\n return html`<div class=\"account-switcher__select\">\n <ix-select\n ?disabled=${this.disabled}\n @request-selection=${(e: Event) => {\n const target = e.target as HTMLSelectElement;\n this.dispatchEvent(\n new CustomEvent('account-switched', {\n detail: target.value,\n bubbles: true,\n composed: true,\n })\n );\n }}\n >\n ${options}\n </ix-select>\n </div>`;\n }\n\n render(): TemplateResult<1> {\n const hasSubaccounts = this.accounts.some(\n a => a.subaccounts && a.subaccounts.length > 0\n );\n\n return html`\n <div class=\"account-switcher-container\">\n ${hasSubaccounts || this.enableFilterDialog\n ? this.renderNestedAccountStructureSelect()\n : this.renderFlatAccountStructureSelect()}\n </div>\n\n ${hasSubaccounts || this.enableFilterDialog ? this.renderDialog() : null}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"IxAccountSwitcher.js","sourceRoot":"","sources":["../src/IxAccountSwitcher.ts"],"names":[],"mappings":"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","sourcesContent":["import '@digital-realty/ix-dialog/ix-dialog.js';\nimport '@digital-realty/ix-field/ix-field.js';\nimport '@digital-realty/ix-icon-button/ix-icon-button.js';\nimport '@digital-realty/ix-label-tag/ix-label-tag.js';\nimport '@digital-realty/ix-progress/ix-progress.js';\nimport '@digital-realty/ix-select/ix-select.js';\nimport '@digital-realty/ix-select/ix-select-option.js';\nimport '@digital-realty/ix-textbox/ix-textbox.js';\nimport '@digital-realty/ix-tree/ix-tree.js';\nimport { html, LitElement, nothing, TemplateResult } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport findAccountById from './utils/find-account-by-id.js';\nimport { mapAccountsToTreeNode } from './utils/map-accounts-to-tree.js';\nimport type { NestedAccounts } from './types.js';\nimport { authedUser } from './state/authedUser.js';\nimport { findAccountHierarchy } from './utils/account-hierarchy-util.js';\nimport { IxAccountSwitcherTestIds as TestIds } from './ix-account-switcher-test-ids.js';\n\nfunction debounce<T extends (...args: any[]) => void>(\n func: T,\n wait: number,\n immediate = false\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null;\n\n return function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n const context = this;\n\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n const callNow = immediate && !timeout;\n\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) func.apply(context, args);\n };\n}\n\nexport class IxAccountSwitcher extends LitElement {\n @query('#accountTree') readonly accountTree!: HTMLElement;\n\n @query('#searchInput') readonly searchInput!: HTMLElement;\n\n @property({ type: String, reflect: true }) selectedAccountNumber: string = '';\n\n @property({ type: Array }) accounts: NestedAccounts[] = [];\n\n @property({ type: Boolean }) prevDataAvailable: boolean = false;\n\n @property({ type: Boolean }) nextDataAvailable: boolean = false;\n\n @property({ type: Boolean }) disabled: boolean = false;\n\n @property({ type: Boolean }) enableFilterDialog: boolean = false;\n\n @state() showDialog: boolean = false;\n\n @state() visibleAccounts: NestedAccounts[] = [];\n\n @property({ type: Boolean }) loading: boolean = false;\n\n @state() scrollLoading: boolean = false;\n\n @state() prevScrollLoading: boolean = false;\n\n @state() displayFilters: boolean = false;\n\n @state() filterString: string = '';\n\n @state() selectedAccount?: NestedAccounts;\n\n @state() scrollTop: number = 0;\n\n @state() accountsLength: number = 0;\n\n @state() resettingInitialList: boolean = false;\n\n @state() rebuildingTree: boolean = false;\n\n @property() keyValue: string = '';\n\n @state() treeData: any = mapAccountsToTreeNode(this.accounts, '');\n\n @state() private enableFetchPage: boolean = false;\n\n @state() selectedNodeRef: HTMLElement | null = null;\n\n updated = async (changedProperties: Map<string | symbol, unknown>) => {\n super.updated(changedProperties);\n\n if (changedProperties.has('accounts')) {\n this.loading = false;\n if (!this.selectedAccount) {\n // if not yet found from account number\n this.selectedAccount = this.getSelectedAccount();\n }\n\n authedUser.setAccountHierarchy(\n findAccountHierarchy(this.accounts, this.selectedAccountNumber)\n );\n this.filterVisibleAccounts();\n\n if (this.scrollLoading) {\n const hasPrevData = this.prevDataAvailable;\n this.prevDataAvailable = false;\n this.scrollLoading = false;\n await this.awaitUpdateComplete();\n this.getAnchorNode(this.accountsLength - 1)?.scrollIntoView({\n block: 'end',\n });\n this.prevDataAvailable = hasPrevData;\n this.accountTree.scrollTop += 20;\n } else if (this.prevScrollLoading) {\n this.prevScrollLoading = false;\n const accountIndex = this.accounts.length - this.accountsLength;\n await this.awaitUpdateComplete();\n this.getAnchorNode(accountIndex)?.scrollIntoView({ block: 'start' });\n this.accountTree.scrollTop -= 20;\n } else if (this.resettingInitialList) {\n await this.awaitUpdateComplete();\n this.scrollSelectedAccountIntoView();\n this.resettingInitialList = false;\n }\n }\n };\n\n private async awaitUpdateComplete() {\n await this.updateComplete;\n await new Promise(requestAnimationFrame);\n await new Promise(requestAnimationFrame);\n }\n\n private async filterVisibleAccounts() {\n this.treeData = mapAccountsToTreeNode(\n this.accounts,\n this.filterString.length > 2 ? this.filterString : undefined\n );\n\n this.rebuildingTree = true;\n await this.awaitUpdateComplete();\n this.rebuildingTree = false;\n }\n\n filterAccountsBySearchTerm = debounce(async (filterString: string) => {\n if (this.filterString.length < 3 && filterString.length < 3) {\n this.filterString = filterString;\n // no need to update tree\n return;\n }\n\n this.filterString = filterString;\n\n if (filterString.length < 3) {\n this.resettingInitialList = true;\n }\n\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: filterString.length < 3 ? '' : filterString,\n },\n bubbles: true,\n composed: true,\n })\n );\n\n this.loading = true;\n }, 300);\n\n getAnchorNode = (position: number) => {\n const tree = this.accountTree.querySelector('ix-tree') as HTMLElement;\n if (tree?.shadowRoot) {\n const treeContainer = tree.shadowRoot.querySelector(\n '.ix-tree-container'\n ) as HTMLElement;\n return treeContainer.children[position] as HTMLElement;\n }\n return null;\n };\n\n getMoreAccountsOnScroll = async (e: Event) => {\n if (!this.enableFetchPage) {\n this.enableFetchPage = true;\n return;\n }\n if (this.scrollLoading || this.prevScrollLoading || this.loading) return;\n\n const target = e.currentTarget as HTMLElement;\n const distanceToBottom =\n this.accountTree.scrollHeight -\n (target.clientHeight + this.accountTree.scrollTop);\n\n if (\n this.accountTree.scrollTop < this.scrollTop &&\n this.accountTree.scrollTop < 12\n ) {\n if (!this.prevDataAvailable) return;\n this.prevScrollLoading = true;\n this.accountsLength = this.accounts.length;\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: this.filterString,\n prev: true,\n },\n bubbles: true,\n composed: true,\n })\n );\n this.enableFetchPage = false;\n }\n\n if (this.accountTree.scrollTop > this.scrollTop && distanceToBottom < 2) {\n if (!this.nextDataAvailable) return;\n this.scrollLoading = true;\n await this.updateComplete;\n this.scrollTop = this.accountTree.scrollTop;\n this.accountsLength = this.accounts.length;\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: this.filterString,\n next: true,\n },\n bubbles: true,\n composed: true,\n })\n );\n this.enableFetchPage = false;\n }\n\n this.scrollTop = this.accountTree.scrollTop;\n };\n\n openDialog = () => {\n if (this.disabled) return;\n if (this.accounts.length === 0) {\n this.loading = true;\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: '',\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n this.showDialog = true;\n const el = this.searchInput as HTMLElement;\n if (el) {\n const inner = el.querySelector('md-filled-text-field');\n const field = inner?.shadowRoot?.querySelector('md-filled-field');\n const icon = field?.shadowRoot?.querySelector('.start') as HTMLElement;\n if (icon) {\n icon.style.minWidth = '32px';\n icon.style.color = 'rgba(9, 34, 65, 0.7)';\n }\n if (field) {\n const input = field.querySelector('input') as HTMLInputElement;\n input.style.lineHeight = '24px';\n setTimeout(() => {\n input.focus();\n }, 50);\n }\n }\n\n this.scrollSelectedAccountIntoView();\n };\n\n scrollSelectedAccountIntoView = async () => {\n await this.awaitUpdateComplete();\n\n if (!this.selectedNodeRef || !this.selectedNodeRef.isConnected) return;\n\n // scroll selected account into view\n this.selectedNodeRef.scrollIntoView({\n block: 'start',\n });\n\n // Adjust scroll position slightly to ensure can scroll\n this.accountTree.scrollTop -= 4;\n\n this.scrollTop = this.accountTree.scrollTop;\n\n };\n\n closeDialog = () => {\n this.showDialog = false;\n if (this.filterString.length > 0) {\n this.filterString = '';\n this.dispatchEvent(\n new CustomEvent('account-fetch', {\n detail: {\n id: this.selectedAccountNumber,\n filterString: '',\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n };\n\n private renderTree(): TemplateResult<1> {\n if (!this.accounts.length)\n return html`<div class=\"padded-container\">\n <p class=\"no-results\">No Results Found</p>\n </div>`;\n if (this.rebuildingTree) {\n return html``;\n }\n return html`\n <ix-tree\n aria-label=\"Account Switcher\"\n .rootNode=${this.treeData}\n selectedNodeId=${this.selectedAccountNumber}\n ?allowMultiline=${true}\n @selected-node-ref=${(e: CustomEvent) => {\n this.selectedNodeRef = e.detail;\n }}\n @on-tree-node-selected=${(e: CustomEvent) => {\n if (e.detail.message.id === this.selectedAccountNumber) {\n this.closeDialog();\n return;\n }\n this.dispatchEvent(\n new CustomEvent('account-switched', {\n detail: e.detail.message.id,\n bubbles: true,\n composed: true,\n })\n );\n this.loading = true;\n }}\n ></ix-tree>\n `;\n }\n\n private renderDialog(): TemplateResult<1> {\n return html`<ix-dialog\n id=\"account-switcher-dialog\"\n ?open=${this.showDialog}\n @closed=${this.closeDialog}\n disableNextClickIsFromContent=\"true\"\n >\n <div class=\"headline\" slot=\"headline\">\n <span class=\"title\">Switch Account</span>\n <ix-icon-button @click=${this.closeDialog} icon=\"close\">\n </ix-icon-button>\n </div>\n\n <form\n id=\"account-switcher-dialog-form\"\n class=\"form\"\n method=\"dialog\"\n slot=\"content\"\n >\n <ix-textbox\n id=\"searchInput\"\n filled\n leading-icon=\"Search\"\n has-leading-icon\n placeholder=\"Search\"\n .value=${this.filterString}\n @input=${(e: Event) => {\n const input = e.target as HTMLInputElement;\n this.filterAccountsBySearchTerm(input.value);\n }}\n ></ix-textbox>\n\n <div\n id=\"accountTree\"\n style=\"${this.loading ? 'loading-container-switch' : ''}\"\n @scroll=${this.getMoreAccountsOnScroll}\n >\n <div id=\"scroll-inner\">\n ${this.prevDataAvailable\n ? html`\n <div id=\"loadPrevious\">\n ${this.prevScrollLoading\n ? html`<div>\n <ix-progress\n .linear=${false}\n .indeterminate=${true}\n ></ix-progress>\n </div>`\n : nothing}\n </div>\n `\n : nothing}\n ${this.loading\n ? html`<div class=\"loading-container-switch\">\n <ix-progress\n .linear=${false}\n .indeterminate=${true}\n ></ix-progress>\n </div>`\n : this.renderTree()}\n <div id=\"loadMore\">\n ${this.scrollLoading\n ? html`<div>\n <ix-progress\n .linear=${false}\n .indeterminate=${true}\n ></ix-progress>\n </div>`\n : nothing}\n </div>\n </div>\n </div>\n </form>\n </ix-dialog>`;\n }\n\n getSelectedAccount() {\n const selectedAccount = findAccountById(\n this.accounts,\n this.selectedAccountNumber as string\n );\n authedUser.setSelectedAccount(selectedAccount ?? undefined);\n\n return selectedAccount;\n }\n\n private renderNestedAccountStructureSelect(): TemplateResult<1> {\n return html`\n <ix-field\n ?disabled=${this.disabled}\n @click=${this.openDialog}\n data-testid=${TestIds.NESTED_ACCOUNT_SWITCHER_TRIGGER}\n >\n <div class=\"subaccount-wrap\">\n <span\n class=\"subaccount-name\"\n data-testid=\"ix-account-switcher-subaccount-name\"\n >\n ${this.selectedAccount?.displayName}\n </span>\n <ix-icon class=\"dd-icon\">arrow_drop_down</ix-icon>\n </div>\n </ix-field>\n `;\n }\n\n private renderFlatAccountStructureSelect(): TemplateResult<1> {\n const selectedAccount = this.getSelectedAccount();\n const activeLabelTag = html`<ix-label-tag>Active</ix-label-tag>`;\n\n const options = this.accounts.map(account => {\n const isSelected = account.id === selectedAccount?.id;\n\n return html`<ix-select-option value=${account.id} .selected=${isSelected}>\n <div slot=\"headline\">${account?.displayName ?? account.name}</div>\n <div slot=\"end\">${isSelected ? activeLabelTag : nothing}</div>\n </ix-select-option>`;\n });\n\n return html`<div class=\"account-switcher__select\">\n <ix-select\n ?disabled=${this.disabled}\n @request-selection=${(e: Event) => {\n const target = e.target as HTMLSelectElement;\n this.dispatchEvent(\n new CustomEvent('account-switched', {\n detail: target.value,\n bubbles: true,\n composed: true,\n })\n );\n }}\n >\n ${options}\n </ix-select>\n </div>`;\n }\n\n render(): TemplateResult<1> {\n const hasSubaccounts = this.accounts.some(\n a => a.subaccounts && a.subaccounts.length > 0\n );\n\n return html`\n <div class=\"account-switcher-container\">\n ${hasSubaccounts || this.enableFilterDialog\n ? this.renderNestedAccountStructureSelect()\n : this.renderFlatAccountStructureSelect()}\n </div>\n\n ${hasSubaccounts || this.enableFilterDialog ? this.renderDialog() : null}\n `;\n }\n}\n"]}
@@ -1 +1 @@
1
- import{LitElement,html,nothing,css}from"lit";import{__decorate}from"tslib";import"@digital-realty/ix-dialog/ix-dialog.js";import"@digital-realty/ix-field/ix-field.js";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"@digital-realty/ix-label-tag/ix-label-tag.js";import"@digital-realty/ix-progress/ix-progress.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-textbox/ix-textbox.js";import"@digital-realty/ix-tree/ix-tree.js";import{query,property,state}from"lit/decorators.js";import{makeAutoObservable}from"mobx";import{makePersistable,isHydrated,hydrateStore,clearPersistedStore,getPersistedStore}from"mobx-persist-store";let findAccountById=(e,t)=>{var i,o=e.find(e=>e.id===t);if(o)return o;for(i of e)if(i.subaccounts){var c=findAccountById(i.subaccounts,t);if(c)return c}},mapAccountToTreeNode=(e,t,i)=>{var o=null!=(o=e.displayName)?o:e.name;let c={expanded:!1,id:e.id,label:o,parentId:t.id};return i&&2<i.length&&(c.expanded=null==(o=e.subaccounts)?void 0:o.some(e=>e.displayName.toLowerCase().includes(i.toLowerCase()))),c.children=null==(t=e.subaccounts)?void 0:t.map(e=>mapAccountToTreeNode(e,c,i)),(null==(o=c.children)?void 0:o.some(e=>e.expanded))&&(c.expanded=!0),c},mapAccountsToTreeNode=(e,t)=>{let i={expanded:!0,id:"root",label:"",parentId:void 0};return i.children=e.map(e=>mapAccountToTreeNode(e,i,t)),i};class AuthedUserState{constructor(){this.account_number="",this.email="",this.name="",this.givenName="",this.familyName="",this.auth_time="",this.access_token="",this.id_token="",this.bearer="",this.account_hierarchy=void 0,this.selected_account=void 0,makeAutoObservable(this),makePersistable(this,{name:"x-auth",properties:["email","account_number","name","givenName","familyName","auth_time","id_token","access_token","bearer","account_hierarchy","selected_account"],storage:window.localStorage})}setAccount({accountNumber:e,email:t,name:i,givenName:o,familyName:c,authTime:r=(new Date).getTime().toString(),accessToken:a,idToken:s,bearer:n="Bearer"}){this.account_number=e,this.email=t,this.name=i,this.givenName=o,this.familyName=c,this.auth_time=r,this.access_token=a,this.id_token=s,this.bearer=n}getAccount(){return{accountNumber:this.account_number,email:this.email,name:this.name,givenName:this.givenName,familyName:this.familyName,authTime:this.auth_time}}getAccountNumber(){return this.account_number}getAccessToken(){return this.access_token}getBearer(){return this.bearer}getIdToken(){return this.id_token}setAccountHierarchy(e){this.account_hierarchy=e}getAccountHierarchy(){return this.account_hierarchy}setSelectedAccount(e){this.selected_account=e}getSelectedAccount(){return this.selected_account}get isHydrated(){return isHydrated(this)}async hydrateStore(){await hydrateStore(this)}async clearStoredDate(){await clearPersistedStore(this)}async getStoredData(){return getPersistedStore(this)}}let authedUser=new AuthedUserState,findAccountHierarchy=(e,c)=>{let r=(e,t)=>{var i,o;for(o of null!=e?e:[]){if(o.id===c)return o;if(0<(null!=(i=o.subaccounts)?i:[]).length)if(r(o.subaccounts))return o}return null};for(var t of e)if(r([t]))return t;return null};class IxAccountSwitcherTestIds{}function debounce(o,c,r=!1){let a;return function(...e){let t=this;var i=r&&!a;a&&clearTimeout(a),a=setTimeout(()=>{a=null,r||o.apply(t,e)},c),i&&o.apply(t,e)}}IxAccountSwitcherTestIds.NESTED_ACCOUNT_SWITCHER_TRIGGER="ix-sw-nested-acc-trigger";class IxAccountSwitcher extends LitElement{constructor(){super(...arguments),this.selectedAccountNumber="",this.accounts=[],this.prevDataAvailable=!1,this.nextDataAvailable=!1,this.disabled=!1,this.enableFilterDialog=!1,this.showDialog=!1,this.visibleAccounts=[],this.loading=!1,this.scrollLoading=!1,this.prevScrollLoading=!1,this.displayFilters=!1,this.filterString="",this.scrollTop=0,this.accountsLength=0,this.resettingInitialList=!1,this.rebuildingTree=!1,this.keyValue="",this.treeData=mapAccountsToTreeNode(this.accounts,""),this.enableFetchPage=!1,this.updated=async e=>{var t;super.updated(e),e.has("accounts")&&(this.loading=!1,this.selectedAccount||(this.selectedAccount=this.getSelectedAccount()),authedUser.setAccountHierarchy(findAccountHierarchy(this.accounts,this.selectedAccountNumber)),this.filterVisibleAccounts(),this.scrollLoading?(e=this.prevDataAvailable,this.prevDataAvailable=!1,this.scrollLoading=!1,await this.awaitUpdateComplete(),null!=(t=this.getAnchorNode(this.accountsLength-1))&&t.scrollIntoView({block:"end"}),this.prevDataAvailable=e,this.accountTree.scrollTop+=20):this.prevScrollLoading?(this.prevScrollLoading=!1,t=this.accounts.length-this.accountsLength,await this.awaitUpdateComplete(),null!=(e=this.getAnchorNode(t))&&e.scrollIntoView({block:"start"}),this.accountTree.scrollTop-=20):this.resettingInitialList&&(await this.awaitUpdateComplete(),this.scrollSelectedAccountIntoView(),this.resettingInitialList=!1))},this.filterAccountsBySearchTerm=debounce(async e=>{this.filterString.length<3&&e.length<3?this.filterString=e:((this.filterString=e).length<3&&(this.resettingInitialList=!0),this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:e.length<3?"":e},bubbles:!0,composed:!0})),this.loading=!0)},300),this.getAnchorNode=e=>{var t=this.accountTree.querySelector("ix-tree");return null!=t&&t.shadowRoot?t.shadowRoot.querySelector(".ix-tree-container").children[e]:null},this.getMoreAccountsOnScroll=async e=>{if(this.enableFetchPage){if(!(this.scrollLoading||this.prevScrollLoading||this.loading)){e=e.currentTarget,e=this.accountTree.scrollHeight-(e.clientHeight+this.accountTree.scrollTop);if(this.accountTree.scrollTop<this.scrollTop&&this.accountTree.scrollTop<12){if(!this.prevDataAvailable)return;this.prevScrollLoading=!0,this.accountsLength=this.accounts.length,this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:this.filterString,prev:!0},bubbles:!0,composed:!0})),this.enableFetchPage=!1}if(this.accountTree.scrollTop>this.scrollTop&&e<2){if(!this.nextDataAvailable)return;this.scrollLoading=!0,await this.updateComplete,this.scrollTop=this.accountTree.scrollTop,this.accountsLength=this.accounts.length,this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:this.filterString,next:!0},bubbles:!0,composed:!0})),this.enableFetchPage=!1}this.scrollTop=this.accountTree.scrollTop}}else this.enableFetchPage=!0},this.openDialog=()=>{if(!this.disabled){0===this.accounts.length&&(this.loading=!0,this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:""},bubbles:!0,composed:!0}))),this.showDialog=!0;var t=this.searchInput;if(t){var t=t.querySelector("md-filled-text-field"),t=null==(t=null==t?void 0:t.shadowRoot)?void 0:t.querySelector("md-filled-field"),e=null==(e=null==t?void 0:t.shadowRoot)?void 0:e.querySelector(".start");if(e&&(e.style.minWidth="32px",e.style.color="rgba(9, 34, 65, 0.7)"),t){let e=t.querySelector("input");e.style.lineHeight="24px",setTimeout(()=>{e.focus()},50)}}this.scrollSelectedAccountIntoView()}},this.scrollSelectedAccountIntoView=async()=>{await this.awaitUpdateComplete();var e=this.accounts.findIndex(e=>e.id===this.selectedAccountNumber),t=this.accountTree.querySelector("ix-tree");t.shadowRoot&&(null!=(t=t.shadowRoot.querySelector(".ix-tree-container").children[e])&&t.scrollIntoView({block:"start"}),this.accountTree.scrollTop-=4,this.scrollTop=this.accountTree.scrollTop)},this.closeDialog=()=>{this.showDialog=!1,0<this.filterString.length&&(this.filterString="",this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:""},bubbles:!0,composed:!0})))}}async awaitUpdateComplete(){await this.updateComplete,await new Promise(requestAnimationFrame),await new Promise(requestAnimationFrame)}async filterVisibleAccounts(){this.treeData=mapAccountsToTreeNode(this.accounts,2<this.filterString.length?this.filterString:void 0),this.rebuildingTree=!0,await this.awaitUpdateComplete(),this.rebuildingTree=!1}renderTree(){return this.accounts.length?this.rebuildingTree?html``:html`<ix-tree aria-label="Account Switcher" .rootNode="${this.treeData}" selectedNodeId="${this.selectedAccountNumber}" ?allowMultiline="${!0}" @on-tree-node-selected="${e=>{e.detail.message.id===this.selectedAccountNumber?this.closeDialog():(this.dispatchEvent(new CustomEvent("account-switched",{detail:e.detail.message.id,bubbles:!0,composed:!0})),this.loading=!0)}}"></ix-tree>`:html`<div class="padded-container"><p class="no-results">No Results Found</p></div>`}renderDialog(){return html`<ix-dialog id="account-switcher-dialog" ?open="${this.showDialog}" @closed="${this.closeDialog}" disableNextClickIsFromContent="true"><div class="headline" slot="headline"><span class="title">Switch Account</span><ix-icon-button @click="${this.closeDialog}" icon="close"></ix-icon-button></div><form id="account-switcher-dialog-form" class="form" method="dialog" slot="content"><ix-textbox id="searchInput" filled leading-icon="Search" has-leading-icon placeholder="Search" .value="${this.filterString}" @input="${e=>{e=e.target;this.filterAccountsBySearchTerm(e.value)}}"></ix-textbox><div id="accountTree" style="${this.loading?"loading-container-switch":""}" @scroll="${this.getMoreAccountsOnScroll}"><div id="scroll-inner">${this.prevDataAvailable?html`<div id="loadPrevious">${this.prevScrollLoading?html`<div><ix-progress .linear="${!1}" .indeterminate="${!0}"></ix-progress></div>`:nothing}</div>`:nothing} ${this.loading?html`<div class="loading-container-switch"><ix-progress .linear="${!1}" .indeterminate="${!0}"></ix-progress></div>`:this.renderTree()}<div id="loadMore">${this.scrollLoading?html`<div><ix-progress .linear="${!1}" .indeterminate="${!0}"></ix-progress></div>`:nothing}</div></div></div></form></ix-dialog>`}getSelectedAccount(){var e=findAccountById(this.accounts,this.selectedAccountNumber);return authedUser.setSelectedAccount(null!=e?e:void 0),e}renderNestedAccountStructureSelect(){var e;return html`<ix-field ?disabled="${this.disabled}" @click="${this.openDialog}" data-testid="${IxAccountSwitcherTestIds.NESTED_ACCOUNT_SWITCHER_TRIGGER}"><div class="subaccount-wrap"><span class="subaccount-name" data-testid="ix-account-switcher-subaccount-name">${null==(e=this.selectedAccount)?void 0:e.displayName}</span><ix-icon class="dd-icon">arrow_drop_down</ix-icon></div></ix-field>`}renderFlatAccountStructureSelect(){let o=this.getSelectedAccount(),c=html`<ix-label-tag>Active</ix-label-tag>`;var e=this.accounts.map(e=>{var t,i=e.id===(null==o?void 0:o.id);return html`<ix-select-option value="${e.id}" .selected="${i}"><div slot="headline">${null!=(t=null==e?void 0:e.displayName)?t:e.name}</div><div slot="end">${i?c:nothing}</div></ix-select-option>`});return html`<div class="account-switcher__select"><ix-select ?disabled="${this.disabled}" @request-selection="${e=>{e=e.target;this.dispatchEvent(new CustomEvent("account-switched",{detail:e.value,bubbles:!0,composed:!0}))}}">${e}</ix-select></div>`}render(){var e=this.accounts.some(e=>e.subaccounts&&0<e.subaccounts.length);return html`<div class="account-switcher-container">${e||this.enableFilterDialog?this.renderNestedAccountStructureSelect():this.renderFlatAccountStructureSelect()}</div>${e||this.enableFilterDialog?this.renderDialog():null}`}}__decorate([query("#accountTree")],IxAccountSwitcher.prototype,"accountTree",void 0),__decorate([query("#searchInput")],IxAccountSwitcher.prototype,"searchInput",void 0),__decorate([property({type:String,reflect:!0})],IxAccountSwitcher.prototype,"selectedAccountNumber",void 0),__decorate([property({type:Array})],IxAccountSwitcher.prototype,"accounts",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"prevDataAvailable",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"nextDataAvailable",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"disabled",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"enableFilterDialog",void 0),__decorate([state()],IxAccountSwitcher.prototype,"showDialog",void 0),__decorate([state()],IxAccountSwitcher.prototype,"visibleAccounts",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"loading",void 0),__decorate([state()],IxAccountSwitcher.prototype,"scrollLoading",void 0),__decorate([state()],IxAccountSwitcher.prototype,"prevScrollLoading",void 0),__decorate([state()],IxAccountSwitcher.prototype,"displayFilters",void 0),__decorate([state()],IxAccountSwitcher.prototype,"filterString",void 0),__decorate([state()],IxAccountSwitcher.prototype,"selectedAccount",void 0),__decorate([state()],IxAccountSwitcher.prototype,"scrollTop",void 0),__decorate([state()],IxAccountSwitcher.prototype,"accountsLength",void 0),__decorate([state()],IxAccountSwitcher.prototype,"resettingInitialList",void 0),__decorate([state()],IxAccountSwitcher.prototype,"rebuildingTree",void 0),__decorate([property()],IxAccountSwitcher.prototype,"keyValue",void 0),__decorate([state()],IxAccountSwitcher.prototype,"treeData",void 0),__decorate([state()],IxAccountSwitcher.prototype,"enableFetchPage",void 0);let AccountSwitcherStyles=css`#account-switcher-dialog{position:relative;z-index:var(--ix-account-switcher-z-index,50)}.subaccount-wrap{background:var(--clr-surface-container-lowest,#fff);display:flex;border-radius:5px;--ix-icon-font-size:1.6rem}.subaccount-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:0;flex:1}.dd-icon{margin:-2px -5px -5px 0}.headline{display:flex}.title{flex:1;font-size:1.25rem;line-height:24px;font-family:var(--root-secondary-font, 'Red Hat Display', 'sans-serif');font-weight:700}#account-switcher-dialog-form{padding:8px 24px}#accountTree{overflow:auto;border:1px solid #e0e0e0;border-radius:.25rem;height:50vh;margin:1rem 0;padding:0;width:512px}#loadMore,#loadPrevious{display:flex;justify-content:center;padding:.5rem;--md-circular-progress-size:40px}ix-textbox{--md-filled-text-field-top-space:6px;--md-filled-text-field-bottom-space:6px;--md-filled-text-field-container-color:rgba(245, 247, 255, 1);--md-filled-field-hover-state-layer-opacity:0;--md-filled-field-hover-state-layer-opacity:0;--md-filled-field-leading-content-color:rgba(9, 34, 65, 1);--md-filled-text-field-container-shape-end-end:4px;--md-filled-text-field-container-shape-end-start:4px;--md-filled-text-field-focus-active-indicator-height:0px;--md-filled-text-field-hover-active-indicator-height:0px;--md-filled-text-field-active-indicator-height:0px;--ix-icon-color:rgba(9, 34, 65, 1);--md-filled-text-field-input-text-placeholder-color:rgba(9, 34, 65, 0.7);--md-filled-text-field-input-text-size:0.875rem}.account-filter{cursor:pointer;padding:2px}.account-filter:hover{text-decoration:underline}.account-filter.active{text-decoration:underline;font-weight:700}.padded-container{padding:12px}.loading-container,.loading-container-switch{display:flex;flex:1;justify-content:center;align-items:center}.loading-container-switch{min-height:300px}.stick-to-top{position:sticky;top:0;background-color:#c8dffa;z-index:1}.no-results{padding:12px 0 0 24px;margin:0;font-size:14px;line-height:24px;color:rgba(9,34,65,.7)}@media only screen and (max-width:600px){:host{--md-outlined-field-container-shape:0px}.subaccount-wrap{border-radius:0}#accountTree{max-width:100%}}`;class IxAccountSwitcherStyled extends IxAccountSwitcher{}IxAccountSwitcherStyled.styles=[AccountSwitcherStyles,css`:host{--md-theme-primary:var(--md-sys-color-primary, blue)}`],window.customElements.define("ix-account-switcher",IxAccountSwitcherStyled);export{IxAccountSwitcherStyled};
1
+ import{LitElement,html,nothing,css}from"lit";import{__decorate}from"tslib";import"@digital-realty/ix-dialog/ix-dialog.js";import"@digital-realty/ix-field/ix-field.js";import"@digital-realty/ix-icon-button/ix-icon-button.js";import"@digital-realty/ix-label-tag/ix-label-tag.js";import"@digital-realty/ix-progress/ix-progress.js";import"@digital-realty/ix-select/ix-select.js";import"@digital-realty/ix-select/ix-select-option.js";import"@digital-realty/ix-textbox/ix-textbox.js";import"@digital-realty/ix-tree/ix-tree.js";import{query,property,state}from"lit/decorators.js";import{makeAutoObservable}from"mobx";import{makePersistable,isHydrated,hydrateStore,clearPersistedStore,getPersistedStore}from"mobx-persist-store";let findAccountById=(e,t)=>{var i,o=e.find(e=>e.id===t);if(o)return o;for(i of e)if(i.subaccounts){var c=findAccountById(i.subaccounts,t);if(c)return c}},mapAccountToTreeNode=(e,t,i)=>{var o=null!=(o=e.displayName)?o:e.name;let c={expanded:!1,id:e.id,label:o,parentId:t.id};return i&&2<i.length&&(c.expanded=null==(o=e.subaccounts)?void 0:o.some(e=>e.displayName.toLowerCase().includes(i.toLowerCase()))),c.children=null==(t=e.subaccounts)?void 0:t.map(e=>mapAccountToTreeNode(e,c,i)),(null==(o=c.children)?void 0:o.some(e=>e.expanded))&&(c.expanded=!0),c},mapAccountsToTreeNode=(e,t)=>{let i={expanded:!0,id:"root",label:"",parentId:void 0};return i.children=e.map(e=>mapAccountToTreeNode(e,i,t)),i};class AuthedUserState{constructor(){this.account_number="",this.email="",this.name="",this.givenName="",this.familyName="",this.auth_time="",this.access_token="",this.id_token="",this.bearer="",this.account_hierarchy=void 0,this.selected_account=void 0,makeAutoObservable(this),makePersistable(this,{name:"x-auth",properties:["email","account_number","name","givenName","familyName","auth_time","id_token","access_token","bearer","account_hierarchy","selected_account"],storage:window.localStorage})}setAccount({accountNumber:e,email:t,name:i,givenName:o,familyName:c,authTime:r=(new Date).getTime().toString(),accessToken:a,idToken:s,bearer:l="Bearer"}){this.account_number=e,this.email=t,this.name=i,this.givenName=o,this.familyName=c,this.auth_time=r,this.access_token=a,this.id_token=s,this.bearer=l}getAccount(){return{accountNumber:this.account_number,email:this.email,name:this.name,givenName:this.givenName,familyName:this.familyName,authTime:this.auth_time}}getAccountNumber(){return this.account_number}getAccessToken(){return this.access_token}getBearer(){return this.bearer}getIdToken(){return this.id_token}setAccountHierarchy(e){this.account_hierarchy=e}getAccountHierarchy(){return this.account_hierarchy}setSelectedAccount(e){this.selected_account=e}getSelectedAccount(){return this.selected_account}get isHydrated(){return isHydrated(this)}async hydrateStore(){await hydrateStore(this)}async clearStoredDate(){await clearPersistedStore(this)}async getStoredData(){return getPersistedStore(this)}}let authedUser=new AuthedUserState,findAccountHierarchy=(e,c)=>{let r=(e,t)=>{var i,o;for(o of null!=e?e:[]){if(o.id===c)return o;if(0<(null!=(i=o.subaccounts)?i:[]).length)if(r(o.subaccounts))return o}return null};for(var t of e)if(r([t]))return t;return null};class IxAccountSwitcherTestIds{}function debounce(o,c,r=!1){let a;return function(...e){let t=this;var i=r&&!a;a&&clearTimeout(a),a=setTimeout(()=>{a=null,r||o.apply(t,e)},c),i&&o.apply(t,e)}}IxAccountSwitcherTestIds.NESTED_ACCOUNT_SWITCHER_TRIGGER="ix-sw-nested-acc-trigger";class IxAccountSwitcher extends LitElement{constructor(){super(...arguments),this.selectedAccountNumber="",this.accounts=[],this.prevDataAvailable=!1,this.nextDataAvailable=!1,this.disabled=!1,this.enableFilterDialog=!1,this.showDialog=!1,this.visibleAccounts=[],this.loading=!1,this.scrollLoading=!1,this.prevScrollLoading=!1,this.displayFilters=!1,this.filterString="",this.scrollTop=0,this.accountsLength=0,this.resettingInitialList=!1,this.rebuildingTree=!1,this.keyValue="",this.treeData=mapAccountsToTreeNode(this.accounts,""),this.enableFetchPage=!1,this.selectedNodeRef=null,this.updated=async e=>{var t;super.updated(e),e.has("accounts")&&(this.loading=!1,this.selectedAccount||(this.selectedAccount=this.getSelectedAccount()),authedUser.setAccountHierarchy(findAccountHierarchy(this.accounts,this.selectedAccountNumber)),this.filterVisibleAccounts(),this.scrollLoading?(e=this.prevDataAvailable,this.prevDataAvailable=!1,this.scrollLoading=!1,await this.awaitUpdateComplete(),null!=(t=this.getAnchorNode(this.accountsLength-1))&&t.scrollIntoView({block:"end"}),this.prevDataAvailable=e,this.accountTree.scrollTop+=20):this.prevScrollLoading?(this.prevScrollLoading=!1,t=this.accounts.length-this.accountsLength,await this.awaitUpdateComplete(),null!=(e=this.getAnchorNode(t))&&e.scrollIntoView({block:"start"}),this.accountTree.scrollTop-=20):this.resettingInitialList&&(await this.awaitUpdateComplete(),this.scrollSelectedAccountIntoView(),this.resettingInitialList=!1))},this.filterAccountsBySearchTerm=debounce(async e=>{this.filterString.length<3&&e.length<3?this.filterString=e:((this.filterString=e).length<3&&(this.resettingInitialList=!0),this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:e.length<3?"":e},bubbles:!0,composed:!0})),this.loading=!0)},300),this.getAnchorNode=e=>{var t=this.accountTree.querySelector("ix-tree");return null!=t&&t.shadowRoot?t.shadowRoot.querySelector(".ix-tree-container").children[e]:null},this.getMoreAccountsOnScroll=async e=>{if(this.enableFetchPage){if(!(this.scrollLoading||this.prevScrollLoading||this.loading)){e=e.currentTarget,e=this.accountTree.scrollHeight-(e.clientHeight+this.accountTree.scrollTop);if(this.accountTree.scrollTop<this.scrollTop&&this.accountTree.scrollTop<12){if(!this.prevDataAvailable)return;this.prevScrollLoading=!0,this.accountsLength=this.accounts.length,this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:this.filterString,prev:!0},bubbles:!0,composed:!0})),this.enableFetchPage=!1}if(this.accountTree.scrollTop>this.scrollTop&&e<2){if(!this.nextDataAvailable)return;this.scrollLoading=!0,await this.updateComplete,this.scrollTop=this.accountTree.scrollTop,this.accountsLength=this.accounts.length,this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:this.filterString,next:!0},bubbles:!0,composed:!0})),this.enableFetchPage=!1}this.scrollTop=this.accountTree.scrollTop}}else this.enableFetchPage=!0},this.openDialog=()=>{if(!this.disabled){0===this.accounts.length&&(this.loading=!0,this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:""},bubbles:!0,composed:!0}))),this.showDialog=!0;var t=this.searchInput;if(t){var t=t.querySelector("md-filled-text-field"),t=null==(t=null==t?void 0:t.shadowRoot)?void 0:t.querySelector("md-filled-field"),e=null==(e=null==t?void 0:t.shadowRoot)?void 0:e.querySelector(".start");if(e&&(e.style.minWidth="32px",e.style.color="rgba(9, 34, 65, 0.7)"),t){let e=t.querySelector("input");e.style.lineHeight="24px",setTimeout(()=>{e.focus()},50)}}this.scrollSelectedAccountIntoView()}},this.scrollSelectedAccountIntoView=async()=>{await this.awaitUpdateComplete(),this.selectedNodeRef&&this.selectedNodeRef.isConnected&&(this.selectedNodeRef.scrollIntoView({block:"start"}),this.accountTree.scrollTop-=4,this.scrollTop=this.accountTree.scrollTop)},this.closeDialog=()=>{this.showDialog=!1,0<this.filterString.length&&(this.filterString="",this.dispatchEvent(new CustomEvent("account-fetch",{detail:{id:this.selectedAccountNumber,filterString:""},bubbles:!0,composed:!0})))}}async awaitUpdateComplete(){await this.updateComplete,await new Promise(requestAnimationFrame),await new Promise(requestAnimationFrame)}async filterVisibleAccounts(){this.treeData=mapAccountsToTreeNode(this.accounts,2<this.filterString.length?this.filterString:void 0),this.rebuildingTree=!0,await this.awaitUpdateComplete(),this.rebuildingTree=!1}renderTree(){return this.accounts.length?this.rebuildingTree?html``:html`<ix-tree aria-label="Account Switcher" .rootNode="${this.treeData}" selectedNodeId="${this.selectedAccountNumber}" ?allowMultiline="${!0}" @selected-node-ref="${e=>{this.selectedNodeRef=e.detail}}" @on-tree-node-selected="${e=>{e.detail.message.id===this.selectedAccountNumber?this.closeDialog():(this.dispatchEvent(new CustomEvent("account-switched",{detail:e.detail.message.id,bubbles:!0,composed:!0})),this.loading=!0)}}"></ix-tree>`:html`<div class="padded-container"><p class="no-results">No Results Found</p></div>`}renderDialog(){return html`<ix-dialog id="account-switcher-dialog" ?open="${this.showDialog}" @closed="${this.closeDialog}" disableNextClickIsFromContent="true"><div class="headline" slot="headline"><span class="title">Switch Account</span><ix-icon-button @click="${this.closeDialog}" icon="close"></ix-icon-button></div><form id="account-switcher-dialog-form" class="form" method="dialog" slot="content"><ix-textbox id="searchInput" filled leading-icon="Search" has-leading-icon placeholder="Search" .value="${this.filterString}" @input="${e=>{e=e.target;this.filterAccountsBySearchTerm(e.value)}}"></ix-textbox><div id="accountTree" style="${this.loading?"loading-container-switch":""}" @scroll="${this.getMoreAccountsOnScroll}"><div id="scroll-inner">${this.prevDataAvailable?html`<div id="loadPrevious">${this.prevScrollLoading?html`<div><ix-progress .linear="${!1}" .indeterminate="${!0}"></ix-progress></div>`:nothing}</div>`:nothing} ${this.loading?html`<div class="loading-container-switch"><ix-progress .linear="${!1}" .indeterminate="${!0}"></ix-progress></div>`:this.renderTree()}<div id="loadMore">${this.scrollLoading?html`<div><ix-progress .linear="${!1}" .indeterminate="${!0}"></ix-progress></div>`:nothing}</div></div></div></form></ix-dialog>`}getSelectedAccount(){var e=findAccountById(this.accounts,this.selectedAccountNumber);return authedUser.setSelectedAccount(null!=e?e:void 0),e}renderNestedAccountStructureSelect(){var e;return html`<ix-field ?disabled="${this.disabled}" @click="${this.openDialog}" data-testid="${IxAccountSwitcherTestIds.NESTED_ACCOUNT_SWITCHER_TRIGGER}"><div class="subaccount-wrap"><span class="subaccount-name" data-testid="ix-account-switcher-subaccount-name">${null==(e=this.selectedAccount)?void 0:e.displayName}</span><ix-icon class="dd-icon">arrow_drop_down</ix-icon></div></ix-field>`}renderFlatAccountStructureSelect(){let o=this.getSelectedAccount(),c=html`<ix-label-tag>Active</ix-label-tag>`;var e=this.accounts.map(e=>{var t,i=e.id===(null==o?void 0:o.id);return html`<ix-select-option value="${e.id}" .selected="${i}"><div slot="headline">${null!=(t=null==e?void 0:e.displayName)?t:e.name}</div><div slot="end">${i?c:nothing}</div></ix-select-option>`});return html`<div class="account-switcher__select"><ix-select ?disabled="${this.disabled}" @request-selection="${e=>{e=e.target;this.dispatchEvent(new CustomEvent("account-switched",{detail:e.value,bubbles:!0,composed:!0}))}}">${e}</ix-select></div>`}render(){var e=this.accounts.some(e=>e.subaccounts&&0<e.subaccounts.length);return html`<div class="account-switcher-container">${e||this.enableFilterDialog?this.renderNestedAccountStructureSelect():this.renderFlatAccountStructureSelect()}</div>${e||this.enableFilterDialog?this.renderDialog():null}`}}__decorate([query("#accountTree")],IxAccountSwitcher.prototype,"accountTree",void 0),__decorate([query("#searchInput")],IxAccountSwitcher.prototype,"searchInput",void 0),__decorate([property({type:String,reflect:!0})],IxAccountSwitcher.prototype,"selectedAccountNumber",void 0),__decorate([property({type:Array})],IxAccountSwitcher.prototype,"accounts",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"prevDataAvailable",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"nextDataAvailable",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"disabled",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"enableFilterDialog",void 0),__decorate([state()],IxAccountSwitcher.prototype,"showDialog",void 0),__decorate([state()],IxAccountSwitcher.prototype,"visibleAccounts",void 0),__decorate([property({type:Boolean})],IxAccountSwitcher.prototype,"loading",void 0),__decorate([state()],IxAccountSwitcher.prototype,"scrollLoading",void 0),__decorate([state()],IxAccountSwitcher.prototype,"prevScrollLoading",void 0),__decorate([state()],IxAccountSwitcher.prototype,"displayFilters",void 0),__decorate([state()],IxAccountSwitcher.prototype,"filterString",void 0),__decorate([state()],IxAccountSwitcher.prototype,"selectedAccount",void 0),__decorate([state()],IxAccountSwitcher.prototype,"scrollTop",void 0),__decorate([state()],IxAccountSwitcher.prototype,"accountsLength",void 0),__decorate([state()],IxAccountSwitcher.prototype,"resettingInitialList",void 0),__decorate([state()],IxAccountSwitcher.prototype,"rebuildingTree",void 0),__decorate([property()],IxAccountSwitcher.prototype,"keyValue",void 0),__decorate([state()],IxAccountSwitcher.prototype,"treeData",void 0),__decorate([state()],IxAccountSwitcher.prototype,"enableFetchPage",void 0),__decorate([state()],IxAccountSwitcher.prototype,"selectedNodeRef",void 0);let AccountSwitcherStyles=css`#account-switcher-dialog{position:relative;z-index:var(--ix-account-switcher-z-index,50)}.subaccount-wrap{background:var(--clr-surface-container-lowest,#fff);display:flex;border-radius:5px;--ix-icon-font-size:1.6rem}.subaccount-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:0;flex:1}.dd-icon{margin:-2px -5px -5px 0}.headline{display:flex}.title{flex:1;font-size:1.25rem;line-height:24px;font-family:var(--root-secondary-font, 'Red Hat Display', 'sans-serif');font-weight:700}#account-switcher-dialog-form{padding:8px 24px}#accountTree{overflow:auto;border:1px solid #e0e0e0;border-radius:.25rem;height:50vh;margin:1rem 0;padding:0;width:512px}#loadMore,#loadPrevious{display:flex;justify-content:center;padding:.5rem;--md-circular-progress-size:40px}ix-textbox{--md-filled-text-field-top-space:6px;--md-filled-text-field-bottom-space:6px;--md-filled-text-field-container-color:rgba(245, 247, 255, 1);--md-filled-field-hover-state-layer-opacity:0;--md-filled-field-hover-state-layer-opacity:0;--md-filled-field-leading-content-color:rgba(9, 34, 65, 1);--md-filled-text-field-container-shape-end-end:4px;--md-filled-text-field-container-shape-end-start:4px;--md-filled-text-field-focus-active-indicator-height:0px;--md-filled-text-field-hover-active-indicator-height:0px;--md-filled-text-field-active-indicator-height:0px;--ix-icon-color:rgba(9, 34, 65, 1);--md-filled-text-field-input-text-placeholder-color:rgba(9, 34, 65, 0.7);--md-filled-text-field-input-text-size:0.875rem}.account-filter{cursor:pointer;padding:2px}.account-filter:hover{text-decoration:underline}.account-filter.active{text-decoration:underline;font-weight:700}.padded-container{padding:12px}.loading-container,.loading-container-switch{display:flex;flex:1;justify-content:center;align-items:center}.loading-container-switch{min-height:300px}.stick-to-top{position:sticky;top:0;background-color:#c8dffa;z-index:1}.no-results{padding:12px 0 0 24px;margin:0;font-size:14px;line-height:24px;color:rgba(9,34,65,.7)}@media only screen and (max-width:600px){:host{--md-outlined-field-container-shape:0px}.subaccount-wrap{border-radius:0}#accountTree{max-width:100%}}`;class IxAccountSwitcherStyled extends IxAccountSwitcher{}IxAccountSwitcherStyled.styles=[AccountSwitcherStyles,css`:host{--md-theme-primary:var(--md-sys-color-primary, blue)}`],window.customElements.define("ix-account-switcher",IxAccountSwitcherStyled);export{IxAccountSwitcherStyled};
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent ix-account-switcher following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "Digital Realty",
6
- "version": "1.2.10",
6
+ "version": "1.2.12",
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
9
9
  "module": "dist/index.js",
@@ -25,14 +25,14 @@
25
25
  "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\""
26
26
  },
27
27
  "dependencies": {
28
- "@digital-realty/ix-dialog": "^1.2.6",
28
+ "@digital-realty/ix-dialog": "^1.2.7",
29
29
  "@digital-realty/ix-field": "^1.2.2",
30
30
  "@digital-realty/ix-icon-button": "^1.2.2",
31
31
  "@digital-realty/ix-label-tag": "^2.3.2",
32
32
  "@digital-realty/ix-progress": "^1.3.2",
33
33
  "@digital-realty/ix-select": "^1.2.3",
34
34
  "@digital-realty/ix-textbox": "^2.3.3",
35
- "@digital-realty/ix-tree": "^3.3.4",
35
+ "@digital-realty/ix-tree": "^3.3.5",
36
36
  "lit": "^3.2.1",
37
37
  "mobx": "^6.12.3",
38
38
  "mobx-persist-store": "^1.1.5"
@@ -107,5 +107,5 @@
107
107
  "README.md",
108
108
  "LICENSE"
109
109
  ],
110
- "gitHead": "9f23eac19ed991ed72a008d5f0a944109a9567e2"
110
+ "gitHead": "4e2dd87a8e6b0552c642099f84c46a77c718db87"
111
111
  }