@digital-realty/ix-account-switcher 1.2.14 → 1.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +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 @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
|
+
{"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 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"]}
|
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.
|
|
6
|
+
"version": "1.2.15",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"module": "dist/index.js",
|
|
@@ -107,5 +107,5 @@
|
|
|
107
107
|
"README.md",
|
|
108
108
|
"LICENSE"
|
|
109
109
|
],
|
|
110
|
-
"gitHead": "
|
|
110
|
+
"gitHead": "a23ee168998ced420a94d5926b856cfe68136421"
|
|
111
111
|
}
|