@carbon/web-components 1.36.1 → 1.37.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/dist/accordion.min.js +1 -1
- package/dist/accordion.rtl.min.js +1 -1
- package/dist/breadcrumb.min.js +1 -1
- package/dist/breadcrumb.rtl.min.js +1 -1
- package/dist/{button-4e0b32c8.js → button-035465bb.js} +1 -1
- package/dist/{button-99f6b809.js → button-1a16f30e.js} +1 -1
- package/dist/button.min.js +1 -1
- package/dist/button.rtl.min.js +1 -1
- package/dist/{checkbox-d61e0f46.js → checkbox-61c8aa71.js} +1 -1
- package/dist/{checkbox-39ba54c6.js → checkbox-93412a35.js} +1 -1
- package/dist/checkbox.min.js +1 -1
- package/dist/checkbox.rtl.min.js +1 -1
- package/dist/code-snippet.min.js +2 -2
- package/dist/code-snippet.rtl.min.js +2 -2
- package/dist/combo-box.min.js +1 -1
- package/dist/combo-box.rtl.min.js +1 -1
- package/dist/{content-switcher-item-f853369b.js → content-switcher-item-6df85f1c.js} +1 -1
- package/dist/{content-switcher-item-55452b53.js → content-switcher-item-88761ecf.js} +1 -1
- package/dist/content-switcher.min.js +1 -1
- package/dist/content-switcher.rtl.min.js +1 -1
- package/dist/{copy-button-9fb90a01.js → copy-button-07fadd2e.js} +1 -1
- package/dist/{copy-button-7a7bbaf8.js → copy-button-d62f4b6e.js} +1 -1
- package/dist/copy-button.min.js +1 -1
- package/dist/copy-button.rtl.min.js +1 -1
- package/dist/data-table.min.js +2 -2
- package/dist/data-table.rtl.min.js +2 -2
- package/dist/date-picker.min.js +3 -3
- package/dist/date-picker.rtl.min.js +3 -3
- package/dist/{dropdown-item-2d248e51.js → dropdown-item-0d7d9847.js} +1 -1
- package/dist/{dropdown-item-9c062c1c.js → dropdown-item-5ea25a90.js} +1 -1
- package/dist/dropdown.min.js +1 -1
- package/dist/dropdown.rtl.min.js +1 -1
- package/dist/file-uploader.min.js +2 -2
- package/dist/file-uploader.rtl.min.js +2 -2
- package/dist/{floating-menu-72acc1bc.js → floating-menu-14b01da2.js} +1 -1
- package/dist/floating-menu.min.js +1 -1
- package/dist/floating-menu.rtl.min.js +1 -1
- package/dist/form.min.js +1 -1
- package/dist/form.rtl.min.js +1 -1
- package/dist/inline-loading.min.js +2 -2
- package/dist/inline-loading.rtl.min.js +2 -2
- package/dist/{input-d66d0e9c.js → input-13d32d6b.js} +2 -2
- package/dist/{input-47f04966.js → input-e5ad8493.js} +2 -2
- package/dist/input.min.js +1 -1
- package/dist/input.rtl.min.js +1 -1
- package/dist/{link-f9de12ea.js → link-00bbdb76.js} +1 -1
- package/dist/{link-afe664a3.js → link-1e3fcabc.js} +1 -1
- package/dist/link.min.js +1 -1
- package/dist/link.rtl.min.js +1 -1
- package/dist/list.min.js +1 -1
- package/dist/list.rtl.min.js +1 -1
- package/dist/{loading-926a29f5.js → loading-2a5481c6.js} +1 -1
- package/dist/{loading-a1c01e84.js → loading-5f4a55c9.js} +1 -1
- package/dist/{loading-icon-9d1c486a.js → loading-icon-4be51b70.js} +1 -1
- package/dist/loading.min.js +1 -1
- package/dist/loading.rtl.min.js +1 -1
- package/dist/modal.min.js +2 -2
- package/dist/modal.rtl.min.js +2 -2
- package/dist/multi-select.min.js +1 -1
- package/dist/multi-select.rtl.min.js +1 -1
- package/dist/notification.min.js +1 -1
- package/dist/notification.rtl.min.js +1 -1
- package/dist/number-input.min.js +2 -2
- package/dist/number-input.rtl.min.js +2 -2
- package/dist/overflow-menu.min.js +2 -2
- package/dist/overflow-menu.rtl.min.js +2 -2
- package/dist/pagination.min.js +1 -1
- package/dist/pagination.rtl.min.js +1 -1
- package/dist/progress-indicator.min.js +2 -12
- package/dist/progress-indicator.rtl.min.js +2 -12
- package/dist/radio-button.min.js +1 -1
- package/dist/radio-button.rtl.min.js +1 -1
- package/dist/{search-e6781408.js → search-7746f7ab.js} +1 -1
- package/dist/{search-f36f74c2.js → search-dc317efe.js} +1 -1
- package/dist/search.min.js +1 -1
- package/dist/search.rtl.min.js +1 -1
- package/dist/select.min.js +1 -1
- package/dist/select.rtl.min.js +1 -1
- package/dist/skeleton-placeholder.min.js +1 -1
- package/dist/skeleton-placeholder.rtl.min.js +1 -1
- package/dist/skeleton-text.min.js +1 -1
- package/dist/skeleton-text.rtl.min.js +1 -1
- package/dist/skip-to-content.min.js +1 -1
- package/dist/skip-to-content.rtl.min.js +1 -1
- package/dist/slider.min.js +1 -1
- package/dist/slider.rtl.min.js +1 -1
- package/dist/structured-list.min.js +1 -1
- package/dist/structured-list.rtl.min.js +1 -1
- package/dist/tabs.min.js +2 -2
- package/dist/tabs.rtl.min.js +2 -2
- package/dist/tag.min.js +1 -1
- package/dist/tag.rtl.min.js +1 -1
- package/dist/textarea.min.js +1 -1
- package/dist/textarea.rtl.min.js +1 -1
- package/dist/tile.min.js +1 -1
- package/dist/tile.rtl.min.js +1 -1
- package/dist/toggle.min.js +2 -2
- package/dist/toggle.rtl.min.js +2 -2
- package/dist/tooltip.min.js +2 -2
- package/dist/tooltip.rtl.min.js +2 -2
- package/dist/ui-shell.min.js +2 -2
- package/dist/ui-shell.rtl.min.js +2 -2
- package/es/components/accordion/accordion-item.js +19 -1
- package/es/components/accordion/accordion-item.js.map +1 -1
- package/es/components/accordion/accordion.js.map +1 -1
- package/es/components/breadcrumb/breadcrumb-item.js.map +1 -1
- package/es/components/breadcrumb/breadcrumb-overflow-menu.js +5 -1
- package/es/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
- package/es/components/breadcrumb/breadcrumb.js +6 -1
- package/es/components/breadcrumb/breadcrumb.js.map +1 -1
- package/es/components/button/button-skeleton.js +21 -1
- package/es/components/button/button-skeleton.js.map +1 -1
- package/es/components/button/button.js +34 -2
- package/es/components/button/button.js.map +1 -1
- package/es/components/checkbox/checkbox.js +18 -1
- package/es/components/checkbox/checkbox.js.map +1 -1
- package/es/components/code-snippet/code-snippet-skeleton.js +5 -1
- package/es/components/code-snippet/code-snippet-skeleton.js.map +1 -1
- package/es/components/code-snippet/code-snippet.js +26 -5
- package/es/components/code-snippet/code-snippet.js.map +1 -1
- package/es/components/combo-box/combo-box.js +23 -2
- package/es/components/combo-box/combo-box.js.map +1 -1
- package/es/components/content-switcher/content-switcher-item.js +11 -1
- package/es/components/content-switcher/content-switcher-item.js.map +1 -1
- package/es/components/content-switcher/content-switcher.js +7 -1
- package/es/components/content-switcher/content-switcher.js.map +1 -1
- package/es/components/copy-button/copy-button.js +15 -2
- package/es/components/copy-button/copy-button.js.map +1 -1
- package/es/components/data-table/table-batch-actions.js +15 -1
- package/es/components/data-table/table-batch-actions.js.map +1 -1
- package/es/components/data-table/table-body.js.map +1 -1
- package/es/components/data-table/table-cell-skeleton.js.map +1 -1
- package/es/components/data-table/table-cell.js.map +1 -1
- package/es/components/data-table/table-expand-row.js +10 -1
- package/es/components/data-table/table-expand-row.js.map +1 -1
- package/es/components/data-table/table-expanded-row.js +7 -1
- package/es/components/data-table/table-expanded-row.js.map +1 -1
- package/es/components/data-table/table-head.js.map +1 -1
- package/es/components/data-table/table-header-cell.js +12 -1
- package/es/components/data-table/table-header-cell.js.map +1 -1
- package/es/components/data-table/table-row.js +22 -1
- package/es/components/data-table/table-row.js.map +1 -1
- package/es/components/data-table/table-toolbar-content.js.map +1 -1
- package/es/components/data-table/table-toolbar-search.js +8 -1
- package/es/components/data-table/table-toolbar-search.js.map +1 -1
- package/es/components/data-table/table-toolbar.js.map +1 -1
- package/es/components/data-table/table.js.map +1 -1
- package/es/components/date-picker/date-picker-input-skeleton.js +4 -1
- package/es/components/date-picker/date-picker-input-skeleton.js.map +1 -1
- package/es/components/date-picker/date-picker-input.js +30 -2
- package/es/components/date-picker/date-picker-input.js.map +1 -1
- package/es/components/date-picker/date-picker.js +12 -1
- package/es/components/date-picker/date-picker.js.map +1 -1
- package/es/components/dropdown/dropdown-item.js +6 -1
- package/es/components/dropdown/dropdown-item.js.map +1 -1
- package/es/components/dropdown/dropdown-skeleton.js +8 -1
- package/es/components/dropdown/dropdown-skeleton.js.map +1 -1
- package/es/components/dropdown/dropdown.js +72 -4
- package/es/components/dropdown/dropdown.js.map +1 -1
- package/es/components/file-uploader/drop-container.js +16 -1
- package/es/components/file-uploader/drop-container.js.map +1 -1
- package/es/components/file-uploader/file-uploader-item.js +29 -3
- package/es/components/file-uploader/file-uploader-item.js.map +1 -1
- package/es/components/file-uploader/file-uploader.js +12 -1
- package/es/components/file-uploader/file-uploader.js.map +1 -1
- package/es/components/floating-menu/floating-menu.d.ts +1 -1
- package/es/components/floating-menu/floating-menu.js +5 -2
- package/es/components/floating-menu/floating-menu.js.map +1 -1
- package/es/components/form/form-item.js.map +1 -1
- package/es/components/inline-loading/inline-loading.js +14 -3
- package/es/components/inline-loading/inline-loading.js.map +1 -1
- package/es/components/input/input.d.ts +1 -1
- package/es/components/input/input.js +48 -4
- package/es/components/input/input.js.map +1 -1
- package/es/components/link/link.js +26 -3
- package/es/components/link/link.js.map +1 -1
- package/es/components/list/list-item.js +8 -1
- package/es/components/list/list-item.js.map +1 -1
- package/es/components/list/ordered-list.js +5 -1
- package/es/components/list/ordered-list.js.map +1 -1
- package/es/components/list/unordered-list.js +5 -1
- package/es/components/list/unordered-list.js.map +1 -1
- package/es/components/loading/loading-icon.js +16 -1
- package/es/components/loading/loading-icon.js.map +1 -1
- package/es/components/loading/loading.js.map +1 -1
- package/es/components/modal/modal-body.js.map +1 -1
- package/es/components/modal/modal-close-button.js +9 -1
- package/es/components/modal/modal-close-button.js.map +1 -1
- package/es/components/modal/modal-footer.js +5 -1
- package/es/components/modal/modal-footer.js.map +1 -1
- package/es/components/modal/modal-header.js.map +1 -1
- package/es/components/modal/modal-heading.js.map +1 -1
- package/es/components/modal/modal-label.js.map +1 -1
- package/es/components/modal/modal.js +20 -1
- package/es/components/modal/modal.js.map +1 -1
- package/es/components/multi-select/multi-select-item.js +19 -1
- package/es/components/multi-select/multi-select-item.js.map +1 -1
- package/es/components/multi-select/multi-select.js +35 -3
- package/es/components/multi-select/multi-select.js.map +1 -1
- package/es/components/notification/inline-notification.js +27 -3
- package/es/components/notification/inline-notification.js.map +1 -1
- package/es/components/notification/toast-notification.js +21 -2
- package/es/components/notification/toast-notification.js.map +1 -1
- package/es/components/number-input/number-input-skeleton.js +4 -1
- package/es/components/number-input/number-input-skeleton.js.map +1 -1
- package/es/components/number-input/number-input.d.ts +1 -1
- package/es/components/number-input/number-input.js +80 -6
- package/es/components/number-input/number-input.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu-body.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu-item.js +16 -1
- package/es/components/overflow-menu/overflow-menu-item.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu.js +5 -1
- package/es/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es/components/pagination/page-sizes-select.js +14 -1
- package/es/components/pagination/page-sizes-select.js.map +1 -1
- package/es/components/pagination/pages-select.js +25 -2
- package/es/components/pagination/pages-select.js.map +1 -1
- package/es/components/pagination/pagination.js +30 -1
- package/es/components/pagination/pagination.js.map +1 -1
- package/es/components/progress-indicator/progress-indicator-skeleton.js.map +1 -1
- package/es/components/progress-indicator/progress-indicator.js.map +1 -1
- package/es/components/progress-indicator/progress-step-skeleton.js +10 -1
- package/es/components/progress-indicator/progress-step-skeleton.js.map +1 -1
- package/es/components/progress-indicator/progress-step.js +19 -2
- package/es/components/progress-indicator/progress-step.js.map +1 -1
- package/es/components/radio-button/radio-button-group.js.map +1 -1
- package/es/components/radio-button/radio-button-skeleton.js +4 -1
- package/es/components/radio-button/radio-button-skeleton.js.map +1 -1
- package/es/components/radio-button/radio-button.js +14 -1
- package/es/components/radio-button/radio-button.js.map +1 -1
- package/es/components/search/search-skeleton.js +4 -1
- package/es/components/search/search-skeleton.js.map +1 -1
- package/es/components/search/search.js +25 -1
- package/es/components/search/search.js.map +1 -1
- package/es/components/select/select.js +58 -4
- package/es/components/select/select.js.map +1 -1
- package/es/components/skeleton-placeholder/skeleton-placeholder.js.map +1 -1
- package/es/components/skeleton-text/skeleton-text.js.map +1 -1
- package/es/components/skip-to-content/skip-to-content.js +5 -1
- package/es/components/skip-to-content/skip-to-content.js.map +1 -1
- package/es/components/slider/slider-input.js +12 -1
- package/es/components/slider/slider-input.js.map +1 -1
- package/es/components/slider/slider-skeleton.js +12 -1
- package/es/components/slider/slider-skeleton.js.map +1 -1
- package/es/components/slider/slider.js +45 -1
- package/es/components/slider/slider.js.map +1 -1
- package/es/components/structured-list/structured-list-body.js.map +1 -1
- package/es/components/structured-list/structured-list-cell.js.map +1 -1
- package/es/components/structured-list/structured-list-head.js.map +1 -1
- package/es/components/structured-list/structured-list-header-cell-skeleton.js.map +1 -1
- package/es/components/structured-list/structured-list-header-cell.js.map +1 -1
- package/es/components/structured-list/structured-list-header-row.js +4 -1
- package/es/components/structured-list/structured-list-header-row.js.map +1 -1
- package/es/components/structured-list/structured-list-row.js +14 -1
- package/es/components/structured-list/structured-list-row.js.map +1 -1
- package/es/components/structured-list/structured-list.js +3 -1
- package/es/components/structured-list/structured-list.js.map +1 -1
- package/es/components/tabs/tab-skeleton.js.map +1 -1
- package/es/components/tabs/tab.js +11 -1
- package/es/components/tabs/tab.js.map +1 -1
- package/es/components/tabs/tabs-skeleton.js +8 -1
- package/es/components/tabs/tabs-skeleton.js.map +1 -1
- package/es/components/tabs/tabs.js +26 -1
- package/es/components/tabs/tabs.js.map +1 -1
- package/es/components/tag/filter-tag.js +6 -1
- package/es/components/tag/filter-tag.js.map +1 -1
- package/es/components/tag/tag.css.js +1 -1
- package/es/components/tag/tag.js.map +1 -1
- package/es/components/textarea/textarea-skeleton.js +4 -1
- package/es/components/textarea/textarea-skeleton.js.map +1 -1
- package/es/components/textarea/textarea.js +32 -1
- package/es/components/textarea/textarea.js.map +1 -1
- package/es/components/tile/expandable-tile.js +17 -1
- package/es/components/tile/expandable-tile.js.map +1 -1
- package/es/components/tile/selectable-tile.js +17 -1
- package/es/components/tile/selectable-tile.js.map +1 -1
- package/es/components/tile/tile-group.js.map +1 -1
- package/es/components/tile/tile.js.map +1 -1
- package/es/components/toggle/toggle.js +33 -2
- package/es/components/toggle/toggle.js.map +1 -1
- package/es/components/tooltip/tooltip-body.js +4 -1
- package/es/components/tooltip/tooltip-body.js.map +1 -1
- package/es/components/tooltip/tooltip-definition.js +8 -1
- package/es/components/tooltip/tooltip-definition.js.map +1 -1
- package/es/components/tooltip/tooltip-footer.js.map +1 -1
- package/es/components/tooltip/tooltip-icon.js +11 -1
- package/es/components/tooltip/tooltip-icon.js.map +1 -1
- package/es/components/tooltip/tooltip.js +4 -1
- package/es/components/tooltip/tooltip.js.map +1 -1
- package/es/components/ui-shell/header-menu-button.js +10 -1
- package/es/components/ui-shell/header-menu-button.js.map +1 -1
- package/es/components/ui-shell/header-menu.js +19 -1
- package/es/components/ui-shell/header-menu.js.map +1 -1
- package/es/components/ui-shell/header-name.js +10 -2
- package/es/components/ui-shell/header-name.js.map +1 -1
- package/es/components/ui-shell/header-nav-item.js +11 -1
- package/es/components/ui-shell/header-nav-item.js.map +1 -1
- package/es/components/ui-shell/header-nav.js +9 -1
- package/es/components/ui-shell/header-nav.js.map +1 -1
- package/es/components/ui-shell/header.js.map +1 -1
- package/es/components/ui-shell/side-nav-items.js.map +1 -1
- package/es/components/ui-shell/side-nav-link.js +16 -1
- package/es/components/ui-shell/side-nav-link.js.map +1 -1
- package/es/components/ui-shell/side-nav-menu-item.js +7 -1
- package/es/components/ui-shell/side-nav-menu-item.js.map +1 -1
- package/es/components/ui-shell/side-nav-menu.js +30 -1
- package/es/components/ui-shell/side-nav-menu.js.map +1 -1
- package/es/components/ui-shell/side-nav.js.map +1 -1
- package/es/globals/internal/storybook-cdn.d.ts +1 -1
- package/es/globals/internal/storybook-cdn.js +2 -2
- package/es/globals/internal/storybook-cdn.js.map +1 -1
- package/package.json +4 -3
- package/scss/components/tag/tag.scss +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","names":["settings","classMap","html","property","query","LitElement","HostListener","HostListenerMixin","MODAL_SIZE","styles","selectorTabbable","carbonElement","customElement","prefix","PRECEDING","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","FOLLOWING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINED_BY","tryFocusElems","elems","reverse","i","length","elem","focus","ownerDocument","activeElement","BXModal","_decorate","_initialize","_HostListenerMixin","constructor","args","F","d","kind","key","value","decorators","event","composedPath","indexOf","shadowRoot","_handleUserInitiatedClose","target","relatedTarget","_this$shadowRoot","open","_startSentinelNode","startSentinelNode","_endSentinelNode","endSentinelNode","oldContains","contains","currentContains","selectorTabbableForModal","comparisonResult","compareDocumentPosition","_delay","querySelectorAll","_handleClickContainer","matches","selectorCloseButton","triggeredBy","init","bubbles","cancelable","composed","detail","dispatchEvent","CustomEvent","eventBeforeClose","eventClose","attribute","type","Boolean","reflect","REGULAR","render","size","containerClass","split","filter","reduce","acc","item","_objectSpread","containerClasses","_t","_","updated","changedProperties","has","_launcher","primaryFocusNode","querySelector","selectorPrimaryFocus","static","ms","Promise","resolve","setTimeout"],"sources":["components/modal/modal.ts"],"sourcesContent":["/**\n * @license\n *\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 settings from 'carbon-components/es/globals/js/settings';\nimport { classMap } from 'lit-html/directives/class-map';\nimport { html, property, query, LitElement } from 'lit-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { MODAL_SIZE };\n\nconst { prefix } = settings;\n\n// eslint-disable-next-line no-bitwise\nconst PRECEDING =\n Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS;\n// eslint-disable-next-line no-bitwise\nconst FOLLOWING =\n Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n/**\n * Tries to focus on the given elements and bails out if one of them is successful.\n *\n * @param elems The elements.\n * @param reverse `true` to go through the list in reverse order.\n * @returns `true` if one of the attempts is successful, `false` otherwise.\n */\nfunction tryFocusElems(\n elems: NodeListOf<HTMLElement>,\n reverse: boolean = false\n) {\n if (!reverse) {\n for (let i = 0; i < elems.length; ++i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n } else {\n for (let i = elems.length - 1; i >= 0; --i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Modal.\n *\n * @element bx-modal\n * @csspart dialog The dialog.\n * @fires bx-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires bx-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass BXModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#start-sentinel')\n private _startSentinelNode!: HTMLAnchorElement;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#end-sentinel')\n private _endSentinelNode!: HTMLAnchorElement;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.shadowRoot!) < 0) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handles `blur` event on this element.\n *\n * @param event The event.\n */\n @HostListener('shadowRoot:focusout')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => {\n const {\n open,\n _startSentinelNode: startSentinelNode,\n _endSentinelNode: endSentinelNode,\n } = this;\n const oldContains = target !== this && this.contains(target as Node);\n const currentContains =\n relatedTarget !== this &&\n (this.contains(relatedTarget as Node) ||\n (this.shadowRoot?.contains(relatedTarget as Node) &&\n relatedTarget !== (endSentinelNode as Node)));\n\n // Performs focus wrapping if _all_ of the following is met:\n // * This modal is open\n // * The viewport still has focus\n // * Modal body used to have focus but no longer has focus\n const { selectorTabbable: selectorTabbableForModal } = this\n .constructor as typeof BXModal;\n if (open && relatedTarget && oldContains && !currentContains) {\n const comparisonResult = (target as Node).compareDocumentPosition(\n relatedTarget as Node\n );\n // eslint-disable-next-line no-bitwise\n if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) {\n await (this.constructor as typeof BXModal)._delay();\n if (\n !tryFocusElems(\n this.querySelectorAll(selectorTabbableForModal),\n true\n ) &&\n relatedTarget !== this\n ) {\n this.focus();\n }\n }\n // eslint-disable-next-line no-bitwise\n else if (\n relatedTarget === endSentinelNode ||\n comparisonResult & FOLLOWING\n ) {\n await (this.constructor as typeof BXModal)._delay();\n if (!tryFocusElems(this.querySelectorAll(selectorTabbableForModal))) {\n this.focus();\n }\n }\n }\n };\n\n @HostListener('document:keydown')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof BXModal).selectorCloseButton\n )\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof BXModal).eventClose, init)\n );\n }\n }\n }\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.REGULAR;\n\n render() {\n const { size } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <a\n id=\"start-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n <div\n part=\"dialog\"\n class=${containerClasses}\n role=\"dialog\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot></slot>\n </div>\n <a\n id=\"end-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof BXModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof BXModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<bx-btn>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<bx-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else if (\n !tryFocusElems(\n this.querySelectorAll(\n (this.constructor as typeof BXModal).selectorTabbable\n ),\n true\n )\n ) {\n this.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms: number = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-btn[kind=\"primary\"]`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModal;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modal.js","names":["settings","classMap","html","property","query","LitElement","HostListener","HostListenerMixin","MODAL_SIZE","styles","selectorTabbable","carbonElement","customElement","prefix","PRECEDING","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","FOLLOWING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINED_BY","tryFocusElems","elems","reverse","i","length","elem","focus","ownerDocument","activeElement","BXModal","_decorate","_initialize","_HostListenerMixin","constructor","args","F","d","kind","key","value","decorators","event","composedPath","indexOf","shadowRoot","_handleUserInitiatedClose","target","relatedTarget","_this$shadowRoot","open","_startSentinelNode","startSentinelNode","_endSentinelNode","endSentinelNode","oldContains","contains","currentContains","selectorTabbableForModal","comparisonResult","compareDocumentPosition","_delay","querySelectorAll","_handleClickContainer","matches","selectorCloseButton","triggeredBy","init","bubbles","cancelable","composed","detail","dispatchEvent","CustomEvent","eventBeforeClose","eventClose","attribute","type","Boolean","reflect","REGULAR","render","size","containerClass","split","filter","reduce","acc","item","_objectSpread","containerClasses","_t","_","updated","changedProperties","has","_launcher","primaryFocusNode","querySelector","selectorPrimaryFocus","static","ms","Promise","resolve","setTimeout"],"sources":["components/modal/modal.ts"],"sourcesContent":["/**\n * @license\n *\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 settings from 'carbon-components/es/globals/js/settings';\nimport { classMap } from 'lit-html/directives/class-map';\nimport { html, property, query, LitElement } from 'lit-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { MODAL_SIZE };\n\nconst { prefix } = settings;\n\n// eslint-disable-next-line no-bitwise\nconst PRECEDING =\n Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS;\n// eslint-disable-next-line no-bitwise\nconst FOLLOWING =\n Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n/**\n * Tries to focus on the given elements and bails out if one of them is successful.\n *\n * @param elems The elements.\n * @param reverse `true` to go through the list in reverse order.\n * @returns `true` if one of the attempts is successful, `false` otherwise.\n */\nfunction tryFocusElems(\n elems: NodeListOf<HTMLElement>,\n reverse: boolean = false\n) {\n if (!reverse) {\n for (let i = 0; i < elems.length; ++i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n } else {\n for (let i = elems.length - 1; i >= 0; --i) {\n const elem = elems[i];\n elem.focus();\n if (elem.ownerDocument!.activeElement === elem) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Modal.\n *\n * @element bx-modal\n * @csspart dialog The dialog.\n * @fires bx-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires bx-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass BXModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#start-sentinel')\n private _startSentinelNode!: HTMLAnchorElement;\n\n /**\n * Node to track focus going outside of modal content.\n */\n @query('#end-sentinel')\n private _endSentinelNode!: HTMLAnchorElement;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (event.composedPath().indexOf(this.shadowRoot!) < 0) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handles `blur` event on this element.\n *\n * @param event The event.\n */\n @HostListener('shadowRoot:focusout')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => {\n const {\n open,\n _startSentinelNode: startSentinelNode,\n _endSentinelNode: endSentinelNode,\n } = this;\n const oldContains = target !== this && this.contains(target as Node);\n const currentContains =\n relatedTarget !== this &&\n (this.contains(relatedTarget as Node) ||\n (this.shadowRoot?.contains(relatedTarget as Node) &&\n relatedTarget !== (endSentinelNode as Node)));\n\n // Performs focus wrapping if _all_ of the following is met:\n // * This modal is open\n // * The viewport still has focus\n // * Modal body used to have focus but no longer has focus\n const { selectorTabbable: selectorTabbableForModal } = this\n .constructor as typeof BXModal;\n if (open && relatedTarget && oldContains && !currentContains) {\n const comparisonResult = (target as Node).compareDocumentPosition(\n relatedTarget as Node\n );\n // eslint-disable-next-line no-bitwise\n if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) {\n await (this.constructor as typeof BXModal)._delay();\n if (\n !tryFocusElems(\n this.querySelectorAll(selectorTabbableForModal),\n true\n ) &&\n relatedTarget !== this\n ) {\n this.focus();\n }\n }\n // eslint-disable-next-line no-bitwise\n else if (\n relatedTarget === endSentinelNode ||\n comparisonResult & FOLLOWING\n ) {\n await (this.constructor as typeof BXModal)._delay();\n if (!tryFocusElems(this.querySelectorAll(selectorTabbableForModal))) {\n this.focus();\n }\n }\n }\n };\n\n @HostListener('document:keydown')\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof BXModal).selectorCloseButton\n )\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof BXModal).eventClose, init)\n );\n }\n }\n }\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.REGULAR;\n\n render() {\n const { size } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <a\n id=\"start-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n <div\n part=\"dialog\"\n class=${containerClasses}\n role=\"dialog\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot></slot>\n </div>\n <a\n id=\"end-sentinel\"\n class=\"${prefix}--visually-hidden\"\n href=\"javascript:void 0\"\n role=\"navigation\"></a>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof BXModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof BXModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<bx-btn>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<bx-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else if (\n !tryFocusElems(\n this.querySelectorAll(\n (this.constructor as typeof BXModal).selectorTabbable\n ),\n true\n )\n ) {\n this.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms: number = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-btn[kind=\"primary\"]`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXModal;\n"],"mappings":"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"}
|
|
@@ -69,7 +69,25 @@ let BXMultiSelectItem = _decorate([customElement(`${prefix}-multi-select-item`)]
|
|
|
69
69
|
selectionName,
|
|
70
70
|
value
|
|
71
71
|
} = this;
|
|
72
|
-
return html(_t || (_t = _`
|
|
72
|
+
return html(_t || (_t = _`
|
|
73
|
+
<div class="${0}--list-box__menu-item__option">
|
|
74
|
+
<div class="${0}--form-item ${0}--checkbox-wrapper">
|
|
75
|
+
<input
|
|
76
|
+
id="input"
|
|
77
|
+
type="checkbox"
|
|
78
|
+
class="${0}--checkbox"
|
|
79
|
+
tabindex="-1"
|
|
80
|
+
readonly
|
|
81
|
+
?disabled=${0}
|
|
82
|
+
.checked=${0}
|
|
83
|
+
name="${0}"
|
|
84
|
+
value="${0}" />
|
|
85
|
+
<label for="input" class="${0}--checkbox-label">
|
|
86
|
+
<span class="${0}--checkbox-label-text"><slot></slot></span>
|
|
87
|
+
</label>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
`), prefix, prefix, prefix, prefix, disabled, selected, ifDefined(selectionName || undefined), value, prefix, prefix);
|
|
73
91
|
}
|
|
74
92
|
|
|
75
93
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select-item.js","names":["settings","ifDefined","html","property","BXDropdownItem","styles","carbonElement","customElement","prefix","BXMultiSelectItem","_decorate","_initialize","_BXDropdownItem","constructor","args","F","d","kind","decorators","type","Boolean","key","value","attribute","render","disabled","selected","selectionName","_t","_","undefined","static","selectorList"],"sources":["components/multi-select/multi-select-item.ts"],"sourcesContent":["/**\n * @license\n *\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 settings from 'carbon-components/es/globals/js/settings';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, property } from 'lit-element';\nimport BXDropdownItem from '../dropdown/dropdown-item';\nimport styles from './multi-select.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Multi select item.\n *\n * @element bx-multi-select-item\n */\n@customElement(`${prefix}-multi-select-item`)\nclass BXMultiSelectItem extends BXDropdownItem {\n /**\n * The property to hide when item is filtered from input\n */\n @property({ type: Boolean })\n filtered;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n render() {\n const { disabled, selected, selectionName, value } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\">\n <div class=\"${prefix}--form-item ${prefix}--checkbox-wrapper\">\n <input\n id=\"input\"\n type=\"checkbox\"\n class=\"${prefix}--checkbox\"\n tabindex=\"-1\"\n readonly\n ?disabled=${disabled}\n .checked=${selected}\n name=\"${ifDefined(selectionName || undefined)}\"\n value=\"${value}\" />\n <label for=\"input\" class=\"${prefix}--checkbox-label\">\n <span class=\"${prefix}--checkbox-label-text\"><slot></slot></span>\n </label>\n </div>\n </div>\n `;\n }\n\n /**\n * A selector that will return multi select.\n */\n static get selectorList() {\n return `${prefix}-multi-select`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelectItem;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,QAAQ,MAAM,0CAA0C;AAC/D,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,IAAI,EAAEC,QAAQ,QAAQ,aAAa;AAC5C,OAAOC,cAAc,MAAM,2BAA2B;AACtD,OAAOC,MAAM,MAAM,yBAAqB;AACxC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGR,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMS,iBAAiB,GAAAC,SAAA,EADtBH,aAAa,CAAE,GAAEC,MAAO,oBAAmB,CAAC,aAAAG,WAAA,EAAAC,eAAA;EAA7C,MACMH,iBAAiB,SAAAG,eAAA,CAAwB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EA4C/C;EAAC;IAAAI,CAAA,EA5CKN,iBAAiB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,UAAA,GAIpBf,QAAQ,CAAC;QAAEgB,IAAI,EAAEC;MAAQ,CAAC,CAAC;MAAAC,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAM3Bf,QAAQ,CAAC;QAAEoB,SAAS,EAAE;MAAiB,CAAC,CAAC;MAAAF,GAAA;MAAAC,MAAA;QAAA,OAC1B,EAAE;MAAA;IAAA;MAAAL,IAAA;MAAAI,GAAA;MAAAC,KAAA;MAVlB;AACF;AACA;;MAIE;AACF;AACA;;MAIE,SAAAE,OAAA,EAAS;QACP,MAAM;UAAEC,QAAQ;UAAEC,QAAQ;UAAEC,aAAa;UAAEL;QAAM,CAAC,GAAG,IAAI;QACzD,OAAOpB,IAAI,CAAA0B,EAAA,KAAAA,EAAA,GAAAC,
|
|
1
|
+
{"version":3,"file":"multi-select-item.js","names":["settings","ifDefined","html","property","BXDropdownItem","styles","carbonElement","customElement","prefix","BXMultiSelectItem","_decorate","_initialize","_BXDropdownItem","constructor","args","F","d","kind","decorators","type","Boolean","key","value","attribute","render","disabled","selected","selectionName","_t","_","undefined","static","selectorList"],"sources":["components/multi-select/multi-select-item.ts"],"sourcesContent":["/**\n * @license\n *\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 settings from 'carbon-components/es/globals/js/settings';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, property } from 'lit-element';\nimport BXDropdownItem from '../dropdown/dropdown-item';\nimport styles from './multi-select.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Multi select item.\n *\n * @element bx-multi-select-item\n */\n@customElement(`${prefix}-multi-select-item`)\nclass BXMultiSelectItem extends BXDropdownItem {\n /**\n * The property to hide when item is filtered from input\n */\n @property({ type: Boolean })\n filtered;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n render() {\n const { disabled, selected, selectionName, value } = this;\n return html`\n <div class=\"${prefix}--list-box__menu-item__option\">\n <div class=\"${prefix}--form-item ${prefix}--checkbox-wrapper\">\n <input\n id=\"input\"\n type=\"checkbox\"\n class=\"${prefix}--checkbox\"\n tabindex=\"-1\"\n readonly\n ?disabled=${disabled}\n .checked=${selected}\n name=\"${ifDefined(selectionName || undefined)}\"\n value=\"${value}\" />\n <label for=\"input\" class=\"${prefix}--checkbox-label\">\n <span class=\"${prefix}--checkbox-label-text\"><slot></slot></span>\n </label>\n </div>\n </div>\n `;\n }\n\n /**\n * A selector that will return multi select.\n */\n static get selectorList() {\n return `${prefix}-multi-select`;\n }\n\n static styles = styles;\n}\n\nexport default BXMultiSelectItem;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,QAAQ,MAAM,0CAA0C;AAC/D,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,IAAI,EAAEC,QAAQ,QAAQ,aAAa;AAC5C,OAAOC,cAAc,MAAM,2BAA2B;AACtD,OAAOC,MAAM,MAAM,yBAAqB;AACxC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGR,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AAJA,IAMMS,iBAAiB,GAAAC,SAAA,EADtBH,aAAa,CAAE,GAAEC,MAAO,oBAAmB,CAAC,aAAAG,WAAA,EAAAC,eAAA;EAA7C,MACMH,iBAAiB,SAAAG,eAAA,CAAwB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EA4C/C;EAAC;IAAAI,CAAA,EA5CKN,iBAAiB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,UAAA,GAIpBf,QAAQ,CAAC;QAAEgB,IAAI,EAAEC;MAAQ,CAAC,CAAC;MAAAC,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAM3Bf,QAAQ,CAAC;QAAEoB,SAAS,EAAE;MAAiB,CAAC,CAAC;MAAAF,GAAA;MAAAC,MAAA;QAAA,OAC1B,EAAE;MAAA;IAAA;MAAAL,IAAA;MAAAI,GAAA;MAAAC,KAAA;MAVlB;AACF;AACA;;MAIE;AACF;AACA;;MAIE,SAAAE,OAAA,EAAS;QACP,MAAM;UAAEC,QAAQ;UAAEC,QAAQ;UAAEC,aAAa;UAAEL;QAAM,CAAC,GAAG,IAAI;QACzD,OAAOpB,IAAI,CAAA0B,EAAA,KAAAA,EAAA,GAAAC,CAAC;AAChB,oBAAkB,CAAS;AAC3B,sBAAoB,CAAS,eAAY,CAAS;AAClD;AACA;AACA;AACA,qBAAmB,CAAS;AAC5B;AACA;AACA,wBAAsB,CAAW;AACjC,uBAAqB,CAAW;AAChC,oBAAkB,CAAwC;AAC1D,qBAAmB,CAAQ;AAC3B,sCAAoC,CAAS;AAC7C,2BAAyB,CAAS;AAClC;AACA;AACA;AACA,KAAI,GAjBgBrB,MAAM,EACJA,MAAM,EAAeA,MAAM,EAI5BA,MAAM,EAGHiB,QAAQ,EACTC,QAAQ,EACXzB,SAAS,CAAC0B,aAAa,IAAIG,SAAS,CAAC,EACpCR,KAAK,EACYd,MAAM,EACjBA,MAAM;MAK/B;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAc,MAAA;MAAAV,GAAA;MAAAC,KAAA,EAGA,SAAAU,aAAA,EAA0B;QACxB,OAAQ,GAAExB,MAAO,eAAc;MACjC;IAAC;MAAAS,IAAA;MAAAc,MAAA;MAAAV,GAAA;MAAAC,MAAA;QAAA,OAEejB,MAAM;MAAA;IAAA;EAAA;AAAA,GA3CQD,cAAc;AA8C9C,eAAeK,iBAAiB"}
|
|
@@ -231,7 +231,17 @@ let BXMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functio
|
|
|
231
231
|
clearSelectionLabel,
|
|
232
232
|
_selectedItemsCount: selectedItemsCount
|
|
233
233
|
} = this;
|
|
234
|
-
return selectedItemsCount === 0 ? undefined : html(_t || (_t = _`
|
|
234
|
+
return selectedItemsCount === 0 ? undefined : html(_t || (_t = _`
|
|
235
|
+
<div
|
|
236
|
+
id="selection-button"
|
|
237
|
+
role="button"
|
|
238
|
+
class="${0}--list-box__selection ${0}--list-box__selection--multi ${0}--tag--filter"
|
|
239
|
+
tabindex="0"
|
|
240
|
+
title="${0}">
|
|
241
|
+
${0}
|
|
242
|
+
${0}
|
|
243
|
+
</div>
|
|
244
|
+
`), prefix, prefix, prefix, clearSelectionLabel, selectedItemsCount, Close16({
|
|
235
245
|
'aria-label': clearSelectionLabel
|
|
236
246
|
}));
|
|
237
247
|
}
|
|
@@ -247,7 +257,20 @@ let BXMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functio
|
|
|
247
257
|
triggerContent,
|
|
248
258
|
_selectedItemContent: selectedItemContent
|
|
249
259
|
} = this;
|
|
250
|
-
return !this.filterable ? html(_t2 || (_t2 = _`
|
|
260
|
+
return !this.filterable ? html(_t2 || (_t2 = _`
|
|
261
|
+
<span id="trigger-label" class="${0}--list-box__label"
|
|
262
|
+
>${0}</span
|
|
263
|
+
>
|
|
264
|
+
`), prefix, selectedItemContent || triggerContent) : html(_t3 || (_t3 = _`
|
|
265
|
+
<input
|
|
266
|
+
id="trigger-label"
|
|
267
|
+
class="${0}--text-input"
|
|
268
|
+
placeholder="${0}"
|
|
269
|
+
role="combobox"
|
|
270
|
+
aria-controls="menu-body"
|
|
271
|
+
aria-autocomplete="list"
|
|
272
|
+
@input="${0}" />
|
|
273
|
+
`), prefix, triggerContent, this._handleInput);
|
|
251
274
|
}
|
|
252
275
|
}, {
|
|
253
276
|
kind: "method",
|
|
@@ -257,7 +280,16 @@ let BXMultiSelect = _decorate([customElement(`${prefix}-multi-select`)], functio
|
|
|
257
280
|
clearSelectionLabel,
|
|
258
281
|
_filterInputNode: filterInputNode
|
|
259
282
|
} = this;
|
|
260
|
-
return filterInputNode && filterInputNode.value.length > 0 && this.filterable ? html(_t4 || (_t4 = _`
|
|
283
|
+
return filterInputNode && filterInputNode.value.length > 0 && this.filterable ? html(_t4 || (_t4 = _`
|
|
284
|
+
<div
|
|
285
|
+
id="clear-button"
|
|
286
|
+
role="button"
|
|
287
|
+
class="${0}--list-box__selection"
|
|
288
|
+
tabindex="0"
|
|
289
|
+
title="${0}">
|
|
290
|
+
${0}
|
|
291
|
+
</div>
|
|
292
|
+
`), prefix, clearSelectionLabel, Close16({
|
|
261
293
|
'aria-label': clearSelectionLabel
|
|
262
294
|
})) : undefined;
|
|
263
295
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select.js","names":["settings","html","property","query","Close16","filter","forEach","indexOf","BXDropdown","DROPDOWN_KEYBOARD_ACTION","styles","carbonElement","customElement","DROPDOWN_COLOR_SCHEME","DROPDOWN_SIZE","DROPDOWN_TYPE","prefix","BXMultiSelect","_decorate","_initialize","_BXDropdown","constructor","args","F","d","kind","decorators","type","Boolean","key","value","_selectionShouldChange","itemToSelect","_selectionDidChange","selected","_assistiveStatusText","selectedItemAssistiveText","unselectedItemAssistiveText","querySelectorAll","selectorItemSelected","item","_handleUserInitiatedToggle","unselectedAllAssistiveText","selectorItem","map","join","_handleClickInner","event","_this$_selectionButto","_this$_clearButtonNod","_selectionButtonNode","contains","target","_handleUserInitiatedSelectItem","filterable","_filterInputNode","focus","_triggerNode","_clearButtonNode","_handleUserInitiatedClearInput","shouldIgnoreClickInner","elem","closest","selectorIgnoreClickInner","composedPath","some","_get","_getPrototypeOf","prototype","call","_handleKeypressInner","_this$_clearButtonNod2","_this$_selectionButto2","action","getAction","TRIGGERING","open","_handleKeypressInnerFlterable","highlightedItem","querySelector","selectorItemHighlighted","_renderPrecedingTriggerContent","clearSelectionLabel","_selectedItemsCount","selectedItemsCount","undefined","_t","_","_renderTriggerContent","triggerContent","_selectedItemContent","selectedItemContent","_t2","_t3","_handleInput","_renderFollowingTriggerContent","filterInputNode","length","_t4","items","inputValue","toLocaleLowerCase","itemValue","innerText","includes","setAttribute","removeAttribute","requestUpdate","_navigate","direction","selectorItemResults","highlightedIndex","nextIndex","i","highlighted","selectorItemFiltered","attribute","shouldUpdate","changedProperties","has","size","values","split","static","eventBeforeToggle","eventToggle","eventBeforeSelect","eventSelect"],"sources":["components/multi-select/multi-select.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2020, 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 settings from 'carbon-components/es/globals/js/settings';\nimport { html, property, query, TemplateResult } from 'lit-element';\nimport Close16 from '@carbon/icons/lib/close/16';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport BXDropdown, { DROPDOWN_KEYBOARD_ACTION } from '../dropdown/dropdown';\nimport BXMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport {\n DROPDOWN_COLOR_SCHEME,\n DROPDOWN_SIZE,\n DROPDOWN_TYPE,\n} from '../dropdown/dropdown';\n\nconst { prefix } = settings;\n\n/**\n * Multi select.\n *\n * @element bx-multi-select\n * @fires bx-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 bx-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires bx-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 bx-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 BXMultiSelect extends BXDropdown {\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?: BXMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: BXMultiSelectItem) {\n if (itemToSelect) {\n itemToSelect.selected = !itemToSelect.selected;\n this._assistiveStatusText = itemToSelect.selected\n ? this.selectedItemAssistiveText\n : this.unselectedItemAssistiveText;\n } else {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as BXMultiSelectItem).selected = false;\n }\n );\n this._handleUserInitiatedToggle(false);\n this._assistiveStatusText = this.unselectedAllAssistiveText;\n }\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 BXMultiSelect).selectorItem\n ),\n (item) => (item as BXMultiSelectItem).selected\n )\n .map((item) => (item as BXMultiSelectItem).value)\n .join(',');\n }\n\n protected _handleClickInner(event: MouseEvent) {\n if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this._clearButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedClearInput();\n } else {\n const shouldIgnoreClickInner = (elem) =>\n elem.closest &&\n elem.closest(\n (this.constructor as typeof BXMultiSelect).selectorIgnoreClickInner\n );\n if (!event.composedPath().some(shouldIgnoreClickInner)) {\n super._handleClickInner(event);\n }\n if (this.filterable) this._filterInputNode.focus();\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 BXDropdown).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 BXDropdown).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 BXDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as BXMultiSelectItem;\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 _renderPrecedingTriggerContent() {\n const { clearSelectionLabel, _selectedItemsCount: selectedItemsCount } =\n this;\n return selectedItemsCount === 0\n ? undefined\n : html`\n <div\n id=\"selection-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection ${prefix}--list-box__selection--multi ${prefix}--tag--filter\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${selectedItemsCount}\n ${Close16({ 'aria-label': clearSelectionLabel })}\n </div>\n `;\n }\n\n /**\n @returns The main content of the trigger button.\n */\n protected _renderTriggerContent(): TemplateResult {\n const { triggerContent, _selectedItemContent: selectedItemContent } = this;\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || triggerContent}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${prefix}--text-input\"\n placeholder=\"${triggerContent}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n protected _renderFollowingTriggerContent(): 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 ${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 BXMultiSelect).selectorItem\n );\n const inputValue = this._filterInputNode.value.toLocaleLowerCase();\n\n if (!this.open) this.open = true;\n\n forEach(items, (item) => {\n const itemValue = (item as HTMLElement).innerText.toLocaleLowerCase();\n\n if (!itemValue.includes(inputValue)) {\n (item as BXMultiSelectItem).setAttribute('filtered', '');\n (item as BXMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as BXMultiSelectItem).removeAttribute('filtered');\n }\n });\n\n this.requestUpdate();\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 this._triggerNode.focus();\n super._navigate(direction);\n } else {\n // only navigate through remaining item\n const constructor = this.constructor as typeof BXMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemResults);\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n );\n const highlightedIndex = indexOf(items, highlightedItem!);\n\n let nextIndex = highlightedIndex + direction;\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 BXMultiSelectItem).highlighted = i === nextIndex;\n });\n }\n }\n\n /**\n * Handles user-initiated clearing the `<input>` for filtering.\n */\n protected _handleUserInitiatedClearInput() {\n const constructor = this.constructor as typeof BXMultiSelect;\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 BXMultiSelectItem).removeAttribute('filtered');\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 * An assistive text for screen reader to announce, telling that an item is unselected.\n */\n @property({ attribute: 'unselected-item-assistive-text' })\n unselectedItemAssistiveText = 'Unselected an item.';\n\n /**\n * An assistive text for screen reader to announce, telling that all items are unselected.\n */\n @property({ attribute: 'unselected-all-assistive-text' })\n unselectedAllAssistiveText = 'Unselected all items.';\n\n shouldUpdate(changedProperties) {\n const { selectorItem } = this.constructor as typeof BXMultiSelect;\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as BXMultiSelectItem).size = this.size;\n });\n }\n if (changedProperties.has('value')) {\n const { value } = this;\n const values = !value ? [] : value.split(',');\n // Updates selection beforehand because our rendering logic for `<bx-multi-select>` looks for selected items via `qSA()`\n const items = this.querySelectorAll(selectorItem);\n forEach(items, (elem) => {\n (elem as BXMultiSelectItem).selected =\n values.indexOf((elem as BXMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) => values.indexOf((elem as BXMultiSelectItem).value) >= 0\n ).length;\n }\n return true;\n }\n\n /**\n * A selector to ignore the `click` events from.\n * Primary for the checkbox label where the `click` event will happen from the associated check box.\n */\n private static get selectorIgnoreClickInner() {\n return `.${prefix}--checkbox-label`;\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 BXMultiSelect;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"multi-select.js","names":["settings","html","property","query","Close16","filter","forEach","indexOf","BXDropdown","DROPDOWN_KEYBOARD_ACTION","styles","carbonElement","customElement","DROPDOWN_COLOR_SCHEME","DROPDOWN_SIZE","DROPDOWN_TYPE","prefix","BXMultiSelect","_decorate","_initialize","_BXDropdown","constructor","args","F","d","kind","decorators","type","Boolean","key","value","_selectionShouldChange","itemToSelect","_selectionDidChange","selected","_assistiveStatusText","selectedItemAssistiveText","unselectedItemAssistiveText","querySelectorAll","selectorItemSelected","item","_handleUserInitiatedToggle","unselectedAllAssistiveText","selectorItem","map","join","_handleClickInner","event","_this$_selectionButto","_this$_clearButtonNod","_selectionButtonNode","contains","target","_handleUserInitiatedSelectItem","filterable","_filterInputNode","focus","_triggerNode","_clearButtonNode","_handleUserInitiatedClearInput","shouldIgnoreClickInner","elem","closest","selectorIgnoreClickInner","composedPath","some","_get","_getPrototypeOf","prototype","call","_handleKeypressInner","_this$_clearButtonNod2","_this$_selectionButto2","action","getAction","TRIGGERING","open","_handleKeypressInnerFlterable","highlightedItem","querySelector","selectorItemHighlighted","_renderPrecedingTriggerContent","clearSelectionLabel","_selectedItemsCount","selectedItemsCount","undefined","_t","_","_renderTriggerContent","triggerContent","_selectedItemContent","selectedItemContent","_t2","_t3","_handleInput","_renderFollowingTriggerContent","filterInputNode","length","_t4","items","inputValue","toLocaleLowerCase","itemValue","innerText","includes","setAttribute","removeAttribute","requestUpdate","_navigate","direction","selectorItemResults","highlightedIndex","nextIndex","i","highlighted","selectorItemFiltered","attribute","shouldUpdate","changedProperties","has","size","values","split","static","eventBeforeToggle","eventToggle","eventBeforeSelect","eventSelect"],"sources":["components/multi-select/multi-select.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2020, 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 settings from 'carbon-components/es/globals/js/settings';\nimport { html, property, query, TemplateResult } from 'lit-element';\nimport Close16 from '@carbon/icons/lib/close/16';\nimport {\n filter,\n forEach,\n indexOf,\n} from '../../globals/internal/collection-helpers';\nimport BXDropdown, { DROPDOWN_KEYBOARD_ACTION } from '../dropdown/dropdown';\nimport BXMultiSelectItem from './multi-select-item';\nimport styles from './multi-select.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport {\n DROPDOWN_COLOR_SCHEME,\n DROPDOWN_SIZE,\n DROPDOWN_TYPE,\n} from '../dropdown/dropdown';\n\nconst { prefix } = settings;\n\n/**\n * Multi select.\n *\n * @element bx-multi-select\n * @fires bx-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 bx-multi-select-selected - The custom event fired after a multi select item is selected upon a user gesture.\n * @fires bx-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 bx-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 BXMultiSelect extends BXDropdown {\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?: BXMultiSelectItem) {\n // If we are selecting an item, assumes we always toggle\n return Boolean(this.value || itemToSelect);\n }\n\n protected _selectionDidChange(itemToSelect?: BXMultiSelectItem) {\n if (itemToSelect) {\n itemToSelect.selected = !itemToSelect.selected;\n this._assistiveStatusText = itemToSelect.selected\n ? this.selectedItemAssistiveText\n : this.unselectedItemAssistiveText;\n } else {\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof BXMultiSelect).selectorItemSelected\n ),\n (item) => {\n (item as BXMultiSelectItem).selected = false;\n }\n );\n this._handleUserInitiatedToggle(false);\n this._assistiveStatusText = this.unselectedAllAssistiveText;\n }\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 BXMultiSelect).selectorItem\n ),\n (item) => (item as BXMultiSelectItem).selected\n )\n .map((item) => (item as BXMultiSelectItem).value)\n .join(',');\n }\n\n protected _handleClickInner(event: MouseEvent) {\n if (this._selectionButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedSelectItem();\n if (this.filterable) {\n this._filterInputNode.focus();\n } else {\n this._triggerNode.focus();\n }\n } else if (this._clearButtonNode?.contains(event.target as Node)) {\n this._handleUserInitiatedClearInput();\n } else {\n const shouldIgnoreClickInner = (elem) =>\n elem.closest &&\n elem.closest(\n (this.constructor as typeof BXMultiSelect).selectorIgnoreClickInner\n );\n if (!event.composedPath().some(shouldIgnoreClickInner)) {\n super._handleClickInner(event);\n }\n if (this.filterable) this._filterInputNode.focus();\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 BXDropdown).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 BXDropdown).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 BXDropdown;\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n ) as BXMultiSelectItem;\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 _renderPrecedingTriggerContent() {\n const { clearSelectionLabel, _selectedItemsCount: selectedItemsCount } =\n this;\n return selectedItemsCount === 0\n ? undefined\n : html`\n <div\n id=\"selection-button\"\n role=\"button\"\n class=\"${prefix}--list-box__selection ${prefix}--list-box__selection--multi ${prefix}--tag--filter\"\n tabindex=\"0\"\n title=\"${clearSelectionLabel}\">\n ${selectedItemsCount}\n ${Close16({ 'aria-label': clearSelectionLabel })}\n </div>\n `;\n }\n\n /**\n @returns The main content of the trigger button.\n */\n protected _renderTriggerContent(): TemplateResult {\n const { triggerContent, _selectedItemContent: selectedItemContent } = this;\n return !this.filterable\n ? html`\n <span id=\"trigger-label\" class=\"${prefix}--list-box__label\"\n >${selectedItemContent || triggerContent}</span\n >\n `\n : html`\n <input\n id=\"trigger-label\"\n class=\"${prefix}--text-input\"\n placeholder=\"${triggerContent}\"\n role=\"combobox\"\n aria-controls=\"menu-body\"\n aria-autocomplete=\"list\"\n @input=\"${this._handleInput}\" />\n `;\n }\n\n protected _renderFollowingTriggerContent(): 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 ${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 BXMultiSelect).selectorItem\n );\n const inputValue = this._filterInputNode.value.toLocaleLowerCase();\n\n if (!this.open) this.open = true;\n\n forEach(items, (item) => {\n const itemValue = (item as HTMLElement).innerText.toLocaleLowerCase();\n\n if (!itemValue.includes(inputValue)) {\n (item as BXMultiSelectItem).setAttribute('filtered', '');\n (item as BXMultiSelectItem).removeAttribute('highlighted');\n } else {\n (item as BXMultiSelectItem).removeAttribute('filtered');\n }\n });\n\n this.requestUpdate();\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 this._triggerNode.focus();\n super._navigate(direction);\n } else {\n // only navigate through remaining item\n const constructor = this.constructor as typeof BXMultiSelect;\n const items = this.querySelectorAll(constructor.selectorItemResults);\n const highlightedItem = this.querySelector(\n constructor.selectorItemHighlighted\n );\n const highlightedIndex = indexOf(items, highlightedItem!);\n\n let nextIndex = highlightedIndex + direction;\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 BXMultiSelectItem).highlighted = i === nextIndex;\n });\n }\n }\n\n /**\n * Handles user-initiated clearing the `<input>` for filtering.\n */\n protected _handleUserInitiatedClearInput() {\n const constructor = this.constructor as typeof BXMultiSelect;\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 BXMultiSelectItem).removeAttribute('filtered');\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 * An assistive text for screen reader to announce, telling that an item is unselected.\n */\n @property({ attribute: 'unselected-item-assistive-text' })\n unselectedItemAssistiveText = 'Unselected an item.';\n\n /**\n * An assistive text for screen reader to announce, telling that all items are unselected.\n */\n @property({ attribute: 'unselected-all-assistive-text' })\n unselectedAllAssistiveText = 'Unselected all items.';\n\n shouldUpdate(changedProperties) {\n const { selectorItem } = this.constructor as typeof BXMultiSelect;\n if (changedProperties.has('size')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as BXMultiSelectItem).size = this.size;\n });\n }\n if (changedProperties.has('value')) {\n const { value } = this;\n const values = !value ? [] : value.split(',');\n // Updates selection beforehand because our rendering logic for `<bx-multi-select>` looks for selected items via `qSA()`\n const items = this.querySelectorAll(selectorItem);\n forEach(items, (elem) => {\n (elem as BXMultiSelectItem).selected =\n values.indexOf((elem as BXMultiSelectItem).value) >= 0;\n });\n this._selectedItemsCount = filter(\n items,\n (elem) => values.indexOf((elem as BXMultiSelectItem).value) >= 0\n ).length;\n }\n return true;\n }\n\n /**\n * A selector to ignore the `click` events from.\n * Primary for the checkbox label where the `click` event will happen from the associated check box.\n */\n private static get selectorIgnoreClickInner() {\n return `.${prefix}--checkbox-label`;\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 BXMultiSelect;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,QAAQ,MAAM,0CAA0C;AAC/D,SAASC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,QAAwB,aAAa;AACnE,OAAOC,OAAO,MAAM,sBAA4B;AAChD,SACEC,MAAM,EACNC,OAAO,EACPC,OAAO,QACF,2CAA2C;AAClD,OAAOC,UAAU,IAAIC,wBAAwB,QAAQ,sBAAsB;AAE3E,OAAOC,MAAM,MAAM,yBAAqB;AACxC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,SACEC,qBAAqB,EACrBC,aAAa,EACbC,aAAa,QACR,sBAAsB;AAE7B,MAAM;EAAEC;AAAO,CAAC,GAAGhB,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA,IAeMiB,aAAa,GAAAC,SAAA,EADlBN,aAAa,CAAE,GAAEI,MAAO,eAAc,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAxC,MACMH,aAAa,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAkZvC;EAAC;IAAAI,CAAA,EAlZKN,aAAa;IAAAO,CAAA;MAAAC,IAAA;MAAAC,UAAA,GAChBxB,QAAQ,CAAC;QAAEyB,IAAI,EAAEC;MAAQ,CAAC,CAAC;MAAAC,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAI,GAAA;MAAAC,MAAA;QAAA,OAME,CAAC;MAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAK9BvB,KAAK,CAAC,eAAe,CAAC;MAAA0B,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAMtBvB,KAAK,CAAC,mBAAmB,CAAC;MAAA0B,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAM1BvB,KAAK,CAAC,OAAO,CAAC;MAAA0B,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAMdvB,KAAK,CAAE,IAAGa,MAAO,mBAAkB,CAAC;MAAAa,GAAA;MAAAC,KAAA;IAAA;MAAAL,IAAA;MAAAI,GAAA;MAAAC,KAAA;MA1BrC;AACF;AACA;;MAGE;AACF;AACA;;MAIE;AACF;AACA;;MAIE;AACF;AACA;;MAIE;AACF;AACA;;MAIE,SAAAC,uBAAiCC,YAAgC,EAAE;QACjE;QACA,OAAOJ,OAAO,CAAC,IAAI,CAACE,KAAK,IAAIE,YAAY,CAAC;MAC5C;IAAC;MAAAP,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAED,SAAAG,oBAA8BD,YAAgC,EAAE;QAC9D,IAAIA,YAAY,EAAE;UAChBA,YAAY,CAACE,QAAQ,GAAG,CAACF,YAAY,CAACE,QAAQ;UAC9C,IAAI,CAACC,oBAAoB,GAAGH,YAAY,CAACE,QAAQ,GAC7C,IAAI,CAACE,yBAAyB,GAC9B,IAAI,CAACC,2BAA2B;QACtC,CAAC,MAAM;UACL/B,OAAO,CACL,IAAI,CAACgC,gBAAgB,CAClB,IAAI,CAACjB,WAAW,CAA0BkB,oBAC7C,CAAC,EACAC,IAAI,IAAK;YACPA,IAAI,CAAuBN,QAAQ,GAAG,KAAK;UAC9C,CACF,CAAC;UACD,IAAI,CAACO,0BAA0B,CAAC,KAAK,CAAC;UACtC,IAAI,CAACN,oBAAoB,GAAG,IAAI,CAACO,0BAA0B;QAC7D;QACA;QACA,IAAI,CAACZ,KAAK,GAAGzB,MAAM,CACjB,IAAI,CAACiC,gBAAgB,CAClB,IAAI,CAACjB,WAAW,CAA0BsB,YAC7C,CAAC,EACAH,IAAI,IAAMA,IAAI,CAAuBN,QACxC,CAAC,CACEU,GAAG,CAAEJ,IAAI,IAAMA,IAAI,CAAuBV,KAAK,CAAC,CAChDe,IAAI,CAAC,GAAG,CAAC;MACd;IAAC;MAAApB,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAED,SAAAgB,kBAA4BC,KAAiB,EAAE;QAAA,IAAAC,qBAAA,EAAAC,qBAAA;QAC7C,KAAAD,qBAAA,GAAI,IAAI,CAACE,oBAAoB,cAAAF,qBAAA,eAAzBA,qBAAA,CAA2BG,QAAQ,CAACJ,KAAK,CAACK,MAAc,CAAC,EAAE;UAC7D,IAAI,CAACC,8BAA8B,CAAC,CAAC;UACrC,IAAI,IAAI,CAACC,UAAU,EAAE;YACnB,IAAI,CAACC,gBAAgB,CAACC,KAAK,CAAC,CAAC;UAC/B,CAAC,MAAM;YACL,IAAI,CAACC,YAAY,CAACD,KAAK,CAAC,CAAC;UAC3B;QACF,CAAC,MAAM,KAAAP,qBAAA,GAAI,IAAI,CAACS,gBAAgB,cAAAT,qBAAA,eAArBA,qBAAA,CAAuBE,QAAQ,CAACJ,KAAK,CAACK,MAAc,CAAC,EAAE;UAChE,IAAI,CAACO,8BAA8B,CAAC,CAAC;QACvC,CAAC,MAAM;UACL,MAAMC,sBAAsB,GAAIC,IAAI,IAClCA,IAAI,CAACC,OAAO,IACZD,IAAI,CAACC,OAAO,CACT,IAAI,CAACzC,WAAW,CAA0B0C,wBAC7C,CAAC;UACH,IAAI,CAAChB,KAAK,CAACiB,YAAY,CAAC,CAAC,CAACC,IAAI,CAACL,sBAAsB,CAAC,EAAE;YACtDM,IAAA,CAAAC,eAAA,CApFFlD,aAAa,CAAAmD,SAAA,8BAAAC,IAAA,OAoFatB,KAAK;UAC/B;UACA,IAAI,IAAI,CAACO,UAAU,EAAE,IAAI,CAACC,gBAAgB,CAACC,KAAK,CAAC,CAAC;QACpD;MACF;;MAEA;AACF;AACA;IAFE;MAAA/B,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAGA,SAAAwC,qBAA+BvB,KAAoB,EAAE;QAAA,IAAAwB,sBAAA,EAAAC,sBAAA;QACnD,MAAM;UAAE3C;QAAI,CAAC,GAAGkB,KAAK;QACrB,MAAM0B,MAAM,GAAI,IAAI,CAACpD,WAAW,CAAuBqD,SAAS,CAAC7C,GAAG,CAAC;QACrE,MAAM;UAAE8C;QAAW,CAAC,GAAGlE,wBAAwB;QAE/C,IACE,CAAA8D,sBAAA,OAAI,CAACb,gBAAgB,cAAAa,sBAAA,eAArBA,sBAAA,CAAuBpB,QAAQ,CAACJ,KAAK,CAACK,MAAc,CAAC;QACrD;QACCqB,MAAM,KAAKE,UAAU,IAAI9C,GAAG,KAAK,GAAG,CAAC,EACtC;UACA,IAAI,CAAC8B,8BAA8B,CAAC,CAAC;QACvC,CAAC,MAAM,KAAAa,sBAAA,GAAI,IAAI,CAACtB,oBAAoB,cAAAsB,sBAAA,eAAzBA,sBAAA,CAA2BrB,QAAQ,CAACJ,KAAK,CAACK,MAAc,CAAC,EAAE;UACpE,IAAI,CAACC,8BAA8B,CAAC,CAAC;UACrC,IAAI,CAACuB,IAAI,GAAG,IAAI;UAChB,IAAI,IAAI,CAACtB,UAAU,EAAE;YACnB,IAAI,CAACC,gBAAgB,CAACC,KAAK,CAAC,CAAC;UAC/B,CAAC,MAAM;YACL,IAAI,CAACC,YAAY,CAACD,KAAK,CAAC,CAAC;UAC3B;QACF,CAAC,MAAM,IAAI,IAAI,CAACF,UAAU,EAAE;UAC1B,IAAI,CAACuB,6BAA6B,CAAC9B,KAAK,CAAC;QAC3C,CAAC,MAAM;UACLmB,IAAA,CAAAC,eAAA,CAnHAlD,aAAa,CAAAmD,SAAA,iCAAAC,IAAA,OAmHctB,KAAK;QAClC;MACF;;MAEA;AACF;AACA;AACA;IAHE;MAAAtB,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAKA,SAAA+C,8BAAwC9B,KAAoB,EAAE;QAC5D,MAAM;UAAElB;QAAI,CAAC,GAAGkB,KAAK;QACrB,MAAM0B,MAAM,GAAI,IAAI,CAACpD,WAAW,CAAuBqD,SAAS,CAAC7C,GAAG,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC+C,IAAI,EAAE;UACd,QAAQH,MAAM;YACZ,KAAKhE,wBAAwB,CAACkE,UAAU;cACtC,IAAI,CAAClC,0BAA0B,CAAC,IAAI,CAAC;cACrC;YACF;cACE;UACJ;QACF,CAAC,MAAM;UACL,QAAQZ,GAAG;YACT,KAAK,OAAO;cACV;gBACE,MAAMR,WAAW,GAAG,IAAI,CAACA,WAAgC;gBACzD,MAAMyD,eAAe,GAAG,IAAI,CAACC,aAAa,CACxC1D,WAAW,CAAC2D,uBACd,CAAsB;gBACtB,IAAIF,eAAe,EAAE;kBACnB,IAAI,CAACzB,8BAA8B,CAACyB,eAAe,CAAC;gBACtD,CAAC,MAAM;kBACL,IAAI,CAACrC,0BAA0B,CAAC,KAAK,CAAC;gBACxC;cACF;cACA;YACF;cACE;UACJ;QACF;MACF;IAAC;MAAAhB,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAED,SAAAmD,+BAAA,EAA2C;QACzC,MAAM;UAAEC,mBAAmB;UAAEC,mBAAmB,EAAEC;QAAmB,CAAC,GACpE,IAAI;QACN,OAAOA,kBAAkB,KAAK,CAAC,GAC3BC,SAAS,GACTpF,IAAI,CAAAqF,EAAA,KAAAA,EAAA,GAAAC,CAAC;AACb;AACA;AACA;AACA,qBAAmB,CAAS,yBAAsB,CAAS,gCAA6B,CAAS;AACjG;AACA,qBAAmB,CAAsB;AACzC,cAAY,CAAqB;AACjC,cAAY,CAAiD;AAC7D;AACA,SAAQ,GANavE,MAAM,EAAyBA,MAAM,EAAgCA,MAAM,EAE3EkE,mBAAmB,EAC1BE,kBAAkB,EAClBhF,OAAO,CAAC;UAAE,YAAY,EAAE8E;QAAoB,CAAC,CAAC,CAEnD;MACP;;MAEA;AACF;AACA;IAFE;MAAAzD,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAGA,SAAA0D,sBAAA,EAAkD;QAChD,MAAM;UAAEC,cAAc;UAAEC,oBAAoB,EAAEC;QAAoB,CAAC,GAAG,IAAI;QAC1E,OAAO,CAAC,IAAI,CAACrC,UAAU,GACnBrD,IAAI,CAAA2F,GAAA,KAAAA,GAAA,GAAAL,CAAC;AACb,4CAA0C,CAAS;AACnD,eAAa,CAAwC;AACrD;AACA,SAAQ,GAHoCvE,MAAM,EACnC2E,mBAAmB,IAAIF,cAAc,IAG5CxF,IAAI,CAAA4F,GAAA,KAAAA,GAAA,GAAAN,CAAC;AACb;AACA;AACA,qBAAmB,CAAS;AAC5B,2BAAyB,CAAiB;AAC1C;AACA;AACA;AACA,sBAAoB,CAAoB;AACxC,SAAQ,GANavE,MAAM,EACAyE,cAAc,EAInB,IAAI,CAACK,YAAY,CAC9B;MACP;IAAC;MAAArE,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAED,SAAAiE,+BAAA,EAAkE;QAChE,MAAM;UAAEb,mBAAmB;UAAE3B,gBAAgB,EAAEyC;QAAgB,CAAC,GAAG,IAAI;QACvE,OAAOA,eAAe,IACpBA,eAAe,CAAClE,KAAK,CAACmE,MAAM,GAAG,CAAC,IAChC,IAAI,CAAC3C,UAAU,GACbrD,IAAI,CAAAiG,GAAA,KAAAA,GAAA,GAAAX,CAAC;AACb;AACA;AACA;AACA,qBAAmB,CAAS;AAC5B;AACA,qBAAmB,CAAsB;AACzC,cAAY,CAAiD;AAC7D;AACA,SAAQ,GALavE,MAAM,EAENkE,mBAAmB,EAC1B9E,OAAO,CAAC;UAAE,YAAY,EAAE8E;QAAoB,CAAC,CAAC,IAGpDG,SAAS;MACf;;MAEA;AACF;AACA;IAFE;MAAA5D,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAGA,SAAAgE,aAAA,EAAyB;QACvB,MAAMK,KAAK,GAAG,IAAI,CAAC7D,gBAAgB,CAChC,IAAI,CAACjB,WAAW,CAA0BsB,YAC7C,CAAC;QACD,MAAMyD,UAAU,GAAG,IAAI,CAAC7C,gBAAgB,CAACzB,KAAK,CAACuE,iBAAiB,CAAC,CAAC;QAElE,IAAI,CAAC,IAAI,CAACzB,IAAI,EAAE,IAAI,CAACA,IAAI,GAAG,IAAI;QAEhCtE,OAAO,CAAC6F,KAAK,EAAG3D,IAAI,IAAK;UACvB,MAAM8D,SAAS,GAAI9D,IAAI,CAAiB+D,SAAS,CAACF,iBAAiB,CAAC,CAAC;UAErE,IAAI,CAACC,SAAS,CAACE,QAAQ,CAACJ,UAAU,CAAC,EAAE;YAClC5D,IAAI,CAAuBiE,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;YACvDjE,IAAI,CAAuBkE,eAAe,CAAC,aAAa,CAAC;UAC5D,CAAC,MAAM;YACJlE,IAAI,CAAuBkE,eAAe,CAAC,UAAU,CAAC;UACzD;QACF,CAAC,CAAC;QAEF,IAAI,CAACC,aAAa,CAAC,CAAC;MACtB;;MAEA;AACF;AACA;AACA;AACA;IAJE;MAAAlF,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAKA,SAAA8E,UAAoBC,SAAiB,EAAE;QACrC,IAAI,CAAC,IAAI,CAACvD,UAAU,EAAE;UACpB,IAAI,CAACG,YAAY,CAACD,KAAK,CAAC,CAAC;UACzBU,IAAA,CAAAC,eAAA,CAxPAlD,aAAa,CAAAmD,SAAA,sBAAAC,IAAA,OAwPGwC,SAAS;QAC3B,CAAC,MAAM;UACL;UACA,MAAMxF,WAAW,GAAG,IAAI,CAACA,WAAmC;UAC5D,MAAM8E,KAAK,GAAG,IAAI,CAAC7D,gBAAgB,CAACjB,WAAW,CAACyF,mBAAmB,CAAC;UACpE,MAAMhC,eAAe,GAAG,IAAI,CAACC,aAAa,CACxC1D,WAAW,CAAC2D,uBACd,CAAC;UACD,MAAM+B,gBAAgB,GAAGxG,OAAO,CAAC4F,KAAK,EAAErB,eAAgB,CAAC;UAEzD,IAAIkC,SAAS,GAAGD,gBAAgB,GAAGF,SAAS;UAC5C,IAAIG,SAAS,GAAG,CAAC,EAAE;YACjBA,SAAS,GAAGb,KAAK,CAACF,MAAM,GAAG,CAAC;UAC9B;UACA,IAAIe,SAAS,IAAIb,KAAK,CAACF,MAAM,EAAE;YAC7Be,SAAS,GAAG,CAAC;UACf;UACA1G,OAAO,CAAC6F,KAAK,EAAE,CAAC3D,IAAI,EAAEyE,CAAC,KAAK;YACzBzE,IAAI,CAAuB0E,WAAW,GAAGD,CAAC,KAAKD,SAAS;UAC3D,CAAC,CAAC;QACJ;MACF;;MAEA;AACF;AACA;IAFE;MAAAvF,IAAA;MAAAI,GAAA;MAAAC,KAAA,EAGA,SAAA6B,+BAAA,EAA2C;QACzC,MAAMtC,WAAW,GAAG,IAAI,CAACA,WAAmC;QAC5D,MAAM8E,KAAK,GAAG,IAAI,CAAC7D,gBAAgB,CAACjB,WAAW,CAAC8F,oBAAoB,CAAC;QACrE,IAAI,CAAC5D,gBAAgB,CAACzB,KAAK,GAAG,EAAE;QAChC,IAAI,CAAC8C,IAAI,GAAG,IAAI;QAChB,IAAI,CAACrB,gBAAgB,CAACC,KAAK,CAAC,CAAC;QAC7BlD,OAAO,CAAC6F,KAAK,EAAG3D,IAAI,IAAK;UACtBA,IAAI,CAAuBkE,eAAe,CAAC,UAAU,CAAC;QACzD,CAAC,CAAC;MACJ;;MAEA;AACF;AACA;IAFE;MAAAjF,IAAA;MAAAC,UAAA,GAGCxB,QAAQ,CAAC;QAAEkH,SAAS,EAAE;MAAwB,CAAC,CAAC;MAAAvF,GAAA;MAAAC,MAAA;QAAA,OAC3B,EAAE;MAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAKvBxB,QAAQ,CAAC;QAAEkH,SAAS,EAAE;MAAiC,CAAC,CAAC;MAAAvF,GAAA;MAAAC,MAAA;QAAA,OAC5B,qBAAqB;MAAA;IAAA;MAAAL,IAAA;MAAAC,UAAA,GAKlDxB,QAAQ,CAAC;QAAEkH,SAAS,EAAE;MAAgC,CAAC,CAAC;MAAAvF,GAAA;MAAAC,MAAA;QAAA,OAC5B,uBAAuB;MAAA;IAAA;MAAAL,IAAA;MAAAI,GAAA;MAAAC,KAAA;MAVpD;AACF;AACA;MAIE;AACF;AACA;MAIE,SAAAuF,aAAaC,iBAAiB,EAAE;QAC9B,MAAM;UAAE3E;QAAa,CAAC,GAAG,IAAI,CAACtB,WAAmC;QACjE,IAAIiG,iBAAiB,CAACC,GAAG,CAAC,MAAM,CAAC,EAAE;UACjCjH,OAAO,CAAC,IAAI,CAACgC,gBAAgB,CAACK,YAAY,CAAC,EAAGkB,IAAI,IAAK;YACpDA,IAAI,CAAuB2D,IAAI,GAAG,IAAI,CAACA,IAAI;UAC9C,CAAC,CAAC;QACJ;QACA,IAAIF,iBAAiB,CAACC,GAAG,CAAC,OAAO,CAAC,EAAE;UAClC,MAAM;YAAEzF;UAAM,CAAC,GAAG,IAAI;UACtB,MAAM2F,MAAM,GAAG,CAAC3F,KAAK,GAAG,EAAE,GAAGA,KAAK,CAAC4F,KAAK,CAAC,GAAG,CAAC;UAC7C;UACA,MAAMvB,KAAK,GAAG,IAAI,CAAC7D,gBAAgB,CAACK,YAAY,CAAC;UACjDrC,OAAO,CAAC6F,KAAK,EAAGtC,IAAI,IAAK;YACtBA,IAAI,CAAuB3B,QAAQ,GAClCuF,MAAM,CAAClH,OAAO,CAAEsD,IAAI,CAAuB/B,KAAK,CAAC,IAAI,CAAC;UAC1D,CAAC,CAAC;UACF,IAAI,CAACqD,mBAAmB,GAAG9E,MAAM,CAC/B8F,KAAK,EACJtC,IAAI,IAAK4D,MAAM,CAAClH,OAAO,CAAEsD,IAAI,CAAuB/B,KAAK,CAAC,IAAI,CACjE,CAAC,CAACmE,MAAM;QACV;QACA,OAAO,IAAI;MACb;;MAEA;AACF;AACA;AACA;IAHE;MAAAxE,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAIA,SAAAiC,yBAAA,EAA8C;QAC5C,OAAQ,IAAG/C,MAAO,kBAAiB;MACrC;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAGA,SAAAkD,wBAAA,EAAqC;QACnC,OAAQ,GAAEhE,MAAO,iCAAgC;MACnD;;MAEA;AACF;AACA;AACA;IAHE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAIA,SAAAa,aAAA,EAA0B;QACxB,OAAQ,GAAE3B,MAAO,oBAAmB;MACtC;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAGA,SAAAqF,qBAAA,EAAkC;QAChC,OAAQ,GAAEnG,MAAO,8BAA6B;MAChD;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAGA,SAAAgF,oBAAA,EAAiC;QAC/B,OAAQ,GAAE9F,MAAO,oCAAmC;MACtD;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAGA,SAAAS,qBAAA,EAAkC;QAChC,OAAQ,GAAEvB,MAAO,8BAA6B;MAChD;;MAEA;AACF;AACA;AACA;IAHE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAIA,SAAA8F,kBAAA,EAA+B;QAC7B,OAAQ,GAAE5G,MAAO,4BAA2B;MAC9C;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAGA,SAAA+F,YAAA,EAAyB;QACvB,OAAQ,GAAE7G,MAAO,uBAAsB;MACzC;;MAEA;AACF;AACA;AACA;IAHE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAIA,SAAAgG,kBAAA,EAA+B;QAC7B,OAAQ,GAAE9G,MAAO,6BAA4B;MAC/C;;MAEA;AACF;AACA;IAFE;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,KAAA,EAGA,SAAAiG,YAAA,EAAyB;QACvB,OAAQ,GAAE/G,MAAO,wBAAuB;MAC1C;IAAC;MAAAS,IAAA;MAAAkG,MAAA;MAAA9F,GAAA;MAAAC,MAAA;QAAA,OAEepB,MAAM;MAAA;IAAA;EAAA;AAAA,GAjZIF,UAAU;AAoZtC,eAAeS,aAAa"}
|
|
@@ -168,7 +168,16 @@ let BXInlineNotification = _decorate([customElement(`${prefix}-inline-notificati
|
|
|
168
168
|
_type: type,
|
|
169
169
|
_handleClickCloseButton: handleClickCloseButton
|
|
170
170
|
} = this;
|
|
171
|
-
return html(_t || (_t = _`
|
|
171
|
+
return html(_t || (_t = _`
|
|
172
|
+
<button
|
|
173
|
+
type="button"
|
|
174
|
+
class="${0}--${0}-notification__close-button"
|
|
175
|
+
aria-label=${0}
|
|
176
|
+
title=${0}
|
|
177
|
+
@click="${0}">
|
|
178
|
+
${0}
|
|
179
|
+
</button>
|
|
180
|
+
`), prefix, type, ifDefined(closeButtonLabel), ifDefined(closeButtonLabel), handleClickCloseButton, Close20({
|
|
172
181
|
class: `${prefix}--${type}-notification__close-icon`
|
|
173
182
|
}));
|
|
174
183
|
}
|
|
@@ -185,7 +194,17 @@ let BXInlineNotification = _decorate([customElement(`${prefix}-inline-notificati
|
|
|
185
194
|
title,
|
|
186
195
|
_type: type
|
|
187
196
|
} = this;
|
|
188
|
-
return html(_t2 || (_t2 = _`
|
|
197
|
+
return html(_t2 || (_t2 = _`
|
|
198
|
+
<div class="${0}--${0}-notification__text-wrapper">
|
|
199
|
+
<p class="${0}--${0}-notification__title">
|
|
200
|
+
${0}<slot name="title"></slot>
|
|
201
|
+
</p>
|
|
202
|
+
<div class="${0}--${0}-notification__subtitle">
|
|
203
|
+
${0}<slot name="subtitle"></slot>
|
|
204
|
+
</div>
|
|
205
|
+
<slot></slot>
|
|
206
|
+
</div>
|
|
207
|
+
`), prefix, type, prefix, type, title, prefix, type, subtitle);
|
|
189
208
|
}
|
|
190
209
|
|
|
191
210
|
/**
|
|
@@ -346,7 +365,12 @@ let BXInlineNotification = _decorate([customElement(`${prefix}-inline-notificati
|
|
|
346
365
|
const {
|
|
347
366
|
_type: type
|
|
348
367
|
} = this;
|
|
349
|
-
return html(_t4 || (_t4 = _`
|
|
368
|
+
return html(_t4 || (_t4 = _`
|
|
369
|
+
<div class="${0}--${0}-notification__details">
|
|
370
|
+
${0}${0}
|
|
371
|
+
</div>
|
|
372
|
+
${0}
|
|
373
|
+
`), prefix, type, this._renderIcon(), this._renderText(), this._renderButton());
|
|
350
374
|
}
|
|
351
375
|
|
|
352
376
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-notification.js","names":["CheckmarkFilled20","Close20","ErrorFilled20","WarningFilled20","settings","html","LitElement","property","svg","ifDefined","carbonElement","customElement","FocusMixin","NOTIFICATION_KIND","NOTIFICATION_TYPE","styles","prefix","iconsForKinds","SUCCESS","INFO","undefined","WARNING","ERROR","BXInlineNotification","_decorate","_initialize","_FocusMixin","constructor","args","F","d","kind","key","value","INLINE","_cancelTimeout","timeoutID","clearTimeout","_timeoutID","_initializeTimeout","timeout","setTimeout","_handleUserOrTimerInitiatedClose","bind","_handleClickCloseButton","target","triggeredBy","open","init","bubbles","cancelable","composed","detail","dispatchEvent","CustomEvent","eventBeforeClose","eventClose","_renderButton","closeButtonLabel","_type","type","handleClickCloseButton","_t","_","class","_renderText","subtitle","title","_t2","_renderIcon","iconLabel","icon","children","_t3","decorators","attribute","Boolean","reflect","Number","connectedCallback","hasAttribute","setAttribute","_get","_getPrototypeOf","prototype","call","updated","changedProperties","openChanged","has","timeoutChanged","render","_t4","static"],"sources":["components/notification/inline-notification.ts"],"sourcesContent":["/**\n * @license\n *\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 CheckmarkFilled20 from '@carbon/icons/lib/checkmark--filled/20';\nimport Close20 from '@carbon/icons/lib/close/20';\nimport ErrorFilled20 from '@carbon/icons/lib/error--filled/20';\nimport WarningFilled20 from '@carbon/icons/lib/warning--filled/20';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport { html, LitElement, property, svg } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport FocusMixin from '../../globals/mixins/focus';\nimport { NOTIFICATION_KIND, NOTIFICATION_TYPE } from './defs';\nimport styles from './inline-notification.scss';\n\nexport { NOTIFICATION_KIND, NOTIFICATION_TYPE };\n\nconst { prefix } = settings;\n\n/**\n * The default icons, keyed by notification kind.\n */\nconst iconsForKinds = {\n [NOTIFICATION_KIND.SUCCESS]: CheckmarkFilled20,\n [NOTIFICATION_KIND.INFO]: undefined,\n [NOTIFICATION_KIND.WARNING]: WarningFilled20,\n [NOTIFICATION_KIND.ERROR]: ErrorFilled20,\n};\n\n/**\n * Inline notification.\n *\n * @element bx-inline-notification\n * @slot subtitle - The subtitle.\n * @slot title - The title.\n * @fires bx-notification-beingclosed\n * The custom event fired before this notification is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this notification.\n * @fires bx-notification-closed - The custom event fired after this notification is closed upon a user gesture.\n */\n@customElement(`${prefix}-inline-notification`)\nclass BXInlineNotification extends FocusMixin(LitElement) {\n /**\n * Current timeout identifier\n */\n protected _timeoutID: number | null = null;\n\n /**\n * Notification type.\n */\n protected _type = NOTIFICATION_TYPE.INLINE;\n\n /**\n * Cancels the current timeout configured for the notification\n *\n * @param timeoutID current timeout's identifier\n */\n protected _cancelTimeout(timeoutID: number) {\n clearTimeout(timeoutID);\n this._timeoutID = null;\n }\n\n /**\n * Overrides (if exists) the timeout to close the notification\n *\n * @param timeout the time in ms\n */\n protected _initializeTimeout(timeout: number) {\n if (this._timeoutID) {\n this._cancelTimeout(this._timeoutID);\n }\n this._timeoutID = setTimeout(\n this._handleUserOrTimerInitiatedClose.bind(this, null),\n timeout\n ) as unknown as number;\n }\n\n /**\n * Handles `click` event on the close button.\n *\n * @param event The event.\n */\n protected _handleClickCloseButton({ target }: MouseEvent) {\n this._handleUserOrTimerInitiatedClose(target);\n }\n\n /**\n * Handles user-initiated or through timer close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request, if there is one.\n */\n protected _handleUserOrTimerInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXInlineNotification).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXInlineNotification).eventClose,\n init\n )\n );\n }\n }\n }\n\n /**\n * @returns The template part for the close button.\n */\n protected _renderButton() {\n const {\n closeButtonLabel,\n _type: type,\n _handleClickCloseButton: handleClickCloseButton,\n } = this;\n return html`\n <button\n type=\"button\"\n class=\"${prefix}--${type}-notification__close-button\"\n aria-label=${ifDefined(closeButtonLabel)}\n title=${ifDefined(closeButtonLabel)}\n @click=\"${handleClickCloseButton}\">\n ${Close20({\n class: `${prefix}--${type}-notification__close-icon`,\n })}\n </button>\n `;\n }\n\n /**\n * @returns The template part for the text contents.\n */\n protected _renderText() {\n const { subtitle, title, _type: type } = this;\n return html`\n <div class=\"${prefix}--${type}-notification__text-wrapper\">\n <p class=\"${prefix}--${type}-notification__title\">\n ${title}<slot name=\"title\"></slot>\n </p>\n <div class=\"${prefix}--${type}-notification__subtitle\">\n ${subtitle}<slot name=\"subtitle\"></slot>\n </div>\n <slot></slot>\n </div>\n `;\n }\n\n /**\n * @returns The template part for the icon.\n */\n protected _renderIcon() {\n const { iconLabel, kind, _type: type } = this;\n const { [kind]: icon } = iconsForKinds;\n return !icon\n ? undefined\n : icon({\n class: `${prefix}--${type}-notification__icon`,\n children: !iconLabel ? undefined : svg`<title>${iconLabel}</title>`,\n });\n }\n\n /**\n * The a11y text for the close button.\n */\n @property({ attribute: 'close-button-label' })\n closeButtonLabel!: string;\n\n /**\n * `true` to hide the close button.\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-close-button' })\n hideCloseButton = false;\n\n /**\n * The a11y text for the icon.\n */\n @property({ attribute: 'icon-label' })\n iconLabel!: string;\n\n /**\n * Notification kind.\n */\n @property({ reflect: true })\n kind = NOTIFICATION_KIND.SUCCESS;\n\n /**\n * Low contrast mode\n */\n @property({ type: Boolean, reflect: true, attribute: 'low-contrast' })\n lowContrast = false;\n\n /**\n * `true` if the notification should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = true;\n\n /**\n * Notification time in ms until gets closed.\n */\n @property({ type: Number, reflect: true })\n timeout: number | null = null;\n\n /**\n * The subtitle.\n */\n @property()\n subtitle = '';\n\n /**\n * The title.\n */\n @property()\n title = '';\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'alert');\n }\n super.connectedCallback();\n }\n\n updated(changedProperties) {\n const openChanged = changedProperties.has('open');\n const timeoutChanged = changedProperties.has('timeout');\n\n if (openChanged || timeoutChanged) {\n if (this.open && this.timeout) {\n this._initializeTimeout(this.timeout);\n } else if (!this.open && this._timeoutID) {\n this._cancelTimeout(this._timeoutID);\n }\n }\n }\n\n render() {\n const { _type: type } = this;\n return html`\n <div class=\"${prefix}--${type}-notification__details\">\n ${this._renderIcon()}${this._renderText()}\n </div>\n ${this._renderButton()}\n `;\n }\n\n /**\n * The name of the custom event fired before this notification is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this notification.\n */\n static get eventBeforeClose() {\n return `${prefix}-notification-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this notification is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-notification-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXInlineNotification;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inline-notification.js","names":["CheckmarkFilled20","Close20","ErrorFilled20","WarningFilled20","settings","html","LitElement","property","svg","ifDefined","carbonElement","customElement","FocusMixin","NOTIFICATION_KIND","NOTIFICATION_TYPE","styles","prefix","iconsForKinds","SUCCESS","INFO","undefined","WARNING","ERROR","BXInlineNotification","_decorate","_initialize","_FocusMixin","constructor","args","F","d","kind","key","value","INLINE","_cancelTimeout","timeoutID","clearTimeout","_timeoutID","_initializeTimeout","timeout","setTimeout","_handleUserOrTimerInitiatedClose","bind","_handleClickCloseButton","target","triggeredBy","open","init","bubbles","cancelable","composed","detail","dispatchEvent","CustomEvent","eventBeforeClose","eventClose","_renderButton","closeButtonLabel","_type","type","handleClickCloseButton","_t","_","class","_renderText","subtitle","title","_t2","_renderIcon","iconLabel","icon","children","_t3","decorators","attribute","Boolean","reflect","Number","connectedCallback","hasAttribute","setAttribute","_get","_getPrototypeOf","prototype","call","updated","changedProperties","openChanged","has","timeoutChanged","render","_t4","static"],"sources":["components/notification/inline-notification.ts"],"sourcesContent":["/**\n * @license\n *\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 CheckmarkFilled20 from '@carbon/icons/lib/checkmark--filled/20';\nimport Close20 from '@carbon/icons/lib/close/20';\nimport ErrorFilled20 from '@carbon/icons/lib/error--filled/20';\nimport WarningFilled20 from '@carbon/icons/lib/warning--filled/20';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport { html, LitElement, property, svg } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport FocusMixin from '../../globals/mixins/focus';\nimport { NOTIFICATION_KIND, NOTIFICATION_TYPE } from './defs';\nimport styles from './inline-notification.scss';\n\nexport { NOTIFICATION_KIND, NOTIFICATION_TYPE };\n\nconst { prefix } = settings;\n\n/**\n * The default icons, keyed by notification kind.\n */\nconst iconsForKinds = {\n [NOTIFICATION_KIND.SUCCESS]: CheckmarkFilled20,\n [NOTIFICATION_KIND.INFO]: undefined,\n [NOTIFICATION_KIND.WARNING]: WarningFilled20,\n [NOTIFICATION_KIND.ERROR]: ErrorFilled20,\n};\n\n/**\n * Inline notification.\n *\n * @element bx-inline-notification\n * @slot subtitle - The subtitle.\n * @slot title - The title.\n * @fires bx-notification-beingclosed\n * The custom event fired before this notification is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this notification.\n * @fires bx-notification-closed - The custom event fired after this notification is closed upon a user gesture.\n */\n@customElement(`${prefix}-inline-notification`)\nclass BXInlineNotification extends FocusMixin(LitElement) {\n /**\n * Current timeout identifier\n */\n protected _timeoutID: number | null = null;\n\n /**\n * Notification type.\n */\n protected _type = NOTIFICATION_TYPE.INLINE;\n\n /**\n * Cancels the current timeout configured for the notification\n *\n * @param timeoutID current timeout's identifier\n */\n protected _cancelTimeout(timeoutID: number) {\n clearTimeout(timeoutID);\n this._timeoutID = null;\n }\n\n /**\n * Overrides (if exists) the timeout to close the notification\n *\n * @param timeout the time in ms\n */\n protected _initializeTimeout(timeout: number) {\n if (this._timeoutID) {\n this._cancelTimeout(this._timeoutID);\n }\n this._timeoutID = setTimeout(\n this._handleUserOrTimerInitiatedClose.bind(this, null),\n timeout\n ) as unknown as number;\n }\n\n /**\n * Handles `click` event on the close button.\n *\n * @param event The event.\n */\n protected _handleClickCloseButton({ target }: MouseEvent) {\n this._handleUserOrTimerInitiatedClose(target);\n }\n\n /**\n * Handles user-initiated or through timer close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request, if there is one.\n */\n protected _handleUserOrTimerInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXInlineNotification).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof BXInlineNotification).eventClose,\n init\n )\n );\n }\n }\n }\n\n /**\n * @returns The template part for the close button.\n */\n protected _renderButton() {\n const {\n closeButtonLabel,\n _type: type,\n _handleClickCloseButton: handleClickCloseButton,\n } = this;\n return html`\n <button\n type=\"button\"\n class=\"${prefix}--${type}-notification__close-button\"\n aria-label=${ifDefined(closeButtonLabel)}\n title=${ifDefined(closeButtonLabel)}\n @click=\"${handleClickCloseButton}\">\n ${Close20({\n class: `${prefix}--${type}-notification__close-icon`,\n })}\n </button>\n `;\n }\n\n /**\n * @returns The template part for the text contents.\n */\n protected _renderText() {\n const { subtitle, title, _type: type } = this;\n return html`\n <div class=\"${prefix}--${type}-notification__text-wrapper\">\n <p class=\"${prefix}--${type}-notification__title\">\n ${title}<slot name=\"title\"></slot>\n </p>\n <div class=\"${prefix}--${type}-notification__subtitle\">\n ${subtitle}<slot name=\"subtitle\"></slot>\n </div>\n <slot></slot>\n </div>\n `;\n }\n\n /**\n * @returns The template part for the icon.\n */\n protected _renderIcon() {\n const { iconLabel, kind, _type: type } = this;\n const { [kind]: icon } = iconsForKinds;\n return !icon\n ? undefined\n : icon({\n class: `${prefix}--${type}-notification__icon`,\n children: !iconLabel ? undefined : svg`<title>${iconLabel}</title>`,\n });\n }\n\n /**\n * The a11y text for the close button.\n */\n @property({ attribute: 'close-button-label' })\n closeButtonLabel!: string;\n\n /**\n * `true` to hide the close button.\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-close-button' })\n hideCloseButton = false;\n\n /**\n * The a11y text for the icon.\n */\n @property({ attribute: 'icon-label' })\n iconLabel!: string;\n\n /**\n * Notification kind.\n */\n @property({ reflect: true })\n kind = NOTIFICATION_KIND.SUCCESS;\n\n /**\n * Low contrast mode\n */\n @property({ type: Boolean, reflect: true, attribute: 'low-contrast' })\n lowContrast = false;\n\n /**\n * `true` if the notification should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = true;\n\n /**\n * Notification time in ms until gets closed.\n */\n @property({ type: Number, reflect: true })\n timeout: number | null = null;\n\n /**\n * The subtitle.\n */\n @property()\n subtitle = '';\n\n /**\n * The title.\n */\n @property()\n title = '';\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'alert');\n }\n super.connectedCallback();\n }\n\n updated(changedProperties) {\n const openChanged = changedProperties.has('open');\n const timeoutChanged = changedProperties.has('timeout');\n\n if (openChanged || timeoutChanged) {\n if (this.open && this.timeout) {\n this._initializeTimeout(this.timeout);\n } else if (!this.open && this._timeoutID) {\n this._cancelTimeout(this._timeoutID);\n }\n }\n }\n\n render() {\n const { _type: type } = this;\n return html`\n <div class=\"${prefix}--${type}-notification__details\">\n ${this._renderIcon()}${this._renderText()}\n </div>\n ${this._renderButton()}\n `;\n }\n\n /**\n * The name of the custom event fired before this notification is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this notification.\n */\n static get eventBeforeClose() {\n return `${prefix}-notification-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this notification is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-notification-closed`;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXInlineNotification;\n"],"mappings":"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"}
|
|
@@ -57,7 +57,20 @@ let BXToastNotification = _decorate([customElement(`${prefix}-toast-notification
|
|
|
57
57
|
title,
|
|
58
58
|
_type: type
|
|
59
59
|
} = this;
|
|
60
|
-
return html(_t || (_t = _`
|
|
60
|
+
return html(_t || (_t = _`
|
|
61
|
+
<div class="${0}--${0}-notification__details">
|
|
62
|
+
<h3 class="${0}--${0}-notification__title">
|
|
63
|
+
${0}<slot name="title"></slot>
|
|
64
|
+
</h3>
|
|
65
|
+
<div class="${0}--${0}-notification__subtitle">
|
|
66
|
+
${0}<slot name="subtitle"></slot>
|
|
67
|
+
</div>
|
|
68
|
+
<div class="${0}--${0}-notification__caption">
|
|
69
|
+
${0}<slot name="caption"></slot>
|
|
70
|
+
</div>
|
|
71
|
+
<slot></slot>
|
|
72
|
+
</div>
|
|
73
|
+
`), prefix, type, prefix, type, title, prefix, type, subtitle, prefix, type, caption);
|
|
61
74
|
}
|
|
62
75
|
|
|
63
76
|
/**
|
|
@@ -77,7 +90,13 @@ let BXToastNotification = _decorate([customElement(`${prefix}-toast-notification
|
|
|
77
90
|
const {
|
|
78
91
|
_type: type
|
|
79
92
|
} = this;
|
|
80
|
-
return html(_t2 || (_t2 = _`
|
|
93
|
+
return html(_t2 || (_t2 = _`
|
|
94
|
+
${0}
|
|
95
|
+
<div class="${0}--${0}-notification__details">
|
|
96
|
+
${0}
|
|
97
|
+
</div>
|
|
98
|
+
${0}
|
|
99
|
+
`), this._renderIcon(), prefix, type, this._renderText(), this._renderButton());
|
|
81
100
|
}
|
|
82
101
|
}, {
|
|
83
102
|
kind: "field",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast-notification.js","names":["settings","html","property","carbonElement","customElement","NOTIFICATION_TYPE","BXInlineNotification","styles","prefix","BXToastNotification","_decorate","_initialize","_BXInlineNotification","constructor","args","F","d","kind","key","value","TOAST","_renderText","caption","subtitle","title","_type","type","_t","_","decorators","render","_t2","_renderIcon","_renderButton","static"],"sources":["components/notification/toast-notification.ts"],"sourcesContent":["/**\n * @license\n *\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 settings from 'carbon-components/es/globals/js/settings';\nimport { html, property } from 'lit-element';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { NOTIFICATION_TYPE } from './defs';\nimport BXInlineNotification from './inline-notification';\nimport styles from './toast-notification.scss';\n\nconst { prefix } = settings;\n\n/**\n * Toast notification.\n *\n * @element bx-toast-notification\n * @slot subtitle - The subtitle.\n * @slot title - The title.\n * @fires bx-notification-beingclosed\n * The custom event fired before this notification is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this notification.\n * @fires bx-notification-closed - The custom event fired after this notification is closed upon a user gesture.\n */\n@customElement(`${prefix}-toast-notification`)\nclass BXToastNotification extends BXInlineNotification {\n protected _type = NOTIFICATION_TYPE.TOAST;\n\n protected _renderText() {\n const { caption, subtitle, title, _type: type } = this;\n return html`\n <div class=\"${prefix}--${type}-notification__details\">\n <h3 class=\"${prefix}--${type}-notification__title\">\n ${title}<slot name=\"title\"></slot>\n </h3>\n <div class=\"${prefix}--${type}-notification__subtitle\">\n ${subtitle}<slot name=\"subtitle\"></slot>\n </div>\n <div class=\"${prefix}--${type}-notification__caption\">\n ${caption}<slot name=\"caption\"></slot>\n </div>\n <slot></slot>\n </div>\n `;\n }\n\n /**\n * The caption.\n */\n @property()\n caption = '';\n\n render() {\n const { _type: type } = this;\n return html`\n ${this._renderIcon()}\n <div class=\"${prefix}--${type}-notification__details\">\n ${this._renderText()}\n </div>\n ${this._renderButton()}\n `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXToastNotification;\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,QAAQ,MAAM,0CAA0C;AAC/D,SAASC,IAAI,EAAEC,QAAQ,QAAQ,aAAa;AAC5C,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AACxF,SAASC,iBAAiB,QAAQ,QAAQ;AAC1C,OAAOC,oBAAoB,MAAM,uBAAuB;AACxD,OAAOC,MAAM,MAAM,+BAA2B;AAE9C,MAAM;EAAEC;AAAO,CAAC,GAAGR,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,IAYMS,mBAAmB,GAAAC,SAAA,EADxBN,aAAa,CAAE,GAAEI,MAAO,qBAAoB,CAAC,aAAAG,WAAA,EAAAC,qBAAA;EAA9C,MACMH,mBAAmB,SAAAG,qBAAA,CAA8B;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAuCvD;EAAC;IAAAI,CAAA,EAvCKN,mBAAmB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,MAAA;QAAA,OACLd,iBAAiB,CAACe,KAAK;MAAA;IAAA;MAAAH,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAEzC,SAAAE,YAAA,EAAwB;QACtB,MAAM;UAAEC,OAAO;UAAEC,QAAQ;UAAEC,KAAK;UAAEC,KAAK,EAAEC;QAAK,CAAC,GAAG,IAAI;QACtD,OAAOzB,IAAI,CAAA0B,EAAA,KAAAA,EAAA,GAAAC,
|
|
1
|
+
{"version":3,"file":"toast-notification.js","names":["settings","html","property","carbonElement","customElement","NOTIFICATION_TYPE","BXInlineNotification","styles","prefix","BXToastNotification","_decorate","_initialize","_BXInlineNotification","constructor","args","F","d","kind","key","value","TOAST","_renderText","caption","subtitle","title","_type","type","_t","_","decorators","render","_t2","_renderIcon","_renderButton","static"],"sources":["components/notification/toast-notification.ts"],"sourcesContent":["/**\n * @license\n *\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 settings from 'carbon-components/es/globals/js/settings';\nimport { html, property } from 'lit-element';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { NOTIFICATION_TYPE } from './defs';\nimport BXInlineNotification from './inline-notification';\nimport styles from './toast-notification.scss';\n\nconst { prefix } = settings;\n\n/**\n * Toast notification.\n *\n * @element bx-toast-notification\n * @slot subtitle - The subtitle.\n * @slot title - The title.\n * @fires bx-notification-beingclosed\n * The custom event fired before this notification is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this notification.\n * @fires bx-notification-closed - The custom event fired after this notification is closed upon a user gesture.\n */\n@customElement(`${prefix}-toast-notification`)\nclass BXToastNotification extends BXInlineNotification {\n protected _type = NOTIFICATION_TYPE.TOAST;\n\n protected _renderText() {\n const { caption, subtitle, title, _type: type } = this;\n return html`\n <div class=\"${prefix}--${type}-notification__details\">\n <h3 class=\"${prefix}--${type}-notification__title\">\n ${title}<slot name=\"title\"></slot>\n </h3>\n <div class=\"${prefix}--${type}-notification__subtitle\">\n ${subtitle}<slot name=\"subtitle\"></slot>\n </div>\n <div class=\"${prefix}--${type}-notification__caption\">\n ${caption}<slot name=\"caption\"></slot>\n </div>\n <slot></slot>\n </div>\n `;\n }\n\n /**\n * The caption.\n */\n @property()\n caption = '';\n\n render() {\n const { _type: type } = this;\n return html`\n ${this._renderIcon()}\n <div class=\"${prefix}--${type}-notification__details\">\n ${this._renderText()}\n </div>\n ${this._renderButton()}\n `;\n }\n\n static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader\n}\n\nexport default BXToastNotification;\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,QAAQ,MAAM,0CAA0C;AAC/D,SAASC,IAAI,EAAEC,QAAQ,QAAQ,aAAa;AAC5C,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AACxF,SAASC,iBAAiB,QAAQ,QAAQ;AAC1C,OAAOC,oBAAoB,MAAM,uBAAuB;AACxD,OAAOC,MAAM,MAAM,+BAA2B;AAE9C,MAAM;EAAEC;AAAO,CAAC,GAAGR,QAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,IAYMS,mBAAmB,GAAAC,SAAA,EADxBN,aAAa,CAAE,GAAEI,MAAO,qBAAoB,CAAC,aAAAG,WAAA,EAAAC,qBAAA;EAA9C,MACMH,mBAAmB,SAAAG,qBAAA,CAA8B;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAuCvD;EAAC;IAAAI,CAAA,EAvCKN,mBAAmB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,GAAA;MAAAC,MAAA;QAAA,OACLd,iBAAiB,CAACe,KAAK;MAAA;IAAA;MAAAH,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAEzC,SAAAE,YAAA,EAAwB;QACtB,MAAM;UAAEC,OAAO;UAAEC,QAAQ;UAAEC,KAAK;UAAEC,KAAK,EAAEC;QAAK,CAAC,GAAG,IAAI;QACtD,OAAOzB,IAAI,CAAA0B,EAAA,KAAAA,EAAA,GAAAC,CAAC;AAChB,oBAAkB,CAAS,KAAE,CAAO;AACpC,qBAAmB,CAAS,KAAE,CAAO;AACrC,YAAU,CAAQ;AAClB;AACA,sBAAoB,CAAS,KAAE,CAAO;AACtC,YAAU,CAAW;AACrB;AACA,sBAAoB,CAAS,KAAE,CAAO;AACtC,YAAU,CAAU;AACpB;AACA;AACA;AACA,KAAI,GAZgBpB,MAAM,EAAKkB,IAAI,EACdlB,MAAM,EAAKkB,IAAI,EACxBF,KAAK,EAEKhB,MAAM,EAAKkB,IAAI,EACzBH,QAAQ,EAEEf,MAAM,EAAKkB,IAAI,EACzBJ,OAAO;MAKjB;;MAEA;AACF;AACA;IAFE;MAAAL,IAAA;MAAAY,UAAA,GAGC3B,QAAQ,CAAC,CAAC;MAAAgB,GAAA;MAAAC,MAAA;QAAA,OACD,EAAE;MAAA;IAAA;MAAAF,IAAA;MAAAC,GAAA;MAAAC,KAAA,EAEZ,SAAAW,OAAA,EAAS;QACP,MAAM;UAAEL,KAAK,EAAEC;QAAK,CAAC,GAAG,IAAI;QAC5B,OAAOzB,IAAI,CAAA8B,GAAA,KAAAA,GAAA,GAAAH,CAAC;AAChB,QAAM,CAAqB;AAC3B,oBAAkB,CAAS,KAAE,CAAO;AACpC,UAAQ,CAAqB;AAC7B;AACA,QAAM,CAAuB;AAC7B,KAAI,GALI,IAAI,CAACI,WAAW,CAAC,CAAC,EACNxB,MAAM,EAAKkB,IAAI,EACzB,IAAI,CAACL,WAAW,CAAC,CAAC,EAEpB,IAAI,CAACY,aAAa,CAAC,CAAC;MAE1B;IAAC;MAAAhB,IAAA;MAAAiB,MAAA;MAAAhB,GAAA;MAAAC,MAAA;QAAA,OAEeZ,MAAM;MAAA;IAAA;EAAA;AAAA,GAtCUD,oBAAoB;AAyCtD,eAAeG,mBAAmB"}
|
|
@@ -54,7 +54,10 @@ let BXNumberInputSkeleton = _decorate([customElement(`${prefix}-number-input-ske
|
|
|
54
54
|
const {
|
|
55
55
|
hideLabel
|
|
56
56
|
} = this;
|
|
57
|
-
return html(_t || (_t = _`
|
|
57
|
+
return html(_t || (_t = _`
|
|
58
|
+
${0}
|
|
59
|
+
<div class="${0}--number ${0}--skeleton"></div>
|
|
60
|
+
`), !hideLabel && html(_t2 || (_t2 = _` <span class="${0}--label ${0}--skeleton"></span> `), prefix, prefix), prefix, prefix);
|
|
58
61
|
}
|
|
59
62
|
}, {
|
|
60
63
|
kind: "field",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-input-skeleton.js","names":["html","property","LitElement","settings","styles","carbonElement","customElement","prefix","BXNumberInputSkeleton","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","decorators","type","Boolean","reflect","attribute","key","value","render","hideLabel","_t","_","_t2","static"],"sources":["components/number-input/number-input-skeleton.ts"],"sourcesContent":["/**\n * @license\n *\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 { html, property, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './number-input.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Skeleton of number input.\n */\n@customElement(`${prefix}-number-input-skeleton`)\nclass BXNumberInputSkeleton extends LitElement {\n /**\n * `true` if the label should be hidden. Corresponds to the attribute with the same name.\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-label' })\n hideLabel = false;\n\n render() {\n const { hideLabel } = this;\n return html`\n ${!hideLabel &&\n html` <span class=\"${prefix}--label ${prefix}--skeleton\"></span> `}\n <div class=\"${prefix}--number ${prefix}--skeleton\"></div>\n `;\n }\n\n static styles = styles;\n}\n\nexport default BXNumberInputSkeleton;\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,aAAa;AACxD,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,yBAAqB;AACxC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGJ,QAAQ;;AAE3B;AACA;AACA;AAFA,IAIMK,qBAAqB,GAAAC,SAAA,EAD1BH,aAAa,CAAE,GAAEC,MAAO,wBAAuB,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAjD,MACMH,qBAAqB,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAiB/C;EAAC;IAAAI,CAAA,EAjBKN,qBAAqB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,UAAA,GAIxBhB,QAAQ,CAAC;QAAEiB,IAAI,EAAEC,OAAO;QAAEC,OAAO,EAAE,IAAI;QAAEC,SAAS,EAAE;MAAa,CAAC,CAAC;MAAAC,GAAA;MAAAC,MAAA;QAAA,OACxD,KAAK;MAAA;IAAA;MAAAP,IAAA;MAAAM,GAAA;MAAAC,KAAA;MAJjB;AACF;AACA;;MAIE,SAAAC,OAAA,EAAS;QACP,MAAM;UAAEC;QAAU,CAAC,GAAG,IAAI;QAC1B,OAAOzB,IAAI,CAAA0B,EAAA,KAAAA,EAAA,GAAAC,
|
|
1
|
+
{"version":3,"file":"number-input-skeleton.js","names":["html","property","LitElement","settings","styles","carbonElement","customElement","prefix","BXNumberInputSkeleton","_decorate","_initialize","_LitElement","constructor","args","F","d","kind","decorators","type","Boolean","reflect","attribute","key","value","render","hideLabel","_t","_","_t2","static"],"sources":["components/number-input/number-input-skeleton.ts"],"sourcesContent":["/**\n * @license\n *\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 { html, property, LitElement } from 'lit-element';\nimport settings from 'carbon-components/es/globals/js/settings';\nimport styles from './number-input.scss';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nconst { prefix } = settings;\n\n/**\n * Skeleton of number input.\n */\n@customElement(`${prefix}-number-input-skeleton`)\nclass BXNumberInputSkeleton extends LitElement {\n /**\n * `true` if the label should be hidden. Corresponds to the attribute with the same name.\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-label' })\n hideLabel = false;\n\n render() {\n const { hideLabel } = this;\n return html`\n ${!hideLabel &&\n html` <span class=\"${prefix}--label ${prefix}--skeleton\"></span> `}\n <div class=\"${prefix}--number ${prefix}--skeleton\"></div>\n `;\n }\n\n static styles = styles;\n}\n\nexport default BXNumberInputSkeleton;\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,aAAa;AACxD,OAAOC,QAAQ,MAAM,0CAA0C;AAC/D,OAAOC,MAAM,MAAM,yBAAqB;AACxC,SAASC,aAAa,IAAIC,aAAa,QAAQ,yCAAyC;AAExF,MAAM;EAAEC;AAAO,CAAC,GAAGJ,QAAQ;;AAE3B;AACA;AACA;AAFA,IAIMK,qBAAqB,GAAAC,SAAA,EAD1BH,aAAa,CAAE,GAAEC,MAAO,wBAAuB,CAAC,aAAAG,WAAA,EAAAC,WAAA;EAAjD,MACMH,qBAAqB,SAAAG,WAAA,CAAoB;IAAAC,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAH,WAAA;IAAA;EAiB/C;EAAC;IAAAI,CAAA,EAjBKN,qBAAqB;IAAAO,CAAA;MAAAC,IAAA;MAAAC,UAAA,GAIxBhB,QAAQ,CAAC;QAAEiB,IAAI,EAAEC,OAAO;QAAEC,OAAO,EAAE,IAAI;QAAEC,SAAS,EAAE;MAAa,CAAC,CAAC;MAAAC,GAAA;MAAAC,MAAA;QAAA,OACxD,KAAK;MAAA;IAAA;MAAAP,IAAA;MAAAM,GAAA;MAAAC,KAAA;MAJjB;AACF;AACA;;MAIE,SAAAC,OAAA,EAAS;QACP,MAAM;UAAEC;QAAU,CAAC,GAAG,IAAI;QAC1B,OAAOzB,IAAI,CAAA0B,EAAA,KAAAA,EAAA,GAAAC,CAAC;AAChB,QAAM,CACmE;AACzE,oBAAkB,CAAS,YAAS,CAAS;AAC7C,KAAI,GAHI,CAACF,SAAS,IACZzB,IAAI,CAAA4B,GAAA,KAAAA,GAAA,GAAAD,CAAC,iBAAc,CAAS,WAAQ,CAAS,sBAAoB,GAA5CpB,MAAM,EAAWA,MAAM,CAAsB,EACpDA,MAAM,EAAYA,MAAM;MAE1C;IAAC;MAAAS,IAAA;MAAAa,MAAA;MAAAP,GAAA;MAAAC,MAAA;QAAA,OAEenB,MAAM;MAAA;IAAA;EAAA;AAAA,GAhBYF,UAAU;AAmB9C,eAAeM,qBAAqB"}
|