@carbon/web-components 2.43.0 → 2.44.0
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.
- package/custom-elements.json +8 -15
- package/dist/accordion.min.js +3 -3
- package/dist/ai-label.min.js +3 -3
- package/dist/ai-skeleton.min.js +3 -3
- package/dist/badge-indicator.min.js +3 -3
- package/dist/breadcrumb.min.js +6 -6
- package/dist/{button-eTloXzqX.js → button-CKgb4gp4.js} +4 -3
- package/dist/{button-skeleton-Dk3chlBc.js → button-skeleton-CXiEp3M8.js} +3 -3
- package/dist/button.min.js +3 -3
- package/dist/chat-button.min.js +3 -3
- package/dist/{checkbox-cr5-wvt1.js → checkbox-cQAHKwqU.js} +3 -3
- package/dist/checkbox.min.js +3 -3
- package/dist/{class-map-CJoc5JjN.js → class-map-warKt-hW.js} +3 -3
- package/dist/code-snippet.min.js +3 -3
- package/dist/combo-box.min.js +20 -9
- package/dist/combo-button.min.js +3 -3
- package/dist/{content-switcher-item-3fTDI2Aq.js → content-switcher-item-Cvkk1snv.js} +3 -3
- package/dist/content-switcher.min.js +3 -3
- package/dist/copy-button.min.js +3 -3
- package/dist/data-table.min.js +3 -3
- package/dist/date-picker.min.js +3 -3
- package/dist/dropdown-item-BHkaXms6.js +100 -0
- package/dist/dropdown.min.js +6 -10
- package/dist/feature-flags.min.js +3 -3
- package/dist/file-uploader.min.js +3 -3
- package/dist/floating-menu.min.js +3 -3
- package/dist/fluid-search.min.js +3 -3
- package/dist/fluid-select.min.js +3 -3
- package/dist/fluid-text-input.min.js +3 -3
- package/dist/fluid-textarea.min.js +3 -3
- package/dist/{focus-yD1Q_pDt.js → focus-Bwk_lgHl.js} +3 -3
- package/dist/{form-BaYTr2z0.js → form-CfvlKX6g.js} +3 -3
- package/dist/form-group.min.js +3 -3
- package/dist/form.min.js +3 -3
- package/dist/grid.min.js +3 -3
- package/dist/heading.min.js +3 -3
- package/dist/{host-listener-BJsBtsIt.js → host-listener-DJH6yN4y.js} +3 -3
- package/dist/icon-button.min.js +3 -3
- package/dist/icon-indicator.min.js +3 -3
- package/dist/{icon-loader-CqB9WRMP.js → icon-loader-pxyCrZwZ.js} +3 -3
- package/dist/{icon-loader-utils-DUl0vwdh.js → icon-loader-utils-lPqg1iFP.js} +3 -3
- package/dist/icon.min.js +3 -3
- package/dist/{if-defined-IxozbDOJ.js → if-defined-zhGxRN9M.js} +3 -3
- package/dist/{if-non-empty-CqQHBHdQ.js → if-non-empty-CTDui88C.js} +3 -3
- package/dist/inline-loading.min.js +4 -4
- package/dist/layer.min.js +3 -3
- package/dist/link.min.js +3 -3
- package/dist/list.min.js +3 -3
- package/dist/{loading-icon-CSgLYhyw.js → loading-icon-DfL1aC0N.js} +3 -3
- package/dist/loading.min.js +3 -3
- package/dist/menu-button.min.js +3 -3
- package/dist/menu.min.js +3 -3
- package/dist/modal.min.js +3 -3
- package/dist/multi-select.min.js +4 -3
- package/dist/notification.min.js +3 -3
- package/dist/number-input.min.js +3 -3
- package/dist/overflow-menu.min.js +3 -3
- package/dist/page-header.min.js +3 -3
- package/dist/pagination.min.js +3 -3
- package/dist/password-input.min.js +3 -3
- package/dist/popover.min.js +3 -3
- package/dist/progress-bar.min.js +3 -3
- package/dist/progress-indicator.min.js +3 -3
- package/dist/{property-B_F7V5eB.js → property-CoShOfqo.js} +3 -3
- package/dist/{query-assigned-elements-DeMmXVMb.js → query-assigned-elements-DvdLJjH_.js} +3 -3
- package/dist/radio-button.min.js +3 -3
- package/dist/{search-DhwzN9sI.js → search-mXlboHWm.js} +3 -3
- package/dist/search.min.js +3 -3
- package/dist/{select-BIi12O8B.js → select-BLrQXy2c.js} +4 -3
- package/dist/{select-item-Be7OL9mD.js → select-item-CMDCy7c6.js} +3 -3
- package/dist/{select-skeleton-8uIIQzNt.js → select-skeleton-D_qjQ9lZ.js} +3 -3
- package/dist/select.min.js +3 -3
- package/dist/shape-indicator.min.js +3 -3
- package/dist/side-panel.min.js +3 -3
- package/dist/skeleton-icon.min.js +3 -3
- package/dist/skeleton-placeholder.min.js +3 -3
- package/dist/skeleton-text.min.js +3 -3
- package/dist/skip-to-content.min.js +3 -3
- package/dist/slider.min.js +3 -3
- package/dist/slug.min.js +3 -3
- package/dist/stack.min.js +3 -3
- package/dist/{state-CJQmj6wG.js → state-D7rtIkB2.js} +3 -3
- package/dist/structured-list.min.js +3 -3
- package/dist/tabs.min.js +3 -3
- package/dist/tag.min.js +3 -3
- package/dist/tearsheet.min.js +3 -3
- package/dist/{text-input-C0qeKR9e.js → text-input-CIM-jSOC.js} +3 -3
- package/dist/text-input.min.js +3 -3
- package/dist/textarea.min.js +3 -3
- package/dist/tile.min.js +3 -3
- package/dist/time-picker.min.js +3 -3
- package/dist/toggle-tip.min.js +3 -3
- package/dist/toggle.min.js +3 -3
- package/dist/{tooltip-content-CMbdEoxb.js → tooltip-content-D25Rgp9z.js} +3 -3
- package/dist/tooltip.min.js +3 -3
- package/dist/tree-view.min.js +3 -3
- package/dist/ui-shell.min.js +3 -3
- package/dist/{unsafe-html-Dqv0UqC_.js → unsafe-html-C26Gpb7O.js} +3 -3
- package/es/components/ai-label/ai-label.scss.js +1 -1
- package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es/components/button/button.js +1 -0
- package/es/components/button/button.js.map +1 -1
- package/es/components/combo-box/combo-box-item.d.ts +10 -1
- package/es/components/combo-box/combo-box-item.js +65 -1
- package/es/components/combo-box/combo-box-item.js.map +1 -1
- package/es/components/combo-box/combo-box.d.ts +6 -9
- package/es/components/combo-box/combo-box.js +108 -65
- package/es/components/combo-box/combo-box.js.map +1 -1
- package/es/components/combo-box/combo-box.scss.js +1 -1
- package/es/components/data-table/data-table.scss.js +1 -1
- package/es/components/dropdown/dropdown-skeleton.d.ts +10 -1
- package/es/components/dropdown/dropdown-skeleton.js +31 -7
- package/es/components/dropdown/dropdown-skeleton.js.map +1 -1
- package/es/components/dropdown/dropdown.d.ts +41 -7
- package/es/components/dropdown/dropdown.js +438 -65
- package/es/components/dropdown/dropdown.js.map +1 -1
- package/es/components/dropdown/dropdown.scss.js +1 -1
- package/es/components/icon-button/icon-button.scss.js +1 -1
- package/es/components/inline-loading/inline-loading.js +1 -1
- package/es/components/inline-loading/inline-loading.js.map +1 -1
- package/es/components/inline-loading/inline-loading.scss.js +1 -1
- package/es/components/multi-select/multi-select.d.ts +13 -1
- package/es/components/multi-select/multi-select.js +53 -0
- package/es/components/multi-select/multi-select.js.map +1 -1
- package/es/components/multi-select/multi-select.scss.js +1 -1
- package/es/components/popover/popover.scss.js +1 -1
- package/es/components/select/select.js +1 -0
- package/es/components/select/select.js.map +1 -1
- package/es/components/slug/slug.scss.js +1 -1
- package/es/components/toggle-tip/toggletip.scss.js +1 -1
- package/es/components/tooltip/tooltip.js +1 -1
- package/es/components/tooltip/tooltip.js.map +1 -1
- package/es/components/tooltip/tooltip.scss.js +1 -1
- package/es-custom/components/ai-label/ai-label.scss.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es-custom/components/button/button.js +1 -0
- package/es-custom/components/button/button.js.map +1 -1
- package/es-custom/components/combo-box/combo-box-item.d.ts +10 -1
- package/es-custom/components/combo-box/combo-box-item.js +65 -1
- package/es-custom/components/combo-box/combo-box-item.js.map +1 -1
- package/es-custom/components/combo-box/combo-box.d.ts +6 -9
- package/es-custom/components/combo-box/combo-box.js +108 -65
- package/es-custom/components/combo-box/combo-box.js.map +1 -1
- package/es-custom/components/combo-box/combo-box.scss.js +1 -1
- package/es-custom/components/data-table/data-table.scss.js +1 -1
- package/es-custom/components/dropdown/dropdown-skeleton.d.ts +10 -1
- package/es-custom/components/dropdown/dropdown-skeleton.js +31 -7
- package/es-custom/components/dropdown/dropdown-skeleton.js.map +1 -1
- package/es-custom/components/dropdown/dropdown.d.ts +41 -7
- package/es-custom/components/dropdown/dropdown.js +438 -65
- package/es-custom/components/dropdown/dropdown.js.map +1 -1
- package/es-custom/components/dropdown/dropdown.scss.js +1 -1
- package/es-custom/components/icon-button/icon-button.scss.js +1 -1
- package/es-custom/components/inline-loading/inline-loading.js +1 -1
- package/es-custom/components/inline-loading/inline-loading.js.map +1 -1
- package/es-custom/components/inline-loading/inline-loading.scss.js +1 -1
- package/es-custom/components/multi-select/multi-select.d.ts +13 -1
- package/es-custom/components/multi-select/multi-select.js +53 -0
- package/es-custom/components/multi-select/multi-select.js.map +1 -1
- package/es-custom/components/multi-select/multi-select.scss.js +1 -1
- package/es-custom/components/popover/popover.scss.js +1 -1
- package/es-custom/components/select/select.js +1 -0
- package/es-custom/components/select/select.js.map +1 -1
- package/es-custom/components/slug/slug.scss.js +1 -1
- package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
- package/es-custom/components/tooltip/tooltip.js +1 -1
- package/es-custom/components/tooltip/tooltip.js.map +1 -1
- package/es-custom/components/tooltip/tooltip.scss.js +1 -1
- package/lib/components/combo-box/combo-box-item.d.ts +10 -1
- package/lib/components/combo-box/combo-box.d.ts +6 -9
- package/lib/components/dropdown/dropdown-skeleton.d.ts +10 -1
- package/lib/components/dropdown/dropdown.d.ts +41 -7
- package/lib/components/multi-select/multi-select.d.ts +13 -1
- package/package.json +6 -6
- package/scss/components/breadcrumb/breadcrumb.scss +1 -3
- package/scss/components/combo-box/combo-box.scss +72 -3
- package/scss/components/data-table/_table-core.scss +10 -0
- package/scss/components/data-table/_table-expandable.scss +6 -0
- package/scss/components/data-table/_table-selection.scss +7 -0
- package/scss/components/data-table/_table-sizes.scss +4 -0
- package/scss/components/data-table/data-table.scss +6 -9
- package/scss/components/dropdown/dropdown.scss +174 -22
- package/scss/components/menu/menu-variables.scss +0 -2
- package/scss/components/menu/menu.scss +1 -1
- package/scss/components/multi-select/multi-select.scss +7 -0
- package/scss/components/overflow-menu/overflow-menu.scss +0 -2
- package/scss/components/popover/popover.scss +58 -11
- package/scss/components/tooltip/tooltip-story.scss +8 -4
- package/telemetry.yml +0 -1
- package/dist/dropdown-item-BO7AhHPd.js +0 -96
- package/dist/{16-DhAznVKm.js → 16-5c5jFrXp.js} +2 -2
- package/dist/{16-B7MRS_3W.js → 16-B9Uo1cvh.js} +2 -2
- package/dist/{16-BWlgPBcu.js → 16-BMXNUlRI.js} +2 -2
- package/dist/{16-CdxGkvXO.js → 16-C-j0eQg7.js} +2 -2
- package/dist/{16-CJNlj_0b.js → 16-CZiCF7iO.js} +2 -2
- package/dist/{16-DoN7q01_.js → 16-CmZExt83.js} +2 -2
- package/dist/{16-DTvjc9uv.js → 16-DbvtK9-e.js} +2 -2
- package/dist/{16-GKRs-ALp.js → 16-INlZq7cB.js} +2 -2
- package/dist/{16-B46MLj4i.js → 16-dlAJdf7K.js} +2 -2
- package/dist/{16-B3Yskhl0.js → 16-tP236nqZ.js} +2 -2
- package/dist/{16-Bf2P7KMJ.js → 16-u6yXz6wM.js} +2 -2
- package/dist/{16-Bxm7Omxq.js → 16-vHbYZhS2.js} +2 -2
- package/dist/{20-CuEbZLGA.js → 20-ClE5EQkn.js} +2 -2
- package/dist/{20-DlknbFYR.js → 20-seUgpuwc.js} +2 -2
- package/dist/{carbon-element-DDrYm3XO.js → carbon-element-sn5DFO1t.js} +2 -2
- package/dist/{collection-helpers-C5emLOnk.js → collection-helpers-DwvpKeJx.js} +2 -2
- package/dist/{consume-BeeFGGfo.js → consume-C6px77x6.js} +2 -2
- package/dist/{directive-Dlo2OKiC.js → directive-CwtBJVHj.js} +2 -2
- package/dist/{floating-controller-DLpRVhGd.js → floating-controller-qGN47tO7.js} +2 -2
- package/dist/{host-listener-BCnAWDV7.js → host-listener-6VuJ4xzb.js} +2 -2
- package/dist/{lit-element-eFlPHqE1.js → lit-element-ljyXx2IF.js} +2 -2
- package/dist/{on-DvnWS_DB.js → on-CsYzs_5y.js} +2 -2
- package/dist/{query-BdmT5Ln1.js → query-BpyCOA3I.js} +2 -2
- package/dist/{radio-group-manager-B_pENWmT.js → radio-group-manager-DCfD4e6U.js} +2 -2
- package/dist/{settings-BBN_bDP6.js → settings-BYFrjJ1N.js} +2 -2
- package/dist/{shared-enums-D8TrS6Ts.js → shared-enums-BhRvRKoR.js} +2 -2
- package/dist/{validity-BUGyJDQ6.js → validity-wk0CEz9X.js} +2 -2
|
@@ -115,7 +115,7 @@ let CDSInlineLoading = class CDSInlineLoading extends LitElement {
|
|
|
115
115
|
`;
|
|
116
116
|
return html `
|
|
117
117
|
${statusIconWrapperResult}
|
|
118
|
-
<
|
|
118
|
+
<div class="${prefix}--inline-loading__text"><slot></slot></div>
|
|
119
119
|
`;
|
|
120
120
|
}
|
|
121
121
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-loading.js","sources":["../../../src/components/inline-loading/inline-loading.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport CheckmarkFilled16 from '@carbon/icons/es/checkmark--filled/16.js';\nimport ErrorFilled16 from '@carbon/icons/es/error--filled/16.js';\nimport { prefix } from '../../globals/settings';\nimport getLoadingIcon from '../loading/loading-icon';\nimport { INLINE_LOADING_STATE } from './defs';\nimport styles from './inline-loading.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { iconLoader } from '../../globals/internal/icon-loader';\n\nexport { INLINE_LOADING_STATE };\n\n/**\n * Lnline loading spinner.\n *\n * @element cds-custom-inline-loading\n * @fires cds-custom-inline-loading-onsuccess The custom event fired when inline-loading has finished status\n */\n@customElement(`${prefix}-inline-loading`)\nclass CDSInlineLoading extends LitElement {\n /**\n * @deprecated The 'assistive-text' property will be deprecated in the next major release. Please use `icon-description` instead.\n */\n @property({ attribute: 'assistive-text' })\n get assistiveText() {\n return this.iconDescription;\n }\n set assistiveText(value) {\n this.iconDescription = value;\n }\n /**\n * The assistive text for the spinner icon.\n */\n @property({ attribute: 'icon-description' })\n iconDescription = 'Loading';\n\n /**\n * Provide a delay for the setTimeout for success\n */\n @property({ attribute: 'success-delay' })\n successDelay = 1500;\n\n /**\n * @returns The template for the status icon.\n */\n private _renderIcon() {\n const { iconDescription, status } = this;\n if (status === INLINE_LOADING_STATE.ERROR) {\n return iconLoader(ErrorFilled16, {\n class: `${prefix}--inline-loading--error`,\n 'aria-label': iconDescription,\n });\n }\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n\n if (status === INLINE_LOADING_STATE.FINISHED) {\n setTimeout(() => {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSInlineLoading).eventOnSuccess,\n init\n )\n );\n }, this.successDelay);\n\n return iconLoader(CheckmarkFilled16, {\n class: `${prefix}--inline-loading__checkmark-container`,\n 'aria-label': iconDescription,\n });\n }\n if (\n status === INLINE_LOADING_STATE.INACTIVE ||\n status === INLINE_LOADING_STATE.ACTIVE\n ) {\n const classes = classMap({\n [`${prefix}--loading`]: true,\n [`${prefix}--loading--small`]: true,\n [`${prefix}--loading--stop`]: status === INLINE_LOADING_STATE.INACTIVE,\n });\n return html`\n <div class=\"${classes}\">\n ${getLoadingIcon({ description: iconDescription, small: true })}\n </div>\n `;\n }\n return undefined;\n }\n\n /**\n * The loading status.\n */\n @property({ reflect: true })\n status = INLINE_LOADING_STATE.ACTIVE;\n\n static get eventOnSuccess() {\n return `${prefix}-inline-loading-onsuccess`;\n }\n\n connectedCallback() {\n if (!this.hasAttribute('aria-live')) {\n this.setAttribute('aria-live', 'assertive');\n }\n super.connectedCallback();\n }\n\n render() {\n const statusIconResult = this._renderIcon();\n const statusIconWrapperResult = !statusIconResult\n ? undefined\n : html`\n <div class=\"${prefix}--inline-loading__animation\">\n ${statusIconResult}\n </div>\n `;\n return html`\n ${statusIconWrapperResult}\n <
|
|
1
|
+
{"version":3,"file":"inline-loading.js","sources":["../../../src/components/inline-loading/inline-loading.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport CheckmarkFilled16 from '@carbon/icons/es/checkmark--filled/16.js';\nimport ErrorFilled16 from '@carbon/icons/es/error--filled/16.js';\nimport { prefix } from '../../globals/settings';\nimport getLoadingIcon from '../loading/loading-icon';\nimport { INLINE_LOADING_STATE } from './defs';\nimport styles from './inline-loading.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { iconLoader } from '../../globals/internal/icon-loader';\n\nexport { INLINE_LOADING_STATE };\n\n/**\n * Lnline loading spinner.\n *\n * @element cds-custom-inline-loading\n * @fires cds-custom-inline-loading-onsuccess The custom event fired when inline-loading has finished status\n */\n@customElement(`${prefix}-inline-loading`)\nclass CDSInlineLoading extends LitElement {\n /**\n * @deprecated The 'assistive-text' property will be deprecated in the next major release. Please use `icon-description` instead.\n */\n @property({ attribute: 'assistive-text' })\n get assistiveText() {\n return this.iconDescription;\n }\n set assistiveText(value) {\n this.iconDescription = value;\n }\n /**\n * The assistive text for the spinner icon.\n */\n @property({ attribute: 'icon-description' })\n iconDescription = 'Loading';\n\n /**\n * Provide a delay for the setTimeout for success\n */\n @property({ attribute: 'success-delay' })\n successDelay = 1500;\n\n /**\n * @returns The template for the status icon.\n */\n private _renderIcon() {\n const { iconDescription, status } = this;\n if (status === INLINE_LOADING_STATE.ERROR) {\n return iconLoader(ErrorFilled16, {\n class: `${prefix}--inline-loading--error`,\n 'aria-label': iconDescription,\n });\n }\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n\n if (status === INLINE_LOADING_STATE.FINISHED) {\n setTimeout(() => {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSInlineLoading).eventOnSuccess,\n init\n )\n );\n }, this.successDelay);\n\n return iconLoader(CheckmarkFilled16, {\n class: `${prefix}--inline-loading__checkmark-container`,\n 'aria-label': iconDescription,\n });\n }\n if (\n status === INLINE_LOADING_STATE.INACTIVE ||\n status === INLINE_LOADING_STATE.ACTIVE\n ) {\n const classes = classMap({\n [`${prefix}--loading`]: true,\n [`${prefix}--loading--small`]: true,\n [`${prefix}--loading--stop`]: status === INLINE_LOADING_STATE.INACTIVE,\n });\n return html`\n <div class=\"${classes}\">\n ${getLoadingIcon({ description: iconDescription, small: true })}\n </div>\n `;\n }\n return undefined;\n }\n\n /**\n * The loading status.\n */\n @property({ reflect: true })\n status = INLINE_LOADING_STATE.ACTIVE;\n\n static get eventOnSuccess() {\n return `${prefix}-inline-loading-onsuccess`;\n }\n\n connectedCallback() {\n if (!this.hasAttribute('aria-live')) {\n this.setAttribute('aria-live', 'assertive');\n }\n super.connectedCallback();\n }\n\n render() {\n const statusIconResult = this._renderIcon();\n const statusIconWrapperResult = !statusIconResult\n ? undefined\n : html`\n <div class=\"${prefix}--inline-loading__animation\">\n ${statusIconResult}\n </div>\n `;\n return html`\n ${statusIconWrapperResult}\n <div class=\"${prefix}--inline-loading__text\"><slot></slot></div>\n `;\n }\n\n static styles = styles;\n}\n\nexport default CDSInlineLoading;\n"],"names":["customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AAgBH;;;;;AAKG;AAEH,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU,CAAA;AAAzC,IAAA,WAAA,GAAA;;AAWE;;AAEG;QAEH,IAAe,CAAA,eAAA,GAAG,SAAS;AAE3B;;AAEG;QAEH,IAAY,CAAA,YAAA,GAAG,IAAI;AAoDnB;;AAEG;AAEH,QAAA,IAAA,CAAA,MAAM,GAAG,oBAAoB,CAAC,MAAM;;AA5EpC;;AAEG;AAEH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,eAAe;;IAE7B,IAAI,aAAa,CAAC,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;AAc9B;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI;AACxC,QAAA,IAAI,MAAM,KAAK,oBAAoB,CAAC,KAAK,EAAE;YACzC,OAAO,UAAU,CAAC,aAAa,EAAE;gBAC/B,KAAK,EAAE,CAAG,EAAA,MAAM,CAAyB,uBAAA,CAAA;AACzC,gBAAA,YAAY,EAAE,eAAe;AAC9B,aAAA,CAAC;;AAEJ,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,QAAQ,EAAE,IAAI;SACf;AAED,QAAA,IAAI,MAAM,KAAK,oBAAoB,CAAC,QAAQ,EAAE;YAC5C,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACZ,IAAI,CAAC,WAAuC,CAAC,cAAc,EAC5D,IAAI,CACL,CACF;AACH,aAAC,EAAE,IAAI,CAAC,YAAY,CAAC;YAErB,OAAO,UAAU,CAAC,iBAAiB,EAAE;gBACnC,KAAK,EAAE,CAAG,EAAA,MAAM,CAAuC,qCAAA,CAAA;AACvD,gBAAA,YAAY,EAAE,eAAe;AAC9B,aAAA,CAAC;;AAEJ,QAAA,IACE,MAAM,KAAK,oBAAoB,CAAC,QAAQ;AACxC,YAAA,MAAM,KAAK,oBAAoB,CAAC,MAAM,EACtC;YACA,MAAM,OAAO,GAAG,QAAQ,CAAC;AACvB,gBAAA,CAAC,CAAG,EAAA,MAAM,CAAW,SAAA,CAAA,GAAG,IAAI;AAC5B,gBAAA,CAAC,CAAG,EAAA,MAAM,CAAkB,gBAAA,CAAA,GAAG,IAAI;gBACnC,CAAC,CAAA,EAAG,MAAM,CAAiB,eAAA,CAAA,GAAG,MAAM,KAAK,oBAAoB,CAAC,QAAQ;AACvE,aAAA,CAAC;AACF,YAAA,OAAO,IAAI,CAAA;sBACK,OAAO,CAAA;YACjB,cAAc,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;OAElE;;AAEH,QAAA,OAAO,SAAS;;AASlB,IAAA,WAAW,cAAc,GAAA;QACvB,OAAO,CAAA,EAAG,MAAM,CAAA,yBAAA,CAA2B;;IAG7C,iBAAiB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC;;QAE7C,KAAK,CAAC,iBAAiB,EAAE;;IAG3B,MAAM,GAAA;AACJ,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE;QAC3C,MAAM,uBAAuB,GAAG,CAAC;AAC/B,cAAE;cACA,IAAI,CAAA;wBACY,MAAM,CAAA;cAChB,gBAAgB;;SAErB;AACL,QAAA,OAAO,IAAI,CAAA;QACP,uBAAuB;oBACX,MAAM,CAAA;KACrB;;;AAGI,gBAAM,CAAA,MAAA,GAAG,MAAH;AApGb,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;AAGxC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;AAQD,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACf,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,CAAA;AAM5B,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE;AACpB,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAwDpB,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AACU,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AA7EjC,gBAAgB,GAAA,UAAA,CAAA;AADrB,IAAAA,aAAa,CAAC,CAAA,EAAG,MAAM,CAAA,eAAA,CAAiB;AACnC,CAAA,EAAA,gBAAgB,CA0GrB;AAED,yBAAe,gBAAgB;;;;"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { css } from 'lit';
|
|
9
9
|
|
|
10
|
-
var styles = css([".cds-custom--layer-one,:root{--cds-layer:var(--cds-layer-01,#f4f4f4);--cds-layer-active:var(--cds-layer-active-01,#c6c6c6);--cds-layer-background:var(--cds-layer-background-01,#fff);--cds-layer-hover:var(--cds-layer-hover-01,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-01,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-01,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-01,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-01,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-01,#a8a8a8);--cds-field:var(--cds-field-01,#f4f4f4);--cds-field-hover:var(--cds-field-hover-01,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-00,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-01,#c6c6c6);--cds-border-strong:var(--cds-border-strong-01,#8d8d8d);--cds-border-tile:var(--cds-border-tile-01,#c6c6c6)}.cds-custom--layer-two{--cds-layer:var(--cds-layer-02,#fff);--cds-layer-active:var(--cds-layer-active-02,#c6c6c6);--cds-layer-background:var(--cds-layer-background-02,#f4f4f4);--cds-layer-hover:var(--cds-layer-hover-02,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-02,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-02,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-02,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-02,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-02,#a8a8a8);--cds-field:var(--cds-field-02,#fff);--cds-field-hover:var(--cds-field-hover-02,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-01,#c6c6c6);--cds-border-subtle-selected:var(--cds-border-subtle-selected-02,#c6c6c6);--cds-border-strong:var(--cds-border-strong-02,#8d8d8d);--cds-border-tile:var(--cds-border-tile-02,#a8a8a8)}.cds-custom--layer-three{--cds-layer:var(--cds-layer-03,#f4f4f4);--cds-layer-active:var(--cds-layer-active-03,#c6c6c6);--cds-layer-background:var(--cds-layer-background-03,#fff);--cds-layer-hover:var(--cds-layer-hover-03,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-03,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-03,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-03,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-03,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-03,#a8a8a8);--cds-field:var(--cds-field-03,#f4f4f4);--cds-field-hover:var(--cds-field-hover-03,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-02,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-03,#c6c6c6);--cds-border-strong:var(--cds-border-strong-03,#8d8d8d);--cds-border-tile:var(--cds-border-tile-03,#c6c6c6)}.cds-custom--layer-one.cds-custom--layer__with-background,.cds-custom--layer-three.cds-custom--layer__with-background,.cds-custom--layer-two.cds-custom--layer__with-background{background-color:var(--cds-layer-background)}.cds-custom--loading{border:0;box-sizing:border-box;font-family:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}.cds-custom--loading *,.cds-custom--loading :after,.cds-custom--loading :before{box-sizing:inherit}.cds-custom--loading{animation-duration:.69s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:cds-custom--rotate;animation-timing-function:linear}.cds-custom--loading svg circle{animation-duration:10ms;animation-name:cds-custom--init-stroke;animation-timing-function:cubic-bezier(.5,0,.1,1)}@media screen and (prefers-reduced-motion:reduce){.cds-custom--loading svg circle{animation:none}}.cds-custom--loading{block-size:5.5rem;inline-size:5.5rem}.cds-custom--loading__svg{fill:transparent}.cds-custom--loading__svg circle{stroke-dasharray:276.4608 276.4608;stroke-linecap:butt;stroke-width:10}.cds-custom--loading__stroke{stroke:var(--cds-interactive,#0f62fe);stroke-dashoffset:52.527552}.cds-custom--loading--small .cds-custom--loading__stroke{stroke-dashoffset:143.759616}.cds-custom--loading--stop{animation:cds-custom--rotate-end-p1 .7s cubic-bezier(0,0,.25,1) forwards,cds-custom--rotate-end-p2 .7s cubic-bezier(0,0,.25,1) .7s forwards}.cds-custom--loading--stop svg circle{animation-delay:.7s;animation-duration:.7s;animation-fill-mode:forwards;animation-name:cds-custom--stroke-end;animation-timing-function:cubic-bezier(0,0,.25,1)}@media screen and (prefers-reduced-motion:reduce){.cds-custom--loading--stop svg circle{animation:none}}.cds-custom--loading--small{block-size:1rem;inline-size:1rem;line-height:1rem}.cds-custom--loading--small circle{stroke-width:16}.cds-custom--loading--small .cds-custom--loading__svg{stroke:var(--cds-interactive,#0f62fe)}.cds-custom--loading__background{stroke:var(--cds-layer-accent);stroke-dashoffset:-22}@supports (hanging-punctuation:first) and (font:-apple-system-body) and (-webkit-appearance:none){circle.cds-custom--loading__background{stroke-dasharray:265;stroke-dashoffset:0}}.cds-custom--loading-overlay{align-items:center;background-color:var(--cds-overlay,rgba(0,0,0,.6));block-size:100%;display:flex;inline-size:100%;inset-block-start:0;inset-inline-start:0;justify-content:center;position:fixed;transition:background-color .7s cubic-bezier(.4,.14,.3,1);z-index:6000}.cds-custom--loading-overlay--stop{display:none}@keyframes cds-custom--rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes cds-custom--rotate-end-p1{to{transform:rotate(1turn)}}@keyframes cds-custom--rotate-end-p2{to{transform:rotate(-1turn)}}@keyframes cds-custom--init-stroke{0%{stroke-dashoffset:276.4608}to{stroke-dashoffset:52.527552}}@keyframes cds-custom--stroke-end{0%{stroke-dashoffset:52.527552}to{stroke-dashoffset:276.4608}}@keyframes prefix--stroke{to{stroke-dashoffset:0}}.cds-custom--inline-loading,:host(cds-custom-inline-loading){align-items:center;display:flex;inline-size:100%;min-block-size:2rem}.cds-custom--inline-loading__text{
|
|
10
|
+
var styles = css([".cds-custom--layer-one,:root{--cds-layer:var(--cds-layer-01,#f4f4f4);--cds-layer-active:var(--cds-layer-active-01,#c6c6c6);--cds-layer-background:var(--cds-layer-background-01,#fff);--cds-layer-hover:var(--cds-layer-hover-01,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-01,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-01,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-01,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-01,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-01,#a8a8a8);--cds-field:var(--cds-field-01,#f4f4f4);--cds-field-hover:var(--cds-field-hover-01,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-00,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-01,#c6c6c6);--cds-border-strong:var(--cds-border-strong-01,#8d8d8d);--cds-border-tile:var(--cds-border-tile-01,#c6c6c6)}.cds-custom--layer-two{--cds-layer:var(--cds-layer-02,#fff);--cds-layer-active:var(--cds-layer-active-02,#c6c6c6);--cds-layer-background:var(--cds-layer-background-02,#f4f4f4);--cds-layer-hover:var(--cds-layer-hover-02,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-02,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-02,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-02,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-02,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-02,#a8a8a8);--cds-field:var(--cds-field-02,#fff);--cds-field-hover:var(--cds-field-hover-02,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-01,#c6c6c6);--cds-border-subtle-selected:var(--cds-border-subtle-selected-02,#c6c6c6);--cds-border-strong:var(--cds-border-strong-02,#8d8d8d);--cds-border-tile:var(--cds-border-tile-02,#a8a8a8)}.cds-custom--layer-three{--cds-layer:var(--cds-layer-03,#f4f4f4);--cds-layer-active:var(--cds-layer-active-03,#c6c6c6);--cds-layer-background:var(--cds-layer-background-03,#fff);--cds-layer-hover:var(--cds-layer-hover-03,#e8e8e8);--cds-layer-selected:var(--cds-layer-selected-03,#e0e0e0);--cds-layer-selected-hover:var(--cds-layer-selected-hover-03,#d1d1d1);--cds-layer-accent:var(--cds-layer-accent-03,#e0e0e0);--cds-layer-accent-hover:var(--cds-layer-accent-hover-03,#d1d1d1);--cds-layer-accent-active:var(--cds-layer-accent-active-03,#a8a8a8);--cds-field:var(--cds-field-03,#f4f4f4);--cds-field-hover:var(--cds-field-hover-03,#e8e8e8);--cds-border-subtle:var(--cds-border-subtle-02,#e0e0e0);--cds-border-subtle-selected:var(--cds-border-subtle-selected-03,#c6c6c6);--cds-border-strong:var(--cds-border-strong-03,#8d8d8d);--cds-border-tile:var(--cds-border-tile-03,#c6c6c6)}.cds-custom--layer-one.cds-custom--layer__with-background,.cds-custom--layer-three.cds-custom--layer__with-background,.cds-custom--layer-two.cds-custom--layer__with-background{background-color:var(--cds-layer-background)}.cds-custom--loading{border:0;box-sizing:border-box;font-family:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}.cds-custom--loading *,.cds-custom--loading :after,.cds-custom--loading :before{box-sizing:inherit}.cds-custom--loading{animation-duration:.69s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:cds-custom--rotate;animation-timing-function:linear}.cds-custom--loading svg circle{animation-duration:10ms;animation-name:cds-custom--init-stroke;animation-timing-function:cubic-bezier(.5,0,.1,1)}@media screen and (prefers-reduced-motion:reduce){.cds-custom--loading svg circle{animation:none}}.cds-custom--loading{block-size:5.5rem;inline-size:5.5rem}.cds-custom--loading__svg{fill:transparent}.cds-custom--loading__svg circle{stroke-dasharray:276.4608 276.4608;stroke-linecap:butt;stroke-width:10}.cds-custom--loading__stroke{stroke:var(--cds-interactive,#0f62fe);stroke-dashoffset:52.527552}.cds-custom--loading--small .cds-custom--loading__stroke{stroke-dashoffset:143.759616}.cds-custom--loading--stop{animation:cds-custom--rotate-end-p1 .7s cubic-bezier(0,0,.25,1) forwards,cds-custom--rotate-end-p2 .7s cubic-bezier(0,0,.25,1) .7s forwards}.cds-custom--loading--stop svg circle{animation-delay:.7s;animation-duration:.7s;animation-fill-mode:forwards;animation-name:cds-custom--stroke-end;animation-timing-function:cubic-bezier(0,0,.25,1)}@media screen and (prefers-reduced-motion:reduce){.cds-custom--loading--stop svg circle{animation:none}}.cds-custom--loading--small{block-size:1rem;inline-size:1rem;line-height:1rem}.cds-custom--loading--small circle{stroke-width:16}.cds-custom--loading--small .cds-custom--loading__svg{stroke:var(--cds-interactive,#0f62fe)}.cds-custom--loading__background{stroke:var(--cds-layer-accent);stroke-dashoffset:-22}@supports (hanging-punctuation:first) and (font:-apple-system-body) and (-webkit-appearance:none){circle.cds-custom--loading__background{stroke-dasharray:265;stroke-dashoffset:0}}.cds-custom--loading-overlay{align-items:center;background-color:var(--cds-overlay,rgba(0,0,0,.6));block-size:100%;display:flex;inline-size:100%;inset-block-start:0;inset-inline-start:0;justify-content:center;position:fixed;transition:background-color .7s cubic-bezier(.4,.14,.3,1);z-index:6000}.cds-custom--loading-overlay--stop{display:none}@keyframes cds-custom--rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes cds-custom--rotate-end-p1{to{transform:rotate(1turn)}}@keyframes cds-custom--rotate-end-p2{to{transform:rotate(-1turn)}}@keyframes cds-custom--init-stroke{0%{stroke-dashoffset:276.4608}to{stroke-dashoffset:52.527552}}@keyframes cds-custom--stroke-end{0%{stroke-dashoffset:52.527552}to{stroke-dashoffset:276.4608}}@keyframes prefix--stroke{to{stroke-dashoffset:0}}.cds-custom--inline-loading,:host(cds-custom-inline-loading){align-items:center;color:var(--cds-text-secondary,#525252);display:flex;inline-size:100%;min-block-size:2rem}.cds-custom--inline-loading__text{font-size:var(--cds-label-02-font-size,.875rem);font-weight:var(--cds-label-02-font-weight,400);letter-spacing:var(--cds-label-02-letter-spacing,.16px);line-height:var(--cds-label-02-line-height,1.28572)}.cds-custom--inline-loading__animation{align-items:center;display:flex;justify-content:center;margin-inline-end:.5rem;position:relative}.cds-custom--inline-loading__checkmark-container{fill:var(--cds-support-success,#24a148)}.cds-custom--inline-loading__checkmark-container.cds-custom--inline-loading__svg{inline-size:.75rem;inset-block-start:.75rem;position:absolute}.cds-custom--inline-loading__checkmark-container[hidden]{display:none}.cds-custom--inline-loading__checkmark{animation-duration:.25s;animation-fill-mode:forwards;animation-name:cds-custom--stroke;fill:none;stroke:var(--cds-interactive,#0f62fe);stroke-dasharray:12;stroke-dashoffset:12;stroke-width:1.8;transform-origin:50% 50%}.cds-custom--inline-loading--error{block-size:1rem;fill:var(--cds-support-error,#da1e28);inline-size:1rem}.cds-custom--inline-loading--error[hidden]{display:none}.cds-custom--loading--small .cds-custom--inline-loading__svg{stroke:var(--cds-interactive,#0f62fe)}.cds-custom--btn .cds-custom--inline-loading--btn{min-block-size:0}.cds-custom--btn .cds-custom--inline-loading--btn .cds-custom--inline-loading__text{font-size:var(--cds-body-short-01-font-size,.875rem);font-weight:var(--cds-body-short-01-font-weight,400);letter-spacing:var(--cds-body-short-01-letter-spacing,.16px);line-height:var(--cds-body-short-01-line-height,1.28572)}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){.cds-custom--inline-loading__checkmark-container{inset-block-start:1px;inset-inline-end:.5rem}.cds-custom--inline-loading__checkmark{animation:none;stroke-dasharray:0;stroke-dashoffset:0}}"]);
|
|
11
11
|
|
|
12
12
|
export { styles as default };
|
|
13
13
|
//# sourceMappingURL=inline-loading.scss.js.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import { TemplateResult } from 'lit';
|
|
7
|
+
import { PropertyValues, TemplateResult } from 'lit';
|
|
8
8
|
import CDSDropdown from '../dropdown/dropdown';
|
|
9
9
|
import { SELECTION_FEEDBACK_OPTION } from './defs';
|
|
10
10
|
import CDSMultiSelectItem from './multi-select-item';
|
|
@@ -42,17 +42,29 @@ declare class CDSMultiSelect extends CDSDropdown {
|
|
|
42
42
|
* The `<input>` for filtering.
|
|
43
43
|
*/
|
|
44
44
|
private _filterInputNode;
|
|
45
|
+
protected get _supportsMenuInputFiltering(): boolean;
|
|
46
|
+
protected willUpdate(changedProperties: PropertyValues): void;
|
|
47
|
+
protected get _menuInputNode(): HTMLInputElement | null;
|
|
48
|
+
protected _clearMenuInputFiltering(): void;
|
|
49
|
+
protected _shouldClearMenuInputOnEscape({ menuOpen, isInputTarget, }: {
|
|
50
|
+
event: KeyboardEvent;
|
|
51
|
+
menuOpen: boolean;
|
|
52
|
+
isInputTarget: boolean;
|
|
53
|
+
}): boolean;
|
|
45
54
|
/**
|
|
46
55
|
* The trigger button.
|
|
47
56
|
*/
|
|
48
57
|
private _triggerNode;
|
|
49
58
|
protected _selectionShouldChange(itemToSelect?: CDSMultiSelectItem): boolean;
|
|
50
59
|
protected _selectionDidChange(itemToSelect?: CDSMultiSelectItem): void;
|
|
60
|
+
protected _shouldCloseAfterSelection(item?: CDSMultiSelectItem): item is undefined;
|
|
51
61
|
protected _handleClickInner(event: MouseEvent): void;
|
|
52
62
|
/**
|
|
53
63
|
* Handler for the `keypress` event, ensures filter still works upon entering space
|
|
54
64
|
*/
|
|
55
65
|
protected _handleKeypressInner(event: KeyboardEvent): void;
|
|
66
|
+
protected _handleMouseoverInner(event: MouseEvent): void;
|
|
67
|
+
protected _handleMouseleaveInner(event: MouseEvent): void;
|
|
56
68
|
/**
|
|
57
69
|
* Special andler for the `keypress` event, ensures space selection for filterable
|
|
58
70
|
* variation is disabled
|
|
@@ -96,6 +96,32 @@ let CDSMultiSelect = class CDSMultiSelect extends CDSDropdown {
|
|
|
96
96
|
return sortedArray;
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
|
+
get _supportsMenuInputFiltering() {
|
|
100
|
+
return Boolean(this.filterable);
|
|
101
|
+
}
|
|
102
|
+
willUpdate(changedProperties) {
|
|
103
|
+
this._shouldTriggerBeFocusable = !this.filterable;
|
|
104
|
+
super.willUpdate(changedProperties);
|
|
105
|
+
}
|
|
106
|
+
get _menuInputNode() {
|
|
107
|
+
var _a;
|
|
108
|
+
return this.filterable ? ((_a = this._filterInputNode) !== null && _a !== void 0 ? _a : null) : null;
|
|
109
|
+
}
|
|
110
|
+
_clearMenuInputFiltering() {
|
|
111
|
+
if (this.filterable) {
|
|
112
|
+
this._handleUserInitiatedClearInput();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
_shouldClearMenuInputOnEscape({ menuOpen, isInputTarget, }) {
|
|
116
|
+
var _a;
|
|
117
|
+
if (!menuOpen) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
if (!isInputTarget) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return Boolean((_a = this._filterInputNode) === null || _a === void 0 ? void 0 : _a.value);
|
|
124
|
+
}
|
|
99
125
|
_selectionShouldChange(itemToSelect) {
|
|
100
126
|
// If we are selecting an item, assumes we always toggle
|
|
101
127
|
return Boolean(this.value || itemToSelect);
|
|
@@ -144,6 +170,10 @@ let CDSMultiSelect = class CDSMultiSelect extends CDSDropdown {
|
|
|
144
170
|
.map((item) => item.value)
|
|
145
171
|
.join(',');
|
|
146
172
|
}
|
|
173
|
+
// Keep the menu open for individual selections, close only when clearing.
|
|
174
|
+
_shouldCloseAfterSelection(item) {
|
|
175
|
+
return !item;
|
|
176
|
+
}
|
|
147
177
|
_handleClickInner(event) {
|
|
148
178
|
var _a, _b, _c, _d;
|
|
149
179
|
const clickedItem = event.target.closest(`${prefix}-multi-select-item`);
|
|
@@ -210,6 +240,28 @@ let CDSMultiSelect = class CDSMultiSelect extends CDSDropdown {
|
|
|
210
240
|
super._handleKeypressInner(event);
|
|
211
241
|
}
|
|
212
242
|
}
|
|
243
|
+
_handleMouseoverInner(event) {
|
|
244
|
+
var _a;
|
|
245
|
+
const item = this._getDropdownItemFromEvent(event);
|
|
246
|
+
const isFiltering = this.filterable && Boolean((_a = this._filterInputNode) === null || _a === void 0 ? void 0 : _a.value.length);
|
|
247
|
+
if (!item ||
|
|
248
|
+
isFiltering ||
|
|
249
|
+
!item.hasAttribute('selected') ||
|
|
250
|
+
!item.hasAttribute('highlighted')) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
super._handleMouseoverInner(event);
|
|
254
|
+
}
|
|
255
|
+
_handleMouseleaveInner(event) {
|
|
256
|
+
var _a;
|
|
257
|
+
const constructor = this.constructor;
|
|
258
|
+
const isFiltering = this.filterable && Boolean((_a = this._filterInputNode) === null || _a === void 0 ? void 0 : _a.value.length);
|
|
259
|
+
const highlightedItem = this.querySelector(constructor.selectorItemHighlighted);
|
|
260
|
+
if (isFiltering || (highlightedItem === null || highlightedItem === void 0 ? void 0 : highlightedItem.hasAttribute('selected'))) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
super._handleMouseleaveInner(event);
|
|
264
|
+
}
|
|
213
265
|
/**
|
|
214
266
|
* Special andler for the `keypress` event, ensures space selection for filterable
|
|
215
267
|
* variation is disabled
|
|
@@ -319,6 +371,7 @@ let CDSMultiSelect = class CDSMultiSelect extends CDSDropdown {
|
|
|
319
371
|
placeholder="${label}"
|
|
320
372
|
role="combobox"
|
|
321
373
|
aria-controls="menu-body"
|
|
374
|
+
aria-expanded="${String(this.open)}"
|
|
322
375
|
aria-autocomplete="list"
|
|
323
376
|
@input="${this._handleInput}" />
|
|
324
377
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select.js","sources":["../../../src/components/multi-select/multi-select.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, TemplateResult } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { prefix } from '../../globals/settings';\nimport Close16 from '@carbon/icons/es/close/16.js';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport CDSDropdown, {\n DROPDOWN_KEYBOARD_ACTION,\n DROPDOWN_TYPE,\n} from '../dropdown/dropdown';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport { SELECTION_FEEDBACK_OPTION } from './defs';\nimport CDSMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport {\n DROPDOWN_SIZE,\n DROPDOWN_TYPE,\n DROPDOWN_DIRECTION,\n} from '../dropdown/dropdown';\n\nexport { SELECTION_FEEDBACK_OPTION };\n\n/**\n * Multi select.\n *\n * @element cds-custom-multi-select\n * @fires cds-custom-multi-select-beingselected\n * The custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n * @fires cds-custom-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires cds-custom-multi-select-beingtoggled\n * The custom event fired before the open state of this multi select is toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated toggling.\n * @fires cds-custom-multi-select-toggled\n * The custom event fired after the open state of this multi select is toggled upon a user gesture.\n */\n@customElement(`${prefix}-multi-select`)\nclass CDSMultiSelect extends CDSDropdown {\n @property({ type: Boolean })\n filterable;\n\n /**\n * The count of selected items.\n */\n private _selectedItemsCount = 0;\n\n /**\n * The clear button.\n */\n @query('#clear-button')\n private _clearButtonNode!: HTMLElement;\n\n /**\n * The selection button.\n */\n @query('#selection-button')\n private _selectionButtonNode!: HTMLElement;\n\n /**\n * The `<input>` for filtering.\n */\n @query('input')\n private _filterInputNode!: HTMLInputElement;\n\n /**\n * The trigger button.\n */\n @query(`.${prefix}--list-box__field`)\n private _triggerNode!: HTMLElement;\n\n protected _selectionShouldChange(itemToSelect?: CDSMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: CDSMultiSelectItem) {\n const allItems = Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n )\n ) as CDSMultiSelectItem[];\n\n // clicked \"select all\" when it was indeterminate\n if (itemToSelect?.isSelectAll && itemToSelect.indeterminate) {\n allItems.forEach((i) => {\n i.selected = false;\n i.indeterminate = false;\n });\n this.value = '';\n return;\n }\n\n if (itemToSelect) {\n // clicked select all\n if (itemToSelect.isSelectAll) {\n const items = this.filterable\n ? Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItemResults\n )\n )\n : allItems;\n items.forEach((i) => {\n if (\n !(i as CDSMultiSelectItem).isSelectAll &&\n !(i as CDSMultiSelectItem).disabled\n ) {\n (i as CDSMultiSelectItem).selected = !itemToSelect.selected;\n }\n (i as CDSMultiSelectItem).indeterminate = false;\n });\n itemToSelect.selected = !itemToSelect.selected;\n // clicked regular item\n } else {\n itemToSelect.selected = !itemToSelect.selected;\n }\n } else {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as CDSMultiSelectItem).selected = false;\n }\n );\n this._handleUserInitiatedToggle(false);\n }\n if (this.selectAll) this._computeSelectAllState();\n // Change in `.selected` hasn't been reflected to the corresponding attribute yet\n this.value = filter(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n ),\n (item) => (item as CDSMultiSelectItem).selected\n )\n .map((item) => (item as CDSMultiSelectItem).value)\n .join(',');\n }\n\n protected _handleClickInner(event: MouseEvent) {\n const clickedItem = (event.target as HTMLElement).closest(\n `${prefix}-multi-select-item`\n ) as CDSMultiSelectItem | null;\n if (\n this._selectionButtonNode?.contains(event.target as Node) &&\n !this.readOnly\n ) {\n this._handleUserInitiatedSelectItem();\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (clickedItem && !clickedItem.hasAttribute('disabled')) {\n // Handle focus highlight\n const allItems = this.querySelectorAll(`${prefix}-multi-select-item`);\n allItems.forEach((el) => el.removeAttribute('highlighted'));\n clickedItem.setAttribute('highlighted', '');\n this._handleUserInitiatedSelectItem(clickedItem);\n this.setAttribute('item-clicked', '');\n if (this.filterable) {\n this._filterInputNode.focus();\n }\n } else if (this._clearButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedClearInput();\n } else if (\n !(event.target as HTMLElement)?.matches(\n (this.constructor as typeof CDSMultiSelect).aiLabelItem\n ) &&\n // remove reference to slug in v12\n !(event.target as HTMLElement)?.matches(\n (this.constructor as typeof CDSMultiSelect).slugItem\n )\n ) {\n super._handleClickInner(event);\n if (this.filterable) {\n this._filterInputNode.focus();\n }\n }\n }\n\n /**\n * Handler for the `keypress` event, ensures filter still works upon entering space\n */\n protected _handleKeypressInner(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof CDSDropdown).getAction(key);\n const { TRIGGERING } = DROPDOWN_KEYBOARD_ACTION;\n\n if (\n this._clearButtonNode?.contains(event.target as Node) &&\n // Space key should be handled by `<input>` unless \"clear selection\" button has focus\n (action === TRIGGERING || key === ' ')\n ) {\n this._handleUserInitiatedClearInput();\n } else if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n this.open = true;\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this.filterable) {\n this._handleKeypressInnerFlterable(event);\n } else {\n super._handleKeypressInner(event);\n }\n }\n\n /**\n * Special andler for the `keypress` event, ensures space selection for filterable\n * variation is disabled\n */\n\n protected _handleKeypressInnerFlterable(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof CDSDropdown).getAction(key);\n if (!this.open) {\n switch (action) {\n case DROPDOWN_KEYBOARD_ACTION.TRIGGERING:\n this._handleUserInitiatedToggle(true);\n break;\n default:\n break;\n }\n } else {\n switch (key) {\n case 'Enter':\n {\n const constructor = this.constructor as typeof CDSDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as CDSMultiSelectItem;\n if (highlightedItem) {\n this._handleUserInitiatedSelectItem(highlightedItem);\n } else {\n this._handleUserInitiatedToggle(false);\n }\n }\n break;\n default:\n break;\n }\n }\n }\n\n protected _renderTitleLabel() {\n const {\n clearSelectionDescription,\n clearSelectionText,\n disabled,\n hideLabel,\n titleText,\n _selectedItemsCount: selectedItemsCount,\n _slotTitleTextNode: slotTitleTextNode,\n _handleSlotchangeLabelText: handleSlotchangeLabelText,\n } = this;\n\n const labelClasses = classMap({\n [`${prefix}--label`]: true,\n [`${prefix}--label--disabled`]: disabled,\n [`${prefix}--visually-hidden`]: hideLabel,\n });\n\n const hasTitleText =\n titleText ||\n (slotTitleTextNode && slotTitleTextNode.assignedNodes().length > 0);\n\n return html`\n <label\n part=\"title-text\"\n class=\"${labelClasses}\"\n ?hidden=\"${!hasTitleText}\">\n <slot name=\"title-text\" @slotchange=\"${handleSlotchangeLabelText}\"\n >${titleText}</slot\n >\n ${selectedItemsCount > 0\n ? html`\n <span class=\"${prefix}--visually-hidden\">\n ${clearSelectionDescription} ${selectedItemsCount},\n ${clearSelectionText}\n </span>\n `\n : null}\n </label>\n `;\n }\n\n protected _renderPrecedingLabel() {\n const {\n disabled,\n readOnly,\n clearSelectionLabel,\n _selectedItemsCount: selectedItemsCount,\n } = this;\n\n const selectionButtonClasses = classMap({\n [`${prefix}--list-box__selection`]: true,\n [`${prefix}--list-box__selection--multi`]: true,\n [`${prefix}--tag`]: true,\n [`${prefix}--tag--filter`]: true,\n [`${prefix}--tag--high-contrast`]: true,\n [`${prefix}--tag--disabled`]: disabled,\n });\n return selectedItemsCount === 0\n ? undefined\n : html`\n <div\n id=\"selection-button\"\n role=\"button\"\n class=\"${selectionButtonClasses}\"\n tabindex=\"-1\"\n aria-disabled=${readOnly}\n title=\"${clearSelectionLabel}\">\n ${selectedItemsCount}\n ${iconLoader(Close16, {\n 'aria-label': clearSelectionLabel,\n class: `${prefix}--tag__close-icon`,\n })}\n </div>\n `;\n }\n\n /**\n @returns The main content of the trigger button.\n */\n protected _renderLabel(): TemplateResult {\n const { label, value, _selectedItemContent: selectedItemContent } = this;\n\n const inputClasses = classMap({\n [`${prefix}--text-input`]: true,\n [`${prefix}--text-input--empty`]: !value,\n });\n\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || label}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${inputClasses}\"\n placeholder=\"${label}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type -- https://github.com/carbon-design-system/carbon/issues/20452\n protected _renderFollowingLabel(): TemplateResult | void {\n const { clearSelectionLabel, _filterInputNode: filterInputNode } = this;\n return filterInputNode &&\n filterInputNode.value.length > 0 &&\n this.filterable\n ? html`\n <div\n id=\"clear-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${iconLoader(Close16, { 'aria-label': clearSelectionLabel })}\n </div>\n `\n : undefined;\n }\n\n /**\n * Handles `input` event on the `<input>` for filtering.\n */\n protected _handleInput() {\n const items = this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n );\n const inputValue = this._filterInputNode.value.toLocaleLowerCase();\n this.toggleAttribute('has-value', inputValue.length > 0);\n\n if (!this.open) {\n this.open = true;\n }\n\n forEach(items, (item) => {\n // always show the selectAll item\n if ((item as CDSMultiSelectItem).isSelectAll) {\n item.removeAttribute('filtered');\n return;\n }\n const itemValue = (item as HTMLElement).innerText.toLocaleLowerCase();\n\n if (!itemValue.includes(inputValue)) {\n (item as CDSMultiSelectItem).setAttribute('filtered', '');\n (item as CDSMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as CDSMultiSelectItem).removeAttribute('filtered');\n }\n });\n\n this.requestUpdate();\n\n if (this.selectAll) {\n const selectAllItem = this.querySelector(\n `${prefix}-multi-select-item[is-select-all]`\n ) as CDSMultiSelectItem;\n if (selectAllItem) {\n const visible = Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItemResults\n )\n ) as CDSMultiSelectItem[];\n const actionable = visible.filter((i) => !i.isSelectAll && !i.disabled);\n if (actionable.length === 0) {\n selectAllItem.setAttribute('filtered', '');\n } else {\n selectAllItem.removeAttribute('filtered');\n this._computeSelectAllState();\n }\n }\n }\n\n const constructor = this.constructor as typeof CDSMultiSelect;\n const visibleItems = Array.from(\n this.querySelectorAll(constructor.selectorItemResults)\n ) as CDSMultiSelectItem[];\n\n if (visibleItems.length > 0) {\n visibleItems.forEach((i) => i.removeAttribute('highlighted'));\n this.setAttribute('item-clicked', '');\n const first = visibleItems[0] as HTMLElement;\n first.setAttribute('highlighted', '');\n first.focus();\n } else {\n this._filterInputNode.focus();\n }\n }\n\n /**\n * Navigate through dropdown items.\n *\n * @param direction `-1` to navigate backward, `1` to navigate forward.\n */\n protected _navigate(direction: number) {\n if (!this.filterable) {\n super._navigate(direction);\n this._triggerNode.classList.add('no-focus-style');\n } else {\n // only navigate through remaining item\n const constructor = this.constructor as typeof CDSMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemResults);\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n );\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const highlightedIndex = indexOf(items, highlightedItem!);\n\n let nextIndex = highlightedIndex + direction;\n\n if (items[nextIndex]?.hasAttribute('disabled')) {\n nextIndex += direction;\n }\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n if (nextIndex >= items.length) {\n nextIndex = 0;\n }\n forEach(items, (item, i) => {\n (item as CDSMultiSelectItem).highlighted = i === nextIndex;\n });\n this.setAttribute('item-clicked', '');\n }\n }\n\n /**\n * Handles user-initiated clearing the `<input>` for filtering.\n */\n protected _handleUserInitiatedClearInput() {\n const constructor = this.constructor as typeof CDSMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemFiltered);\n this._filterInputNode.value = '';\n this.open = true;\n this._filterInputNode.focus();\n forEach(items, (item) => {\n (item as CDSMultiSelectItem).removeAttribute('filtered');\n });\n this._filterInputNode.dispatchEvent(\n new Event('input', { bubbles: true, composed: true })\n );\n }\n\n /**\n * The `aria-label` attribute for the icon to clear selection.\n */\n @property({ attribute: 'clear-selection-label' })\n clearSelectionLabel = '';\n\n /**\n * Specify the text that should be read for screen readers that describes total items selected\n */\n @property({ attribute: 'clear-selection-description' })\n clearSelectionDescription = 'Total items selected: ';\n\n /**\n * Specify the text that should be read for screen readers to clear selection.\n */\n @property({ attribute: 'clear-selection-text' })\n clearSelectionText = 'To clear selection, press Delete or Backspace.';\n\n /**\n * Specify the locale of the control. Used for the default compareItems used for sorting the list of items in the control.\n */\n @property()\n locale = 'en';\n\n /**\n * Enables rendering of a “Select all” multi-select-item\n */\n @property({ type: Boolean, reflect: true, attribute: 'select-all' })\n selectAll = false;\n\n /**\n * Specify feedback (mode) of the selection.\n * `top`: selected item jumps to top\n * `fixed`: selected item stays at it's position\n * `top-after-reopen`: selected item jump to top after reopen dropdown\n */\n @property({ attribute: 'selection-feedback' })\n selectionFeedback = SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN;\n\n /**\n * The CSS class list for multi-select listbox\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n protected get _classes(): any {\n const {\n disabled,\n size,\n type,\n invalid,\n readOnly,\n open,\n warn,\n _selectedItemsCount: selectedItemsCount,\n } = this;\n const inline = type === DROPDOWN_TYPE.INLINE;\n\n return classMap({\n [`${prefix}--multi-select`]: true,\n [`${prefix}--list-box`]: true,\n [`${prefix}--list-box--disabled`]: disabled,\n [`${prefix}--list-box--inline`]: inline,\n [`${prefix}--list-box--expanded`]: open,\n [`${prefix}--list-box--${size}`]: size,\n [`${prefix}--multi-select--invalid`]: invalid,\n [`${prefix}--multi-select--warn`]: warn,\n [`${prefix}--multi-select--inline`]: inline,\n [`${prefix}--multi-select--readonly`]: readOnly,\n [`${prefix}--multi-select--selected`]: selectedItemsCount > 0,\n [`${prefix}--list-box__wrapper--decorator`]: this._hasAILabel, // inherited from CDSDropdown\n [`${prefix}--multi-select--selectall`]: this.selectAll,\n });\n }\n\n protected compareItems = (itemA, itemB, { locale }) => {\n itemA.localeCompare(itemB, locale, { numeric: true });\n };\n\n protected sortItems = (\n menuItems: NodeList,\n { values, compareItems, locale = 'en' }\n ) => {\n const menuItemsArray = Array.from(menuItems);\n\n const sortedArray = menuItemsArray.sort((itemA, itemB) => {\n const hasItemA = values.includes((itemA as HTMLInputElement).value);\n const hasItemB = values.includes((itemB as HTMLInputElement).value);\n\n // Prefer whichever item is in the `value` array first\n if (hasItemA && !hasItemB) {\n return -1;\n }\n\n if (hasItemB && !hasItemA) {\n return 1;\n }\n\n return compareItems(\n (itemA as HTMLInputElement).value,\n (itemB as HTMLInputElement).value,\n {\n locale,\n }\n );\n });\n\n return sortedArray;\n };\n\n shouldUpdate(changedProperties) {\n const { selectorItem, aiLabelItem, slugItem } = this\n .constructor as typeof CDSMultiSelect;\n const aiLabel =\n this.querySelector(aiLabelItem) || this.querySelector(slugItem);\n const items = this.querySelectorAll(selectorItem);\n\n const { value, locale } = this;\n const values = !value ? [] : value.split(',');\n\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as CDSMultiSelectItem).size = this.size;\n });\n }\n if (changedProperties.has('value')) {\n // Updates selection beforehand because our rendering logic for `<cds-custom-multi-select>` looks for selected items via `qSA()`\n forEach(items, (elem) => {\n (elem as CDSMultiSelectItem).selected =\n values.indexOf((elem as CDSMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) =>\n values.indexOf((elem as CDSMultiSelectItem).value) >= 0 &&\n !(elem as CDSMultiSelectItem).isSelectAll\n ).length;\n\n if (this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP) {\n const sortedMenuItems = this.sortItems(items, {\n values,\n compareItems: this.compareItems,\n locale,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n aiLabel ? sortedMenuItems.unshift(aiLabel as Node) : '';\n // @todo remove typecast once we've updated to Typescript.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (this as any).replaceChildren(...sortedMenuItems);\n }\n }\n if (changedProperties.has('open')) {\n if (\n this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN\n ) {\n const sortedMenuItems = this.sortItems(items, {\n values,\n compareItems: this.compareItems,\n locale,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n aiLabel ? sortedMenuItems.unshift(aiLabel as Node) : '';\n // @todo remove typecast once we've updated to Typescript.\n sortedMenuItems.forEach((item) => {\n this.appendChild(item);\n });\n }\n }\n return true;\n }\n\n updated(changedProperties) {\n super.updated(changedProperties);\n\n if (changedProperties.has('open') && this.open) {\n const selectedItems = Array.from(\n this.querySelectorAll(`${prefix}-multi-select-item[selected]`)\n ) as CDSMultiSelectItem[];\n\n if (selectedItems.length > 0) {\n let itemToFocus: HTMLElement | null = null;\n if (this.selectAll) {\n itemToFocus = this.querySelector(\n `${prefix}-multi-select-item[is-select-all]`\n ) as CDSMultiSelectItem;\n }\n if (!itemToFocus) {\n itemToFocus = selectedItems[0] as HTMLElement;\n }\n this.setAttribute('item-clicked', '');\n itemToFocus.focus();\n itemToFocus.setAttribute('highlighted', '');\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n this.filterable\n ? this._filterInputNode.focus()\n : this._triggerNode.focus();\n }\n }\n // reorder items so that select all is always at the top of the list\n if (this.selectAll && changedProperties.has('open') && this.open) {\n const items = Array.from(\n this.querySelectorAll('cds-custom-multi-select-item')\n ) as CDSMultiSelectItem[];\n\n const selectAllItem = items.find((i) => i.isSelectAll);\n if (selectAllItem) {\n this.appendChild(selectAllItem);\n items\n .filter((i) => i !== selectAllItem)\n .forEach((i) => this.appendChild(i));\n }\n }\n\n // flush the top of the first element\n Array.from(this.querySelectorAll('cds-custom-multi-select-item')).forEach(\n (item, index) => {\n if (index === 0 && !item.hasAttribute('is-select-all')) {\n item.setAttribute('flush-top', '');\n } else if (index === 1 && this.selectAll) {\n item.setAttribute('flush-top', '');\n } else {\n item.removeAttribute('flush-top');\n }\n }\n );\n\n if (changedProperties.has('open') && !this.open) {\n this._triggerNode.classList.remove('no-focus-style');\n this.removeAttribute('item-clicked');\n }\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated?.(changedProperties);\n\n // whenever more items are added/removed, recompute the state of the select all option\n if (!this.selectAll) return;\n const defaultSlot =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this.shadowRoot!.querySelector<HTMLSlotElement>('slot:not([name])')!;\n defaultSlot.addEventListener('slotchange', () =>\n this._computeSelectAllState()\n );\n }\n\n /**\n * Computes the state of the select all option and sets it to either\n * 'selected' or 'indeterminate'\n */\n private _computeSelectAllState() {\n if (!this.selectAll) return;\n\n const allItems = Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n )\n ) as CDSMultiSelectItem[];\n const selectAllItem = allItems.find((i) => i.isSelectAll);\n if (!selectAllItem || selectAllItem.hasAttribute('filtered')) {\n return;\n }\n\n const enabledItems = allItems\n .filter((i) => !i.isSelectAll && !i.disabled)\n .filter((i) => !this.filterable || !i.hasAttribute('filtered'));\n const selectedCount = enabledItems.filter((i) => i.selected).length;\n const allSelected = selectedCount === enabledItems.length;\n\n selectAllItem.selected = allSelected;\n selectAllItem.indeterminate = selectedCount > 0 && !allSelected;\n }\n\n connectedCallback() {\n super.connectedCallback();\n /**\n * Detect if multi-select already has initially selected items\n */\n this.value = filter(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n ),\n (item) => (item as CDSMultiSelectItem).hasAttribute('selected')\n )\n .map((item) => (item as CDSMultiSelectItem).getAttribute('value'))\n .join(',');\n }\n\n /**\n * A selector that will return menu body.\n */\n static get selectorMenuBody() {\n return `div[part=\"menu-body\"]`;\n }\n\n /**\n * A selector that will return highlighted items.\n */\n static get selectorItemHighlighted() {\n return `${prefix}-multi-select-item[highlighted]`;\n }\n\n /**\n * A selector that will return multi select items.\n * We use a separate property from `.itemTagName` due to the nature in difference of tag name vs. selector.\n */\n static get selectorItem() {\n return `${prefix}-multi-select-item`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemFiltered() {\n return `${prefix}-multi-select-item[filtered]`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemResults() {\n return `${prefix}-multi-select-item:not([filtered])`;\n }\n\n /**\n * A selector that will return selected items.\n */\n static get selectorItemSelected() {\n return `${prefix}-multi-select-item[selected]`;\n }\n\n /**\n * The name of the custom event fired before this multi select item is being toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated action of toggling this multi select item.\n */\n static get eventBeforeToggle() {\n return `${prefix}-multi-select-beingtoggled`;\n }\n\n /**\n * The name of the custom event fired after this multi select item is toggled upon a user gesture.\n */\n static get eventToggle() {\n return `${prefix}-multi-select-toggled`;\n }\n\n /**\n * The name of the custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n */\n static get eventBeforeSelect() {\n return `${prefix}-multi-select-beingselected`;\n }\n\n /**\n * The name of the custom event fired after a a multi select item is selected upon a user gesture.\n */\n static get eventSelect() {\n return `${prefix}-multi-select-selected`;\n }\n\n static styles = styles;\n}\n\nexport default CDSMultiSelect;\n"],"names":["customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"multi-select.js","sources":["../../../src/components/multi-select/multi-select.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, PropertyValues, TemplateResult } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { prefix } from '../../globals/settings';\nimport Close16 from '@carbon/icons/es/close/16.js';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport CDSDropdown, {\n DROPDOWN_KEYBOARD_ACTION,\n DROPDOWN_TYPE,\n} from '../dropdown/dropdown';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport { SELECTION_FEEDBACK_OPTION } from './defs';\nimport CDSMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport {\n DROPDOWN_SIZE,\n DROPDOWN_TYPE,\n DROPDOWN_DIRECTION,\n} from '../dropdown/dropdown';\n\nexport { SELECTION_FEEDBACK_OPTION };\n\n/**\n * Multi select.\n *\n * @element cds-custom-multi-select\n * @fires cds-custom-multi-select-beingselected\n * The custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n * @fires cds-custom-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires cds-custom-multi-select-beingtoggled\n * The custom event fired before the open state of this multi select is toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated toggling.\n * @fires cds-custom-multi-select-toggled\n * The custom event fired after the open state of this multi select is toggled upon a user gesture.\n */\n@customElement(`${prefix}-multi-select`)\nclass CDSMultiSelect extends CDSDropdown {\n @property({ type: Boolean })\n filterable;\n\n /**\n * The count of selected items.\n */\n private _selectedItemsCount = 0;\n\n /**\n * The clear button.\n */\n @query('#clear-button')\n private _clearButtonNode!: HTMLElement;\n\n /**\n * The selection button.\n */\n @query('#selection-button')\n private _selectionButtonNode!: HTMLElement;\n\n /**\n * The `<input>` for filtering.\n */\n @query('input')\n private _filterInputNode!: HTMLInputElement;\n\n protected get _supportsMenuInputFiltering() {\n return Boolean(this.filterable);\n }\n\n protected willUpdate(changedProperties: PropertyValues) {\n this._shouldTriggerBeFocusable = !this.filterable;\n super.willUpdate(changedProperties);\n }\n\n protected get _menuInputNode(): HTMLInputElement | null {\n return this.filterable ? (this._filterInputNode ?? null) : null;\n }\n\n protected _clearMenuInputFiltering() {\n if (this.filterable) {\n this._handleUserInitiatedClearInput();\n }\n }\n\n protected _shouldClearMenuInputOnEscape({\n menuOpen,\n isInputTarget,\n }: {\n event: KeyboardEvent;\n menuOpen: boolean;\n isInputTarget: boolean;\n }) {\n if (!menuOpen) {\n return true;\n }\n\n if (!isInputTarget) {\n return false;\n }\n\n return Boolean(this._filterInputNode?.value);\n }\n\n /**\n * The trigger button.\n */\n @query(`.${prefix}--list-box__field`)\n private _triggerNode!: HTMLElement;\n\n protected _selectionShouldChange(itemToSelect?: CDSMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: CDSMultiSelectItem) {\n const allItems = Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n )\n ) as CDSMultiSelectItem[];\n\n // clicked \"select all\" when it was indeterminate\n if (itemToSelect?.isSelectAll && itemToSelect.indeterminate) {\n allItems.forEach((i) => {\n i.selected = false;\n i.indeterminate = false;\n });\n this.value = '';\n return;\n }\n\n if (itemToSelect) {\n // clicked select all\n if (itemToSelect.isSelectAll) {\n const items = this.filterable\n ? Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItemResults\n )\n )\n : allItems;\n items.forEach((i) => {\n if (\n !(i as CDSMultiSelectItem).isSelectAll &&\n !(i as CDSMultiSelectItem).disabled\n ) {\n (i as CDSMultiSelectItem).selected = !itemToSelect.selected;\n }\n (i as CDSMultiSelectItem).indeterminate = false;\n });\n itemToSelect.selected = !itemToSelect.selected;\n // clicked regular item\n } else {\n itemToSelect.selected = !itemToSelect.selected;\n }\n } else {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as CDSMultiSelectItem).selected = false;\n }\n );\n this._handleUserInitiatedToggle(false);\n }\n if (this.selectAll) this._computeSelectAllState();\n // Change in `.selected` hasn't been reflected to the corresponding attribute yet\n this.value = filter(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n ),\n (item) => (item as CDSMultiSelectItem).selected\n )\n .map((item) => (item as CDSMultiSelectItem).value)\n .join(',');\n }\n\n // Keep the menu open for individual selections, close only when clearing.\n\n protected _shouldCloseAfterSelection(item?: CDSMultiSelectItem) {\n return !item;\n }\n\n protected _handleClickInner(event: MouseEvent) {\n const clickedItem = (event.target as HTMLElement).closest(\n `${prefix}-multi-select-item`\n ) as CDSMultiSelectItem | null;\n if (\n this._selectionButtonNode?.contains(event.target as Node) &&\n !this.readOnly\n ) {\n this._handleUserInitiatedSelectItem();\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (clickedItem && !clickedItem.hasAttribute('disabled')) {\n // Handle focus highlight\n const allItems = this.querySelectorAll(`${prefix}-multi-select-item`);\n allItems.forEach((el) => el.removeAttribute('highlighted'));\n clickedItem.setAttribute('highlighted', '');\n this._handleUserInitiatedSelectItem(clickedItem);\n this.setAttribute('item-clicked', '');\n if (this.filterable) {\n this._filterInputNode.focus();\n }\n } else if (this._clearButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedClearInput();\n } else if (\n !(event.target as HTMLElement)?.matches(\n (this.constructor as typeof CDSMultiSelect).aiLabelItem\n ) &&\n // remove reference to slug in v12\n !(event.target as HTMLElement)?.matches(\n (this.constructor as typeof CDSMultiSelect).slugItem\n )\n ) {\n super._handleClickInner(event);\n if (this.filterable) {\n this._filterInputNode.focus();\n }\n }\n }\n\n /**\n * Handler for the `keypress` event, ensures filter still works upon entering space\n */\n protected _handleKeypressInner(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof CDSDropdown).getAction(key);\n const { TRIGGERING } = DROPDOWN_KEYBOARD_ACTION;\n\n if (\n this._clearButtonNode?.contains(event.target as Node) &&\n // Space key should be handled by `<input>` unless \"clear selection\" button has focus\n (action === TRIGGERING || key === ' ')\n ) {\n this._handleUserInitiatedClearInput();\n } else if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n this.open = true;\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this.filterable) {\n this._handleKeypressInnerFlterable(event);\n } else {\n super._handleKeypressInner(event);\n }\n }\n\n protected _handleMouseoverInner(event: MouseEvent) {\n const item = this._getDropdownItemFromEvent(event);\n const isFiltering =\n this.filterable && Boolean(this._filterInputNode?.value.length);\n\n if (\n !item ||\n isFiltering ||\n !item.hasAttribute('selected') ||\n !item.hasAttribute('highlighted')\n ) {\n return;\n }\n\n super._handleMouseoverInner(event);\n }\n\n protected _handleMouseleaveInner(event: MouseEvent) {\n const constructor = this.constructor as typeof CDSMultiSelect;\n const isFiltering =\n this.filterable && Boolean(this._filterInputNode?.value.length);\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as CDSMultiSelectItem | null;\n\n if (isFiltering || highlightedItem?.hasAttribute('selected')) {\n return;\n }\n\n super._handleMouseleaveInner(event);\n }\n\n /**\n * Special andler for the `keypress` event, ensures space selection for filterable\n * variation is disabled\n */\n\n protected _handleKeypressInnerFlterable(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof CDSDropdown).getAction(key);\n if (!this.open) {\n switch (action) {\n case DROPDOWN_KEYBOARD_ACTION.TRIGGERING:\n this._handleUserInitiatedToggle(true);\n break;\n default:\n break;\n }\n } else {\n switch (key) {\n case 'Enter':\n {\n const constructor = this.constructor as typeof CDSDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as CDSMultiSelectItem;\n if (highlightedItem) {\n this._handleUserInitiatedSelectItem(highlightedItem);\n } else {\n this._handleUserInitiatedToggle(false);\n }\n }\n break;\n default:\n break;\n }\n }\n }\n\n protected _renderTitleLabel() {\n const {\n clearSelectionDescription,\n clearSelectionText,\n disabled,\n hideLabel,\n titleText,\n _selectedItemsCount: selectedItemsCount,\n _slotTitleTextNode: slotTitleTextNode,\n _handleSlotchangeLabelText: handleSlotchangeLabelText,\n } = this;\n\n const labelClasses = classMap({\n [`${prefix}--label`]: true,\n [`${prefix}--label--disabled`]: disabled,\n [`${prefix}--visually-hidden`]: hideLabel,\n });\n\n const hasTitleText =\n titleText ||\n (slotTitleTextNode && slotTitleTextNode.assignedNodes().length > 0);\n\n return html`\n <label\n part=\"title-text\"\n class=\"${labelClasses}\"\n ?hidden=\"${!hasTitleText}\">\n <slot name=\"title-text\" @slotchange=\"${handleSlotchangeLabelText}\"\n >${titleText}</slot\n >\n ${selectedItemsCount > 0\n ? html`\n <span class=\"${prefix}--visually-hidden\">\n ${clearSelectionDescription} ${selectedItemsCount},\n ${clearSelectionText}\n </span>\n `\n : null}\n </label>\n `;\n }\n\n protected _renderPrecedingLabel() {\n const {\n disabled,\n readOnly,\n clearSelectionLabel,\n _selectedItemsCount: selectedItemsCount,\n } = this;\n\n const selectionButtonClasses = classMap({\n [`${prefix}--list-box__selection`]: true,\n [`${prefix}--list-box__selection--multi`]: true,\n [`${prefix}--tag`]: true,\n [`${prefix}--tag--filter`]: true,\n [`${prefix}--tag--high-contrast`]: true,\n [`${prefix}--tag--disabled`]: disabled,\n });\n return selectedItemsCount === 0\n ? undefined\n : html`\n <div\n id=\"selection-button\"\n role=\"button\"\n class=\"${selectionButtonClasses}\"\n tabindex=\"-1\"\n aria-disabled=${readOnly}\n title=\"${clearSelectionLabel}\">\n ${selectedItemsCount}\n ${iconLoader(Close16, {\n 'aria-label': clearSelectionLabel,\n class: `${prefix}--tag__close-icon`,\n })}\n </div>\n `;\n }\n\n /**\n @returns The main content of the trigger button.\n */\n protected _renderLabel(): TemplateResult {\n const { label, value, _selectedItemContent: selectedItemContent } = this;\n\n const inputClasses = classMap({\n [`${prefix}--text-input`]: true,\n [`${prefix}--text-input--empty`]: !value,\n });\n\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || label}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${inputClasses}\"\n placeholder=\"${label}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-expanded=\"${String(this.open)}\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type -- https://github.com/carbon-design-system/carbon/issues/20452\n protected _renderFollowingLabel(): TemplateResult | void {\n const { clearSelectionLabel, _filterInputNode: filterInputNode } = this;\n return filterInputNode &&\n filterInputNode.value.length > 0 &&\n this.filterable\n ? html`\n <div\n id=\"clear-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${iconLoader(Close16, { 'aria-label': clearSelectionLabel })}\n </div>\n `\n : undefined;\n }\n\n /**\n * Handles `input` event on the `<input>` for filtering.\n */\n protected _handleInput() {\n const items = this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n );\n const inputValue = this._filterInputNode.value.toLocaleLowerCase();\n this.toggleAttribute('has-value', inputValue.length > 0);\n\n if (!this.open) {\n this.open = true;\n }\n\n forEach(items, (item) => {\n // always show the selectAll item\n if ((item as CDSMultiSelectItem).isSelectAll) {\n item.removeAttribute('filtered');\n return;\n }\n const itemValue = (item as HTMLElement).innerText.toLocaleLowerCase();\n\n if (!itemValue.includes(inputValue)) {\n (item as CDSMultiSelectItem).setAttribute('filtered', '');\n (item as CDSMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as CDSMultiSelectItem).removeAttribute('filtered');\n }\n });\n\n this.requestUpdate();\n\n if (this.selectAll) {\n const selectAllItem = this.querySelector(\n `${prefix}-multi-select-item[is-select-all]`\n ) as CDSMultiSelectItem;\n if (selectAllItem) {\n const visible = Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItemResults\n )\n ) as CDSMultiSelectItem[];\n const actionable = visible.filter((i) => !i.isSelectAll && !i.disabled);\n if (actionable.length === 0) {\n selectAllItem.setAttribute('filtered', '');\n } else {\n selectAllItem.removeAttribute('filtered');\n this._computeSelectAllState();\n }\n }\n }\n\n const constructor = this.constructor as typeof CDSMultiSelect;\n const visibleItems = Array.from(\n this.querySelectorAll(constructor.selectorItemResults)\n ) as CDSMultiSelectItem[];\n\n if (visibleItems.length > 0) {\n visibleItems.forEach((i) => i.removeAttribute('highlighted'));\n this.setAttribute('item-clicked', '');\n const first = visibleItems[0] as HTMLElement;\n first.setAttribute('highlighted', '');\n first.focus();\n } else {\n this._filterInputNode.focus();\n }\n }\n\n /**\n * Navigate through dropdown items.\n *\n * @param direction `-1` to navigate backward, `1` to navigate forward.\n */\n protected _navigate(direction: number) {\n if (!this.filterable) {\n super._navigate(direction);\n this._triggerNode.classList.add('no-focus-style');\n } else {\n // only navigate through remaining item\n const constructor = this.constructor as typeof CDSMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemResults);\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n );\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const highlightedIndex = indexOf(items, highlightedItem!);\n\n let nextIndex = highlightedIndex + direction;\n\n if (items[nextIndex]?.hasAttribute('disabled')) {\n nextIndex += direction;\n }\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n if (nextIndex >= items.length) {\n nextIndex = 0;\n }\n forEach(items, (item, i) => {\n (item as CDSMultiSelectItem).highlighted = i === nextIndex;\n });\n this.setAttribute('item-clicked', '');\n }\n }\n\n /**\n * Handles user-initiated clearing the `<input>` for filtering.\n */\n protected _handleUserInitiatedClearInput() {\n const constructor = this.constructor as typeof CDSMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemFiltered);\n this._filterInputNode.value = '';\n this.open = true;\n this._filterInputNode.focus();\n forEach(items, (item) => {\n (item as CDSMultiSelectItem).removeAttribute('filtered');\n });\n this._filterInputNode.dispatchEvent(\n new Event('input', { bubbles: true, composed: true })\n );\n }\n\n /**\n * The `aria-label` attribute for the icon to clear selection.\n */\n @property({ attribute: 'clear-selection-label' })\n clearSelectionLabel = '';\n\n /**\n * Specify the text that should be read for screen readers that describes total items selected\n */\n @property({ attribute: 'clear-selection-description' })\n clearSelectionDescription = 'Total items selected: ';\n\n /**\n * Specify the text that should be read for screen readers to clear selection.\n */\n @property({ attribute: 'clear-selection-text' })\n clearSelectionText = 'To clear selection, press Delete or Backspace.';\n\n /**\n * Specify the locale of the control. Used for the default compareItems used for sorting the list of items in the control.\n */\n @property()\n locale = 'en';\n\n /**\n * Enables rendering of a “Select all” multi-select-item\n */\n @property({ type: Boolean, reflect: true, attribute: 'select-all' })\n selectAll = false;\n\n /**\n * Specify feedback (mode) of the selection.\n * `top`: selected item jumps to top\n * `fixed`: selected item stays at it's position\n * `top-after-reopen`: selected item jump to top after reopen dropdown\n */\n @property({ attribute: 'selection-feedback' })\n selectionFeedback = SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN;\n\n /**\n * The CSS class list for multi-select listbox\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n protected get _classes(): any {\n const {\n disabled,\n size,\n type,\n invalid,\n readOnly,\n open,\n warn,\n _selectedItemsCount: selectedItemsCount,\n } = this;\n const inline = type === DROPDOWN_TYPE.INLINE;\n\n return classMap({\n [`${prefix}--multi-select`]: true,\n [`${prefix}--list-box`]: true,\n [`${prefix}--list-box--disabled`]: disabled,\n [`${prefix}--list-box--inline`]: inline,\n [`${prefix}--list-box--expanded`]: open,\n [`${prefix}--list-box--${size}`]: size,\n [`${prefix}--multi-select--invalid`]: invalid,\n [`${prefix}--multi-select--warn`]: warn,\n [`${prefix}--multi-select--inline`]: inline,\n [`${prefix}--multi-select--readonly`]: readOnly,\n [`${prefix}--multi-select--selected`]: selectedItemsCount > 0,\n [`${prefix}--list-box__wrapper--decorator`]: this._hasAILabel, // inherited from CDSDropdown\n [`${prefix}--multi-select--selectall`]: this.selectAll,\n });\n }\n\n protected compareItems = (itemA, itemB, { locale }) => {\n itemA.localeCompare(itemB, locale, { numeric: true });\n };\n\n protected sortItems = (\n menuItems: NodeList,\n { values, compareItems, locale = 'en' }\n ) => {\n const menuItemsArray = Array.from(menuItems);\n\n const sortedArray = menuItemsArray.sort((itemA, itemB) => {\n const hasItemA = values.includes((itemA as HTMLInputElement).value);\n const hasItemB = values.includes((itemB as HTMLInputElement).value);\n\n // Prefer whichever item is in the `value` array first\n if (hasItemA && !hasItemB) {\n return -1;\n }\n\n if (hasItemB && !hasItemA) {\n return 1;\n }\n\n return compareItems(\n (itemA as HTMLInputElement).value,\n (itemB as HTMLInputElement).value,\n {\n locale,\n }\n );\n });\n\n return sortedArray;\n };\n\n shouldUpdate(changedProperties) {\n const { selectorItem, aiLabelItem, slugItem } = this\n .constructor as typeof CDSMultiSelect;\n const aiLabel =\n this.querySelector(aiLabelItem) || this.querySelector(slugItem);\n const items = this.querySelectorAll(selectorItem);\n\n const { value, locale } = this;\n const values = !value ? [] : value.split(',');\n\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as CDSMultiSelectItem).size = this.size;\n });\n }\n if (changedProperties.has('value')) {\n // Updates selection beforehand because our rendering logic for `<cds-custom-multi-select>` looks for selected items via `qSA()`\n forEach(items, (elem) => {\n (elem as CDSMultiSelectItem).selected =\n values.indexOf((elem as CDSMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) =>\n values.indexOf((elem as CDSMultiSelectItem).value) >= 0 &&\n !(elem as CDSMultiSelectItem).isSelectAll\n ).length;\n\n if (this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP) {\n const sortedMenuItems = this.sortItems(items, {\n values,\n compareItems: this.compareItems,\n locale,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n aiLabel ? sortedMenuItems.unshift(aiLabel as Node) : '';\n // @todo remove typecast once we've updated to Typescript.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n (this as any).replaceChildren(...sortedMenuItems);\n }\n }\n if (changedProperties.has('open')) {\n if (\n this.selectionFeedback === SELECTION_FEEDBACK_OPTION.TOP_AFTER_REOPEN\n ) {\n const sortedMenuItems = this.sortItems(items, {\n values,\n compareItems: this.compareItems,\n locale,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n aiLabel ? sortedMenuItems.unshift(aiLabel as Node) : '';\n // @todo remove typecast once we've updated to Typescript.\n sortedMenuItems.forEach((item) => {\n this.appendChild(item);\n });\n }\n }\n return true;\n }\n\n updated(changedProperties) {\n super.updated(changedProperties);\n\n if (changedProperties.has('open') && this.open) {\n const selectedItems = Array.from(\n this.querySelectorAll(`${prefix}-multi-select-item[selected]`)\n ) as CDSMultiSelectItem[];\n\n if (selectedItems.length > 0) {\n let itemToFocus: HTMLElement | null = null;\n if (this.selectAll) {\n itemToFocus = this.querySelector(\n `${prefix}-multi-select-item[is-select-all]`\n ) as CDSMultiSelectItem;\n }\n if (!itemToFocus) {\n itemToFocus = selectedItems[0] as HTMLElement;\n }\n this.setAttribute('item-clicked', '');\n itemToFocus.focus();\n itemToFocus.setAttribute('highlighted', '');\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n this.filterable\n ? this._filterInputNode.focus()\n : this._triggerNode.focus();\n }\n }\n // reorder items so that select all is always at the top of the list\n if (this.selectAll && changedProperties.has('open') && this.open) {\n const items = Array.from(\n this.querySelectorAll('cds-custom-multi-select-item')\n ) as CDSMultiSelectItem[];\n\n const selectAllItem = items.find((i) => i.isSelectAll);\n if (selectAllItem) {\n this.appendChild(selectAllItem);\n items\n .filter((i) => i !== selectAllItem)\n .forEach((i) => this.appendChild(i));\n }\n }\n\n // flush the top of the first element\n Array.from(this.querySelectorAll('cds-custom-multi-select-item')).forEach(\n (item, index) => {\n if (index === 0 && !item.hasAttribute('is-select-all')) {\n item.setAttribute('flush-top', '');\n } else if (index === 1 && this.selectAll) {\n item.setAttribute('flush-top', '');\n } else {\n item.removeAttribute('flush-top');\n }\n }\n );\n\n if (changedProperties.has('open') && !this.open) {\n this._triggerNode.classList.remove('no-focus-style');\n this.removeAttribute('item-clicked');\n }\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated?.(changedProperties);\n\n // whenever more items are added/removed, recompute the state of the select all option\n if (!this.selectAll) return;\n const defaultSlot =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this.shadowRoot!.querySelector<HTMLSlotElement>('slot:not([name])')!;\n defaultSlot.addEventListener('slotchange', () =>\n this._computeSelectAllState()\n );\n }\n\n /**\n * Computes the state of the select all option and sets it to either\n * 'selected' or 'indeterminate'\n */\n private _computeSelectAllState() {\n if (!this.selectAll) return;\n\n const allItems = Array.from(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n )\n ) as CDSMultiSelectItem[];\n const selectAllItem = allItems.find((i) => i.isSelectAll);\n if (!selectAllItem || selectAllItem.hasAttribute('filtered')) {\n return;\n }\n\n const enabledItems = allItems\n .filter((i) => !i.isSelectAll && !i.disabled)\n .filter((i) => !this.filterable || !i.hasAttribute('filtered'));\n const selectedCount = enabledItems.filter((i) => i.selected).length;\n const allSelected = selectedCount === enabledItems.length;\n\n selectAllItem.selected = allSelected;\n selectAllItem.indeterminate = selectedCount > 0 && !allSelected;\n }\n\n connectedCallback() {\n super.connectedCallback();\n /**\n * Detect if multi-select already has initially selected items\n */\n this.value = filter(\n this.querySelectorAll(\n (this.constructor as typeof CDSMultiSelect).selectorItem\n ),\n (item) => (item as CDSMultiSelectItem).hasAttribute('selected')\n )\n .map((item) => (item as CDSMultiSelectItem).getAttribute('value'))\n .join(',');\n }\n\n /**\n * A selector that will return menu body.\n */\n static get selectorMenuBody() {\n return `div[part=\"menu-body\"]`;\n }\n\n /**\n * A selector that will return highlighted items.\n */\n static get selectorItemHighlighted() {\n return `${prefix}-multi-select-item[highlighted]`;\n }\n\n /**\n * A selector that will return multi select items.\n * We use a separate property from `.itemTagName` due to the nature in difference of tag name vs. selector.\n */\n static get selectorItem() {\n return `${prefix}-multi-select-item`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemFiltered() {\n return `${prefix}-multi-select-item[filtered]`;\n }\n\n /**\n * A selector that will return remaining items after a filter.\n */\n static get selectorItemResults() {\n return `${prefix}-multi-select-item:not([filtered])`;\n }\n\n /**\n * A selector that will return selected items.\n */\n static get selectorItemSelected() {\n return `${prefix}-multi-select-item[selected]`;\n }\n\n /**\n * The name of the custom event fired before this multi select item is being toggled upon a user gesture.\n * Cancellation of this event stops the user-initiated action of toggling this multi select item.\n */\n static get eventBeforeToggle() {\n return `${prefix}-multi-select-beingtoggled`;\n }\n\n /**\n * The name of the custom event fired after this multi select item is toggled upon a user gesture.\n */\n static get eventToggle() {\n return `${prefix}-multi-select-toggled`;\n }\n\n /**\n * The name of the custom event fired before a multi select item is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n */\n static get eventBeforeSelect() {\n return `${prefix}-multi-select-beingselected`;\n }\n\n /**\n * The name of the custom event fired after a a multi select item is selected upon a user gesture.\n */\n static get eventSelect() {\n return `${prefix}-multi-select-selected`;\n }\n\n static styles = styles;\n}\n\nexport default CDSMultiSelect;\n"],"names":["customElement"],"mappings":"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"}
|