@siemens/ix 2.0.1 → 2.0.3
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/components/a11y.js +1 -1
- package/components/a11y.js.map +1 -1
- package/components/application-header.js +17 -3
- package/components/application-header.js.map +1 -1
- package/components/breadcrumb-item.js +12 -4
- package/components/breadcrumb-item.js.map +1 -1
- package/components/button.js +1 -1
- package/components/button.js.map +1 -1
- package/components/dropdown.js +9 -4
- package/components/dropdown.js.map +1 -1
- package/components/icon-button.js +1 -1
- package/components/icon-button.js.map +1 -1
- package/components/ix-breadcrumb.js +4 -1
- package/components/ix-breadcrumb.js.map +1 -1
- package/components/ix-category-filter.js +1 -1
- package/components/ix-category-filter.js.map +1 -1
- package/components/ix-drawer.js +1 -1
- package/components/ix-drawer.js.map +1 -1
- package/components/ix-icon-toggle-button.js +1 -1
- package/components/ix-icon-toggle-button.js.map +1 -1
- package/components/ix-input-group.js +16 -3
- package/components/ix-input-group.js.map +1 -1
- package/components/ix-menu.js.map +1 -1
- package/components/ix-modal.js +1 -2
- package/components/ix-modal.js.map +1 -1
- package/components/ix-pagination.js +2 -2
- package/components/ix-pagination.js.map +1 -1
- package/dist/cjs/{a11y-4fdcefb4.js → a11y-7e1c1b86.js} +2 -2
- package/dist/cjs/a11y-7e1c1b86.js.map +1 -0
- package/dist/cjs/ix-application-header.cjs.entry.js +15 -2
- package/dist/cjs/ix-application-header.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-blind.cjs.entry.js +1 -1
- package/dist/cjs/ix-breadcrumb-item.cjs.entry.js +11 -4
- package/dist/cjs/ix-breadcrumb-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-breadcrumb.cjs.entry.js +5 -2
- package/dist/cjs/ix-breadcrumb.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-burger-menu.cjs.entry.js +1 -1
- package/dist/cjs/ix-button.cjs.entry.js +1 -1
- package/dist/cjs/ix-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-category-filter.cjs.entry.js +1 -1
- package/dist/cjs/ix-category-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-drawer.cjs.entry.js +1 -1
- package/dist/cjs/ix-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-dropdown.cjs.entry.js +9 -4
- package/dist/cjs/ix-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-icon-button_2.cjs.entry.js +1 -1
- package/dist/cjs/ix-icon-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-icon-toggle-button.cjs.entry.js +2 -2
- package/dist/cjs/ix-icon-toggle-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-input-group.cjs.entry.js +16 -3
- package/dist/cjs/ix-input-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-modal.cjs.entry.js +2 -3
- package/dist/cjs/ix-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-pagination.cjs.entry.js +3 -3
- package/dist/cjs/ix-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-slider.cjs.entry.js +1 -1
- package/dist/cjs/ix-toggle-button.cjs.entry.js +1 -1
- package/dist/cjs/ix-toggle.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/siemens-ix.cjs.js +1 -1
- package/dist/collection/components/application-header/application-header.js +18 -3
- package/dist/collection/components/application-header/application-header.js.map +1 -1
- package/dist/collection/components/application-header/test/application-headet.ct.js +16 -1
- package/dist/collection/components/application-header/test/application-headet.ct.js.map +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +4 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/collection/components/breadcrumb-item/breadcrumb-item.css +36 -0
- package/dist/collection/components/breadcrumb-item/breadcrumb-item.js +14 -2
- package/dist/collection/components/breadcrumb-item/breadcrumb-item.js.map +1 -1
- package/dist/collection/components/button/button.css +18 -0
- package/dist/collection/components/button/test/button.ct.js +6 -0
- package/dist/collection/components/button/test/button.ct.js.map +1 -1
- package/dist/collection/components/category-filter/category-filter.css +18 -0
- package/dist/collection/components/drawer/drawer.css +4 -0
- package/dist/collection/components/dropdown/dropdown.js +9 -4
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/dropdown/test/dropdown.ct.js +21 -0
- package/dist/collection/components/dropdown/test/dropdown.ct.js.map +1 -1
- package/dist/collection/components/icon-button/icon-button.css +18 -0
- package/dist/collection/components/icon-toggle-button/icon-toggle-button.css +18 -0
- package/dist/collection/components/input-group/input-group.js +16 -3
- package/dist/collection/components/input-group/input-group.js.map +1 -1
- package/dist/collection/components/input-group/tests/input-group.ct.js +86 -0
- package/dist/collection/components/input-group/tests/input-group.ct.js.map +1 -0
- package/dist/collection/components/menu/menu.js +4 -1
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/modal/modal.js +1 -2
- package/dist/collection/components/modal/modal.js.map +1 -1
- package/dist/collection/components/pagination/pagination.css +18 -0
- package/dist/collection/components/pagination/pagination.js +1 -1
- package/dist/collection/components/pagination/pagination.js.map +1 -1
- package/dist/collection/components/pagination/test/pagination.ct.js +20 -0
- package/dist/collection/components/pagination/test/pagination.ct.js.map +1 -1
- package/dist/collection/components/utils/a11y.js +1 -1
- package/dist/collection/components/utils/a11y.js.map +1 -1
- package/dist/esm/{a11y-d5dd20ad.js → a11y-115b6a36.js} +2 -2
- package/dist/esm/a11y-115b6a36.js.map +1 -0
- package/dist/esm/ix-application-header.entry.js +15 -2
- package/dist/esm/ix-application-header.entry.js.map +1 -1
- package/dist/esm/ix-blind.entry.js +1 -1
- package/dist/esm/ix-breadcrumb-item.entry.js +11 -4
- package/dist/esm/ix-breadcrumb-item.entry.js.map +1 -1
- package/dist/esm/ix-breadcrumb.entry.js +5 -2
- package/dist/esm/ix-breadcrumb.entry.js.map +1 -1
- package/dist/esm/ix-burger-menu.entry.js +1 -1
- package/dist/esm/ix-button.entry.js +1 -1
- package/dist/esm/ix-button.entry.js.map +1 -1
- package/dist/esm/ix-category-filter.entry.js +1 -1
- package/dist/esm/ix-category-filter.entry.js.map +1 -1
- package/dist/esm/ix-drawer.entry.js +1 -1
- package/dist/esm/ix-drawer.entry.js.map +1 -1
- package/dist/esm/ix-dropdown.entry.js +9 -4
- package/dist/esm/ix-dropdown.entry.js.map +1 -1
- package/dist/esm/ix-icon-button_2.entry.js +1 -1
- package/dist/esm/ix-icon-button_2.entry.js.map +1 -1
- package/dist/esm/ix-icon-toggle-button.entry.js +2 -2
- package/dist/esm/ix-icon-toggle-button.entry.js.map +1 -1
- package/dist/esm/ix-input-group.entry.js +16 -3
- package/dist/esm/ix-input-group.entry.js.map +1 -1
- package/dist/esm/ix-menu.entry.js.map +1 -1
- package/dist/esm/ix-modal.entry.js +2 -3
- package/dist/esm/ix-modal.entry.js.map +1 -1
- package/dist/esm/ix-pagination.entry.js +3 -3
- package/dist/esm/ix-pagination.entry.js.map +1 -1
- package/dist/esm/ix-slider.entry.js +1 -1
- package/dist/esm/ix-toggle-button.entry.js +1 -1
- package/dist/esm/ix-toggle.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/siemens-ix.js +1 -1
- package/dist/siemens-ix/{p-4796a3ae.entry.js → p-042b8889.entry.js} +2 -2
- package/dist/siemens-ix/{p-b53bed3a.entry.js → p-228c5657.entry.js} +2 -2
- package/dist/siemens-ix/{p-fa0d5f4e.entry.js → p-28d29e36.entry.js} +2 -2
- package/dist/siemens-ix/p-2fd30d79.js +2 -0
- package/dist/siemens-ix/p-2fd30d79.js.map +1 -0
- package/dist/siemens-ix/p-302cd093.entry.js +2 -0
- package/dist/siemens-ix/{p-eb29049a.entry.js.map → p-302cd093.entry.js.map} +1 -1
- package/dist/siemens-ix/p-32265ee2.entry.js +2 -0
- package/dist/siemens-ix/p-32265ee2.entry.js.map +1 -0
- package/dist/siemens-ix/p-355f9085.entry.js +2 -0
- package/dist/siemens-ix/{p-74a7d191.entry.js.map → p-355f9085.entry.js.map} +1 -1
- package/dist/siemens-ix/p-574e3cd1.entry.js +2 -0
- package/dist/siemens-ix/p-574e3cd1.entry.js.map +1 -0
- package/dist/siemens-ix/p-59dc0873.entry.js +2 -0
- package/dist/siemens-ix/{p-90efad65.entry.js.map → p-59dc0873.entry.js.map} +1 -1
- package/dist/siemens-ix/p-7cc23245.entry.js +2 -0
- package/dist/siemens-ix/p-7cc23245.entry.js.map +1 -0
- package/dist/siemens-ix/p-9249df8d.entry.js +2 -0
- package/dist/siemens-ix/{p-d78cd3f4.entry.js.map → p-9249df8d.entry.js.map} +1 -1
- package/dist/siemens-ix/p-ad94f795.entry.js +2 -0
- package/dist/siemens-ix/p-ad94f795.entry.js.map +1 -0
- package/dist/siemens-ix/{p-0ebc6c4d.entry.js → p-b2042a15.entry.js} +2 -2
- package/dist/siemens-ix/p-b2042a15.entry.js.map +1 -0
- package/dist/siemens-ix/p-bd873b87.entry.js +2 -0
- package/dist/siemens-ix/p-bd873b87.entry.js.map +1 -0
- package/dist/siemens-ix/{p-6ae65cac.entry.js → p-c1318e16.entry.js} +2 -2
- package/dist/siemens-ix/p-c7e502d7.entry.js +2 -0
- package/dist/siemens-ix/p-c7e502d7.entry.js.map +1 -0
- package/dist/siemens-ix/p-dcb957d8.entry.js.map +1 -1
- package/dist/siemens-ix/{p-77b14ca1.entry.js → p-f304f7ce.entry.js} +2 -2
- package/dist/siemens-ix/p-fa7f3eef.entry.js +2 -0
- package/dist/siemens-ix/p-fa7f3eef.entry.js.map +1 -0
- package/dist/siemens-ix/siemens-ix-core.css +1 -1
- package/dist/siemens-ix/siemens-ix.css +12 -0
- package/dist/siemens-ix/siemens-ix.esm.js +1 -1
- package/dist/siemens-ix/siemens-ix.esm.js.map +1 -1
- package/dist/types/components/application-header/application-header.d.ts +1 -0
- package/dist/types/components/breadcrumb-item/breadcrumb-item.d.ts +2 -0
- package/dist/types/components/input-group/input-group.d.ts +1 -0
- package/dist/types/components/input-group/tests/input-group.ct.d.ts +1 -0
- package/dist/types/components/menu/menu.d.ts +2 -0
- package/dist/types/components.d.ts +2 -0
- package/package.json +1 -1
- package/scss/components/_checkboxes.scss +3 -0
- package/scss/components/_radiobuttons.scss +5 -0
- package/dist/cjs/a11y-4fdcefb4.js.map +0 -1
- package/dist/esm/a11y-d5dd20ad.js.map +0 -1
- package/dist/siemens-ix/p-0ebc6c4d.entry.js.map +0 -1
- package/dist/siemens-ix/p-2e75f0e4.entry.js +0 -2
- package/dist/siemens-ix/p-2e75f0e4.entry.js.map +0 -1
- package/dist/siemens-ix/p-66d7fbd9.entry.js +0 -2
- package/dist/siemens-ix/p-66d7fbd9.entry.js.map +0 -1
- package/dist/siemens-ix/p-74a7d191.entry.js +0 -2
- package/dist/siemens-ix/p-774eca79.entry.js +0 -2
- package/dist/siemens-ix/p-774eca79.entry.js.map +0 -1
- package/dist/siemens-ix/p-78c9489b.js +0 -2
- package/dist/siemens-ix/p-78c9489b.js.map +0 -1
- package/dist/siemens-ix/p-7a884056.entry.js +0 -2
- package/dist/siemens-ix/p-7a884056.entry.js.map +0 -1
- package/dist/siemens-ix/p-7b362f58.entry.js +0 -2
- package/dist/siemens-ix/p-7b362f58.entry.js.map +0 -1
- package/dist/siemens-ix/p-90efad65.entry.js +0 -2
- package/dist/siemens-ix/p-d78cd3f4.entry.js +0 -2
- package/dist/siemens-ix/p-d9c99b88.entry.js +0 -2
- package/dist/siemens-ix/p-d9c99b88.entry.js.map +0 -1
- package/dist/siemens-ix/p-eb29049a.entry.js +0 -2
- package/dist/siemens-ix/p-f7b95fd7.entry.js +0 -2
- package/dist/siemens-ix/p-f7b95fd7.entry.js.map +0 -1
- /package/dist/siemens-ix/{p-4796a3ae.entry.js.map → p-042b8889.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-b53bed3a.entry.js.map → p-228c5657.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-fa0d5f4e.entry.js.map → p-28d29e36.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-6ae65cac.entry.js.map → p-c1318e16.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-77b14ca1.entry.js.map → p-f304f7ce.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["iconButtonCss","IconButton","componentDidLoad","this","type","submitButton","document","createElement","style","display","tabIndex","hostElement","appendChild","submitButtonElement","dispatchFormEvents","click","getIconSizeClass","size","render","baseButtonProps","variant","outline","ghost","iconOnly","iconOval","oval","selected","disabled","loading","icon","iconColor","color","iconSize","onClick","extraClasses","h","Host","class","Object","assign","BaseIconButton","spinnerCss","Spinner","primary","small","medium","large","hideTrack"],"sources":["./src/components/icon-button/icon-button.scss?tag=ix-icon-button&encapsulation=shadow","./src/components/icon-button/icon-button.tsx","./src/components/spinner/spinner.scss?tag=ix-spinner&encapsulation=shadow","./src/components/spinner/spinner.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import './icon-button-mixin.scss';\n\n@include base-icon-button;\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, Prop } from '@stencil/core';\nimport { BaseButtonProps } from '../button/base-button';\nimport { ButtonVariant } from '../button/button';\nimport { BaseIconButton } from '../icon-button/base-icon-button';\n\nexport type IconButtonVariant = ButtonVariant;\n\n@Component({\n tag: 'ix-icon-button',\n styleUrl: 'icon-button.scss',\n shadow: true,\n})\nexport class IconButton {\n @Element() hostElement: HTMLIxIconButtonElement;\n\n /**\n * Variant of button\n */\n @Prop() variant: IconButtonVariant = 'secondary';\n\n /**\n * Button outline\n */\n @Prop() outline: boolean;\n\n /**\n * Button invisible\n */\n @Prop() ghost: boolean;\n\n /**\n * Button in oval shape\n */\n @Prop() oval: boolean;\n\n /**\n * Icon name\n */\n @Prop() icon: string;\n\n /**\n * Size of icon in button\n *\n * @deprecated Only size 32 will be removed in 3.0.0\n */\n @Prop() size: '32' | '24' | '16' | '12' = '24';\n\n /**\n * Color of icon in button\n */\n @Prop() color: string;\n\n /**\n * Disabled\n */\n @Prop() disabled = false;\n\n /**\n * Type of the button\n */\n @Prop() type: 'button' | 'submit' = 'button';\n\n /**\n * Loading button\n *\n * @since 2.0.0\n */\n @Prop() loading = false;\n\n /**\n * Temp. workaround until stencil issue is fixed (https://github.com/ionic-team/stencil/issues/2284)\n */\n submitButtonElement: HTMLButtonElement;\n\n componentDidLoad() {\n if (this.type === 'submit') {\n const submitButton = document.createElement('button');\n submitButton.style.display = 'none';\n submitButton.type = 'submit';\n submitButton.tabIndex = -1;\n this.hostElement.appendChild(submitButton);\n\n this.submitButtonElement = submitButton;\n }\n }\n\n dispatchFormEvents() {\n if (this.type === 'submit' && this.submitButtonElement) {\n this.submitButtonElement.click();\n }\n }\n\n private getIconSizeClass() {\n return {\n 'btn-icon-12': this.size === '12',\n 'btn-icon-16': this.size === '16',\n 'btn-icon-32': this.size === '32' || this.size === '24' || !this.size,\n };\n }\n\n render() {\n const baseButtonProps: BaseButtonProps = {\n variant: this.variant,\n outline: this.outline,\n ghost: this.ghost,\n iconOnly: true,\n iconOval: this.oval,\n selected: false,\n disabled: this.disabled || this.loading,\n icon: this.icon,\n iconColor: this.color,\n iconSize: this.size,\n loading: this.loading,\n onClick: () => this.dispatchFormEvents(),\n type: this.type,\n extraClasses: this.getIconSizeClass(),\n };\n\n return (\n <Host\n class={{\n ...this.getIconSizeClass(),\n disabled: this.disabled || this.loading,\n }}\n >\n <BaseIconButton {...baseButtonProps}></BaseIconButton>\n </Host>\n );\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'mixins/shadow-dom/component';\n\n@mixin ix-spinner($host-class: 'medium', $size: 2rem, $track-size: 4px) {\n :host(.#{$host-class}) {\n @include ix-component;\n display: block;\n position: relative;\n\n width: $size;\n height: $size;\n min-width: $size;\n min-height: $size;\n max-width: $size;\n max-height: $size;\n border-radius: 100%;\n position: relative;\n animation: rotate 2s linear infinite;\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n\n @keyframes clipMask {\n 0% {\n clip-path: polygon(50% 50%, 0 0, 0 0, 0 0, 0 0, 0 0);\n }\n 12.5% {\n clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 0, 100% 0, 100% 0);\n }\n 25% {\n clip-path: polygon(\n 50% 50%,\n 0 0,\n 100% 0,\n 100% 100%,\n 100% 100%,\n 100% 100%\n );\n }\n 37.5% {\n clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%);\n }\n 50% {\n clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%, 0 0);\n }\n 62.5% {\n clip-path: polygon(50% 50%, 100% 0, 100% 0, 100% 100%, 0 100%, 0 0);\n }\n 75% {\n clip-path: polygon(\n 50% 50%,\n 100% 100%,\n 100% 100%,\n 100% 100%,\n 0 100%,\n 0 0\n );\n }\n 87.5% {\n clip-path: polygon(50% 50%, 0 100%, 0 100%, 0 100%, 0 100%, 0 0);\n }\n 100% {\n clip-path: polygon(50% 50%, 0 0, 0 0, 0 0, 0 0, 0 0);\n }\n }\n }\n\n :host(.#{$host-class})::after {\n content: '';\n box-sizing: border-box;\n position: absolute;\n inset: 8.33%;\n border-radius: 100%;\n border: $track-size solid\n var(--ix-button-color, var(--theme-color-soft-text));\n animation: clipMask 3s linear infinite;\n }\n\n :host(:not(.hide-track)):host(.#{$host-class})::before {\n content: '';\n box-sizing: border-box;\n position: absolute;\n inset: 8.33%;\n border-radius: 100%;\n border: $track-size solid var(--theme-color-ghost--hover);\n }\n\n :host(.primary)::after {\n border-color: var(--theme-color-dynamic);\n }\n\n :host(.primary)::before {\n border-color: var(--theme-color-ghost--hover);\n }\n}\n\n@include ix-spinner($host-class: 'xx-small', $size: 0.75rem, $track-size: 1px);\n@include ix-spinner($host-class: 'x-small', $size: 1.25rem, $track-size: 2px);\n@include ix-spinner($host-class: 'small', $size: 1.5rem, $track-size: 2px);\n@include ix-spinner($host-class: 'medium', $size: 2rem, $track-size: 2px);\n@include ix-spinner($host-class: 'large', $size: 6rem, $track-size: 4px);\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'ix-spinner',\n styleUrl: 'spinner.scss',\n shadow: true,\n})\nexport class Spinner {\n @Element() hostElement!: HTMLIxSpinnerElement;\n\n /**\n * Variant of spinner\n */\n @Prop() variant: 'primary' | 'secondary' = 'secondary';\n\n /**\n * Size of spinner\n */\n @Prop() size: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' =\n 'medium';\n\n /**\n * @internal\n */\n @Prop() hideTrack = false;\n\n render() {\n return (\n <Host\n class={{\n primary: this.variant === 'primary',\n 'xx-small': this.size === 'xx-small',\n 'x-small': this.size === 'x-small',\n small: this.size === 'small',\n medium: this.size === 'medium',\n large: this.size === 'large',\n 'hide-track': this.hideTrack,\n }}\n ></Host>\n );\n }\n}\n"],"mappings":"qHAAA,MAAMA,EAAgB,
|
|
1
|
+
{"version":3,"names":["iconButtonCss","IconButton","componentDidLoad","this","type","submitButton","document","createElement","style","display","tabIndex","hostElement","appendChild","submitButtonElement","dispatchFormEvents","click","getIconSizeClass","size","render","baseButtonProps","variant","outline","ghost","iconOnly","iconOval","oval","selected","disabled","loading","icon","iconColor","color","iconSize","onClick","extraClasses","h","Host","class","Object","assign","BaseIconButton","spinnerCss","Spinner","primary","small","medium","large","hideTrack"],"sources":["./src/components/icon-button/icon-button.scss?tag=ix-icon-button&encapsulation=shadow","./src/components/icon-button/icon-button.tsx","./src/components/spinner/spinner.scss?tag=ix-spinner&encapsulation=shadow","./src/components/spinner/spinner.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import './icon-button-mixin.scss';\n\n@include base-icon-button;\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, Prop } from '@stencil/core';\nimport { BaseButtonProps } from '../button/base-button';\nimport { ButtonVariant } from '../button/button';\nimport { BaseIconButton } from '../icon-button/base-icon-button';\n\nexport type IconButtonVariant = ButtonVariant;\n\n@Component({\n tag: 'ix-icon-button',\n styleUrl: 'icon-button.scss',\n shadow: true,\n})\nexport class IconButton {\n @Element() hostElement: HTMLIxIconButtonElement;\n\n /**\n * Variant of button\n */\n @Prop() variant: IconButtonVariant = 'secondary';\n\n /**\n * Button outline\n */\n @Prop() outline: boolean;\n\n /**\n * Button invisible\n */\n @Prop() ghost: boolean;\n\n /**\n * Button in oval shape\n */\n @Prop() oval: boolean;\n\n /**\n * Icon name\n */\n @Prop() icon: string;\n\n /**\n * Size of icon in button\n *\n * @deprecated Only size 32 will be removed in 3.0.0\n */\n @Prop() size: '32' | '24' | '16' | '12' = '24';\n\n /**\n * Color of icon in button\n */\n @Prop() color: string;\n\n /**\n * Disabled\n */\n @Prop() disabled = false;\n\n /**\n * Type of the button\n */\n @Prop() type: 'button' | 'submit' = 'button';\n\n /**\n * Loading button\n *\n * @since 2.0.0\n */\n @Prop() loading = false;\n\n /**\n * Temp. workaround until stencil issue is fixed (https://github.com/ionic-team/stencil/issues/2284)\n */\n submitButtonElement: HTMLButtonElement;\n\n componentDidLoad() {\n if (this.type === 'submit') {\n const submitButton = document.createElement('button');\n submitButton.style.display = 'none';\n submitButton.type = 'submit';\n submitButton.tabIndex = -1;\n this.hostElement.appendChild(submitButton);\n\n this.submitButtonElement = submitButton;\n }\n }\n\n dispatchFormEvents() {\n if (this.type === 'submit' && this.submitButtonElement) {\n this.submitButtonElement.click();\n }\n }\n\n private getIconSizeClass() {\n return {\n 'btn-icon-12': this.size === '12',\n 'btn-icon-16': this.size === '16',\n 'btn-icon-32': this.size === '32' || this.size === '24' || !this.size,\n };\n }\n\n render() {\n const baseButtonProps: BaseButtonProps = {\n variant: this.variant,\n outline: this.outline,\n ghost: this.ghost,\n iconOnly: true,\n iconOval: this.oval,\n selected: false,\n disabled: this.disabled || this.loading,\n icon: this.icon,\n iconColor: this.color,\n iconSize: this.size,\n loading: this.loading,\n onClick: () => this.dispatchFormEvents(),\n type: this.type,\n extraClasses: this.getIconSizeClass(),\n };\n\n return (\n <Host\n class={{\n ...this.getIconSizeClass(),\n disabled: this.disabled || this.loading,\n }}\n >\n <BaseIconButton {...baseButtonProps}></BaseIconButton>\n </Host>\n );\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'mixins/shadow-dom/component';\n\n@mixin ix-spinner($host-class: 'medium', $size: 2rem, $track-size: 4px) {\n :host(.#{$host-class}) {\n @include ix-component;\n display: block;\n position: relative;\n\n width: $size;\n height: $size;\n min-width: $size;\n min-height: $size;\n max-width: $size;\n max-height: $size;\n border-radius: 100%;\n position: relative;\n animation: rotate 2s linear infinite;\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n\n @keyframes clipMask {\n 0% {\n clip-path: polygon(50% 50%, 0 0, 0 0, 0 0, 0 0, 0 0);\n }\n 12.5% {\n clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 0, 100% 0, 100% 0);\n }\n 25% {\n clip-path: polygon(\n 50% 50%,\n 0 0,\n 100% 0,\n 100% 100%,\n 100% 100%,\n 100% 100%\n );\n }\n 37.5% {\n clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%);\n }\n 50% {\n clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%, 0 0);\n }\n 62.5% {\n clip-path: polygon(50% 50%, 100% 0, 100% 0, 100% 100%, 0 100%, 0 0);\n }\n 75% {\n clip-path: polygon(\n 50% 50%,\n 100% 100%,\n 100% 100%,\n 100% 100%,\n 0 100%,\n 0 0\n );\n }\n 87.5% {\n clip-path: polygon(50% 50%, 0 100%, 0 100%, 0 100%, 0 100%, 0 0);\n }\n 100% {\n clip-path: polygon(50% 50%, 0 0, 0 0, 0 0, 0 0, 0 0);\n }\n }\n }\n\n :host(.#{$host-class})::after {\n content: '';\n box-sizing: border-box;\n position: absolute;\n inset: 8.33%;\n border-radius: 100%;\n border: $track-size solid\n var(--ix-button-color, var(--theme-color-soft-text));\n animation: clipMask 3s linear infinite;\n }\n\n :host(:not(.hide-track)):host(.#{$host-class})::before {\n content: '';\n box-sizing: border-box;\n position: absolute;\n inset: 8.33%;\n border-radius: 100%;\n border: $track-size solid var(--theme-color-ghost--hover);\n }\n\n :host(.primary)::after {\n border-color: var(--theme-color-dynamic);\n }\n\n :host(.primary)::before {\n border-color: var(--theme-color-ghost--hover);\n }\n}\n\n@include ix-spinner($host-class: 'xx-small', $size: 0.75rem, $track-size: 1px);\n@include ix-spinner($host-class: 'x-small', $size: 1.25rem, $track-size: 2px);\n@include ix-spinner($host-class: 'small', $size: 1.5rem, $track-size: 2px);\n@include ix-spinner($host-class: 'medium', $size: 2rem, $track-size: 2px);\n@include ix-spinner($host-class: 'large', $size: 6rem, $track-size: 4px);\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'ix-spinner',\n styleUrl: 'spinner.scss',\n shadow: true,\n})\nexport class Spinner {\n @Element() hostElement!: HTMLIxSpinnerElement;\n\n /**\n * Variant of spinner\n */\n @Prop() variant: 'primary' | 'secondary' = 'secondary';\n\n /**\n * Size of spinner\n */\n @Prop() size: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' =\n 'medium';\n\n /**\n * @internal\n */\n @Prop() hideTrack = false;\n\n render() {\n return (\n <Host\n class={{\n primary: this.variant === 'primary',\n 'xx-small': this.size === 'xx-small',\n 'x-small': this.size === 'x-small',\n small: this.size === 'small',\n medium: this.size === 'medium',\n large: this.size === 'large',\n 'hide-track': this.hideTrack,\n }}\n ></Host>\n );\n }\n}\n"],"mappings":"qHAAA,MAAMA,EAAgB,wngB,MCqBTC,EAAU,M,sCAMgB,Y,8FA2BK,K,mCAUvB,M,UAKiB,S,aAOlB,K,CAOlBC,mBACE,GAAIC,KAAKC,OAAS,SAAU,CAC1B,MAAMC,EAAeC,SAASC,cAAc,UAC5CF,EAAaG,MAAMC,QAAU,OAC7BJ,EAAaD,KAAO,SACpBC,EAAaK,UAAY,EACzBP,KAAKQ,YAAYC,YAAYP,GAE7BF,KAAKU,oBAAsBR,C,EAI/BS,qBACE,GAAIX,KAAKC,OAAS,UAAYD,KAAKU,oBAAqB,CACtDV,KAAKU,oBAAoBE,O,EAIrBC,mBACN,MAAO,CACL,cAAeb,KAAKc,OAAS,KAC7B,cAAed,KAAKc,OAAS,KAC7B,cAAed,KAAKc,OAAS,MAAQd,KAAKc,OAAS,OAASd,KAAKc,K,CAIrEC,SACE,MAAMC,EAAmC,CACvCC,QAASjB,KAAKiB,QACdC,QAASlB,KAAKkB,QACdC,MAAOnB,KAAKmB,MACZC,SAAU,KACVC,SAAUrB,KAAKsB,KACfC,SAAU,MACVC,SAAUxB,KAAKwB,UAAYxB,KAAKyB,QAChCC,KAAM1B,KAAK0B,KACXC,UAAW3B,KAAK4B,MAChBC,SAAU7B,KAAKc,KACfW,QAASzB,KAAKyB,QACdK,QAAS,IAAM9B,KAAKW,qBACpBV,KAAMD,KAAKC,KACX8B,aAAc/B,KAAKa,oBAGrB,OACEmB,EAACC,EAAI,CACHC,MAAKC,OAAAC,OAAAD,OAAAC,OAAA,GACApC,KAAKa,oBAAkB,CAC1BW,SAAUxB,KAAKwB,UAAYxB,KAAKyB,WAGlCO,EAACK,EAAcF,OAAAC,OAAA,GAAKpB,I,8CCtI5B,MAAMsB,EAAa,mib,MCgBNC,EAAO,M,sCAMyB,Y,UAMzC,S,eAKkB,K,CAEpBxB,SACE,OACEiB,EAACC,EAAI,CACHC,MAAO,CACLM,QAASxC,KAAKiB,UAAY,UAC1B,WAAYjB,KAAKc,OAAS,WAC1B,UAAWd,KAAKc,OAAS,UACzB2B,MAAOzC,KAAKc,OAAS,QACrB4B,OAAQ1C,KAAKc,OAAS,SACtB6B,MAAO3C,KAAKc,OAAS,QACrB,aAAcd,KAAK4C,Y"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,c as e,h as i,H as s}from"./p-76a509c7.js";import{a as o}from"./p-810b5232.js";const r=":host{top:0;right:0;box-shadow:var(--theme-box-shadow-level-3);visibility:hidden;display:flex;position:absolute;flex-flow:column nowrap;justify-content:flex-start;align-items:center;max-height:100vh;min-height:1.5rem;background-color:var(--theme-color-1);border-radius:0.25rem;transition:all 300ms ease-out}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host .toggle{z-index:100;visibility:visible}:host .drawer-container.full-height{min-height:100%}:host .header{display:flex;position:relative;align-items:center;justify-content:flex-end;padding:0.5rem;width:100%;order:1}:host .header .header-content{flex-grow:1;margin-right:1rem}:host .content{position:relative;flex:1;flex-grow:1;order:2;height:100%;width:100%;overflow-y:auto}:host(.toggle){visibility:visible}";const h=class{constructor(i){t(this,i);this.open=e(this,"open",7);this.drawerClose=e(this,"drawerClose",7);this.callback=this.clickedOutside.bind(this);this.show=false;this.closeOnClickOutside=true;this.fullHeight=false;this.minWidth=16;this.maxWidth=28;this.width=this.minWidth}onShowChanged(t){this.show=t!==undefined?t:!this.show;this.toggleDrawer(this.show)}async toggleDrawer(t){this.show=t!==undefined?t:!this.show;if(t){this.open.emit();this.slideInRight(this.divElement);setTimeout((()=>{window.addEventListener("mousedown",this.callback)}),300)}else{this.drawerClose.emit();this.slideOutRight(this.divElement);window.removeEventListener("mousedown",this.callback)}return Promise.resolve()}onCloseClicked(){this.show=false}clickedOutside(t){if(!this.closeOnClickOutside){return}const e=t.target;const i=e.closest("#div-container");const s=e.closest("#drawer-btn");if(t.target.type!=="button"&&i!==this.divElement&&e!==s){this.show=false}}slideOutRight(t){o({targets:t,duration:h.duration,translateX:[0,"16rem"],opacity:[1,0],easing:"easeInSine",complete:()=>{t.classList.add("d-none")}})}slideInRight(t){o({targets:t,duration:h.duration,translateX:["16rem",0],opacity:[0,1],easing:"easeOutSine",begin:()=>{t.classList.remove("d-none")}})}componentDidLoad(){this.onShowChanged(this.show)}render(){return i(s,{class:{"drawer-container":true,toggle:this.show,"full-height":this.fullHeight,"d-none":true},style:{width:this.width==="auto"?this.width:`${this.width}rem`,"min-width":`${this.minWidth}rem`,"max-width":`${this.maxWidth}rem`},ref:t=>this.divElement=t,"data-testid":"container",id:"div-container"},i("div",{class:"header"},i("div",{class:"header-content"},i("slot",{name:"header"})),i("ix-icon-button",{class:"close-button",icon:"close",size:"24",ghost:true,onClick:()=>this.onCloseClicked(),"data-testid":"close-button"})),i("div",{class:"content"},i("slot",null)))}static get watchers(){return{show:["onShowChanged"]}}};h.duration=300;h.style=r;export{h as ix_drawer};
|
|
2
|
+
//# sourceMappingURL=p-7cc23245.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["drawerCss","Drawer","this","callback","clickedOutside","bind","minWidth","onShowChanged","newValue","show","undefined","toggleDrawer","async","open","emit","slideInRight","divElement","setTimeout","window","addEventListener","drawerClose","slideOutRight","removeEventListener","Promise","resolve","onCloseClicked","evt","closeOnClickOutside","target","closestElement","closest","btn","type","el","anime","targets","duration","translateX","opacity","easing","complete","classList","add","begin","remove","componentDidLoad","render","h","Host","class","toggle","fullHeight","style","width","maxWidth","ref","id","name","icon","size","ghost","onClick"],"sources":["./src/components/drawer/drawer.scss?tag=ix-drawer&encapsulation=shadow","./src/components/drawer/drawer.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n@import 'mixins/shadow-dom/component';\n@import 'mixins/shadows';\n@import 'common-variables';\n\n:host {\n @include ix-component;\n\n top: 0;\n right: 0;\n @include box-shadow(3);\n\n visibility: hidden;\n\n display: flex;\n position: absolute;\n flex-flow: column nowrap;\n justify-content: flex-start;\n align-items: center;\n\n max-height: 100vh;\n min-height: $large-space;\n background-color: var(--theme-color-1);\n border-radius: $default-border-radius;\n\n transition: all $medium-time ease-out;\n\n .toggle {\n z-index: 100;\n visibility: visible;\n }\n\n .drawer-container.full-height {\n min-height: 100%;\n }\n\n .header {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: flex-end;\n padding: 0.5rem;\n width: 100%;\n order: 1;\n\n .header-content {\n flex-grow: 1;\n margin-right: $default-space;\n }\n }\n\n .content {\n position: relative;\n flex: 1;\n flex-grow: 1;\n order: 2;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n }\n}\n\n:host(.toggle) {\n visibility: visible;\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport anime from 'animejs';\n\n@Component({\n tag: 'ix-drawer',\n styleUrl: 'drawer.scss',\n shadow: true,\n})\nexport class Drawer {\n /**\n * Show or hide the drawer\n */\n @Prop({ mutable: true }) show = false;\n\n /**\n * Fired in case of an outside click during drawer showed state\n */\n @Prop() closeOnClickOutside = true;\n\n /**\n * Render the drawer with maximum height\n */\n @Prop() fullHeight = false;\n\n /**\n * Min width interpreted as REM\n */\n @Prop() minWidth = 16;\n\n /**\n * Max width interpreted as REM\n */\n @Prop() maxWidth = 28;\n\n /**\n * Width interpreted as REM if not set to 'auto'\n */\n @Prop() width: number | 'auto' = this.minWidth;\n\n /**\n * Fire event after drawer is open\n */\n @Event() open: EventEmitter;\n\n /**\n * Fire event after drawer is close\n */\n @Event() drawerClose: EventEmitter;\n\n private static duration = 300;\n private callback = this.clickedOutside.bind(this);\n private divElement?: HTMLElement;\n\n @Watch('show')\n onShowChanged(newValue: boolean) {\n this.show = newValue !== undefined ? newValue : !this.show;\n this.toggleDrawer(this.show);\n }\n\n /**\n * Toggle or define show state of drawer\n * @param show Overwrite toggle state with boolean\n */\n @Method()\n async toggleDrawer(show?: boolean): Promise<void> {\n this.show = show !== undefined ? show : !this.show;\n\n if (show) {\n this.open.emit();\n this.slideInRight(this.divElement);\n setTimeout(() => {\n window.addEventListener('mousedown', this.callback);\n }, 300);\n } else {\n this.drawerClose.emit();\n this.slideOutRight(this.divElement);\n window.removeEventListener('mousedown', this.callback);\n }\n\n return Promise.resolve();\n }\n\n private onCloseClicked() {\n this.show = false;\n }\n\n private clickedOutside(evt: any) {\n if (!this.closeOnClickOutside) {\n return;\n }\n\n const target = evt.target;\n const closestElement = target.closest('#div-container');\n const btn = target.closest('#drawer-btn');\n\n if (\n evt.target.type !== 'button' &&\n closestElement !== this.divElement &&\n target !== btn\n ) {\n this.show = false;\n }\n }\n\n private slideOutRight(el: HTMLElement) {\n anime({\n targets: el,\n duration: Drawer.duration,\n translateX: [0, '16rem'],\n opacity: [1, 0],\n easing: 'easeInSine',\n complete: () => {\n el.classList.add('d-none');\n },\n });\n }\n\n private slideInRight(el: HTMLElement) {\n anime({\n targets: el,\n duration: Drawer.duration,\n translateX: ['16rem', 0],\n opacity: [0, 1],\n easing: 'easeOutSine',\n begin: () => {\n el.classList.remove('d-none');\n },\n });\n }\n\n componentDidLoad() {\n this.onShowChanged(this.show);\n }\n\n render() {\n return (\n <Host\n class={{\n 'drawer-container': true,\n toggle: this.show,\n 'full-height': this.fullHeight,\n 'd-none': true,\n }}\n style={{\n width: this.width === 'auto' ? this.width : `${this.width}rem`,\n 'min-width': `${this.minWidth}rem`,\n 'max-width': `${this.maxWidth}rem`,\n }}\n ref={(el) => (this.divElement = el as HTMLElement)}\n data-testid=\"container\"\n id=\"div-container\"\n >\n <div class=\"header\">\n <div class=\"header-content\">\n <slot name=\"header\"></slot>\n </div>\n <ix-icon-button\n class=\"close-button\"\n icon={'close'}\n size=\"24\"\n ghost\n onClick={() => this.onCloseClicked()}\n data-testid=\"close-button\"\n ></ix-icon-button>\n </div>\n <div class=\"content\">\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"6FAAA,MAAMA,EAAY,+yC,MC0BLC,EAAM,M,6FA0CTC,KAAAC,SAAWD,KAAKE,eAAeC,KAAKH,M,UAtCZ,M,yBAKF,K,gBAKT,M,cAKF,G,cAKA,G,WAKcA,KAAKI,Q,CAiBtCC,cAAcC,GACZN,KAAKO,KAAOD,IAAaE,UAAYF,GAAYN,KAAKO,KACtDP,KAAKS,aAAaT,KAAKO,K,CAQzBG,mBAAmBH,GACjBP,KAAKO,KAAOA,IAASC,UAAYD,GAAQP,KAAKO,KAE9C,GAAIA,EAAM,CACRP,KAAKW,KAAKC,OACVZ,KAAKa,aAAab,KAAKc,YACvBC,YAAW,KACTC,OAAOC,iBAAiB,YAAajB,KAAKC,SAAS,GAClD,I,KACE,CACLD,KAAKkB,YAAYN,OACjBZ,KAAKmB,cAAcnB,KAAKc,YACxBE,OAAOI,oBAAoB,YAAapB,KAAKC,S,CAG/C,OAAOoB,QAAQC,S,CAGTC,iBACNvB,KAAKO,KAAO,K,CAGNL,eAAesB,GACrB,IAAKxB,KAAKyB,oBAAqB,CAC7B,M,CAGF,MAAMC,EAASF,EAAIE,OACnB,MAAMC,EAAiBD,EAAOE,QAAQ,kBACtC,MAAMC,EAAMH,EAAOE,QAAQ,eAE3B,GACEJ,EAAIE,OAAOI,OAAS,UACpBH,IAAmB3B,KAAKc,YACxBY,IAAWG,EACX,CACA7B,KAAKO,KAAO,K,EAIRY,cAAcY,GACpBC,EAAM,CACJC,QAASF,EACTG,SAAUnC,EAAOmC,SACjBC,WAAY,CAAC,EAAG,SAChBC,QAAS,CAAC,EAAG,GACbC,OAAQ,aACRC,SAAU,KACRP,EAAGQ,UAAUC,IAAI,SAAS,G,CAKxB3B,aAAakB,GACnBC,EAAM,CACJC,QAASF,EACTG,SAAUnC,EAAOmC,SACjBC,WAAY,CAAC,QAAS,GACtBC,QAAS,CAAC,EAAG,GACbC,OAAQ,cACRI,MAAO,KACLV,EAAGQ,UAAUG,OAAO,SAAS,G,CAKnCC,mBACE3C,KAAKK,cAAcL,KAAKO,K,CAG1BqC,SACE,OACEC,EAACC,EAAI,CACHC,MAAO,CACL,mBAAoB,KACpBC,OAAQhD,KAAKO,KACb,cAAeP,KAAKiD,WACpB,SAAU,MAEZC,MAAO,CACLC,MAAOnD,KAAKmD,QAAU,OAASnD,KAAKmD,MAAQ,GAAGnD,KAAKmD,WACpD,YAAa,GAAGnD,KAAKI,cACrB,YAAa,GAAGJ,KAAKoD,eAEvBC,IAAMtB,GAAQ/B,KAAKc,WAAaiB,EAAkB,cACtC,YACZuB,GAAG,iBAEHT,EAAA,OAAKE,MAAM,UACTF,EAAA,OAAKE,MAAM,kBACTF,EAAA,QAAMU,KAAK,YAEbV,EAAA,kBACEE,MAAM,eACNS,KAAM,QACNC,KAAK,KACLC,MAAK,KACLC,QAAS,IAAM3D,KAAKuB,iBAAgB,cACxB,kBAGhBsB,EAAA,OAAKE,MAAM,WACTF,EAAA,c,wDArHO9C,EAAAmC,SAAW,I"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as o,c as e,h as t,H as r,g as n}from"./p-76a509c7.js";import{B as i}from"./p-ab452b82.js";import{L as a,I as d}from"./p-6f819085.js";const l=":host{display:inline-block;height:2rem;vertical-align:middle;cursor:pointer;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;font-family:Siemens Sans, sans-serif;font-size:0.875rem;font-weight:700;line-height:1.429em;color:var(--theme-color-std-text)}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host button{all:unset;box-sizing:border-box;display:inline-flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;align-items:center;justify-content:center;width:100%;height:100%;padding:0 0.5rem}:host ix-spinner{margin-right:0.25rem}:host ix-icon{margin-right:0.25rem}:host .content{display:inline-block;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host .content-start{width:100%}:host(.disabled){cursor:default}:host .btn-primary{border-radius:var(--theme-btn--border-radius)}:host .btn-primary,:host .btn-primary.focus,:host .btn-primary:focus-visible{background-color:var(--theme-btn-primary--background);color:var(--theme-btn-primary--color);--ix-button-color:var(--theme-btn-primary--color);border-width:var(--theme-btn--border-thickness);border-color:var(--theme-btn-primary--border-color);border-style:solid}:host .btn-primary:not(.disabled):not(:disabled):focus-visible{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-btn--focus--outline-offset)}:host .btn-primary.selected{background-color:var(--theme-color-ghost--selected);color:var(--theme-color-dynamic)}:host .btn-primary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-primary.selected:not(.disabled):not(:disabled):hover{background-color:var(--theme-color-ghost--selected-hover);color:var(--theme-color-dynamic)}:host .btn-primary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-primary.selected:not(.disabled):not(:disabled):active,:host .btn-primary.selected:not(.disabled):not(:disabled).active{background-color:var(--theme-color-ghost--selected-active);color:var(--theme-color-dynamic)}:host .btn-primary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-primary:not(.disabled):not(:disabled):hover{border-color:var(--theme-btn-primary--border-color--hover);background-color:var(--theme-btn-primary--background--hover);color:var(--theme-btn-primary--color--hover)}:host .btn-primary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-primary:not(.disabled):not(:disabled):active,:host .btn-primary:not(.disabled):not(:disabled).active{border-color:var(--theme-btn-primary--border-color--active);background-color:var(--theme-btn-primary--background--active);color:var(--theme-btn-primary--color--active)}:host(.disabled){pointer-events:none}:host(.disabled) .btn-primary.disabled,:host(.disabled) .btn-primary:disabled{pointer-events:none;border-color:var(--theme-btn-primary--border-color--disabled);background-color:var(--theme-btn-primary--background--disabled);color:var(--theme-btn-primary--color--disabled);opacity:1;--ix-button-color:var(--theme-btn-primary--color--disabled)}:host .btn-outline-primary{border-radius:var(--theme-btn--border-radius)}:host .btn-outline-primary,:host .btn-outline-primary.focus,:host .btn-outline-primary:focus-visible{background-color:var(--theme-btn-outline-primary--background);color:var(--theme-btn-outline-primary--color);--ix-button-color:var(--theme-btn-outline-primary--color);border-width:var(--theme-btn--border-thickness);border-color:var(--theme-btn-outline-primary--border-color);border-style:solid}:host .btn-outline-primary:not(.disabled):not(:disabled):focus-visible{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-btn--focus--outline-offset)}:host .btn-outline-primary.selected{background-color:var(--theme-color-ghost--selected);color:var(--theme-color-dynamic)}:host .btn-outline-primary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-primary.selected:not(.disabled):not(:disabled):hover{background-color:var(--theme-color-ghost--selected-hover);color:var(--theme-color-dynamic)}:host .btn-outline-primary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-primary.selected:not(.disabled):not(:disabled):active,:host .btn-outline-primary.selected:not(.disabled):not(:disabled).active{background-color:var(--theme-color-ghost--selected-active);color:var(--theme-color-dynamic)}:host .btn-outline-primary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-primary:not(.disabled):not(:disabled):hover{border-color:var(--theme-btn-outline-primary--border-color--hover);background-color:var(--theme-btn-outline-primary--background--hover);color:var(--theme-btn-outline-primary--color--hover)}:host .btn-outline-primary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-primary:not(.disabled):not(:disabled):active,:host .btn-outline-primary:not(.disabled):not(:disabled).active{border-color:var(--theme-btn-outline-primary--border-color--active);background-color:var(--theme-btn-outline-primary--background--active);color:var(--theme-btn-outline-primary--color--active)}:host(.disabled){pointer-events:none}:host(.disabled) .btn-outline-primary.disabled,:host(.disabled) .btn-outline-primary:disabled{pointer-events:none;border-color:var(--theme-btn-outline-primary--border-color--disabled);background-color:var(--theme-btn-outline-primary--background--disabled);color:var(--theme-btn-outline-primary--color--disabled);opacity:1;--ix-button-color:var(--theme-btn-outline-primary--color--disabled)}:host .btn-invisible-primary{border-radius:var(--theme-btn--border-radius)}:host .btn-invisible-primary,:host .btn-invisible-primary.focus,:host .btn-invisible-primary:focus-visible{background-color:var(--theme-btn-invisible-primary--background);color:var(--theme-btn-invisible-primary--color);--ix-button-color:var(--theme-btn-invisible-primary--color);border-color:transparent}:host .btn-invisible-primary:not(.disabled):not(:disabled):focus-visible{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-btn--focus--outline-offset)}:host .btn-invisible-primary.selected{background-color:var(--theme-color-ghost--selected);color:var(--theme-color-dynamic)}:host .btn-invisible-primary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-primary.selected:not(.disabled):not(:disabled):hover{background-color:var(--theme-color-ghost--selected-hover);color:var(--theme-color-dynamic)}:host .btn-invisible-primary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-primary.selected:not(.disabled):not(:disabled):active,:host .btn-invisible-primary.selected:not(.disabled):not(:disabled).active{background-color:var(--theme-color-ghost--selected-active);color:var(--theme-color-dynamic)}:host .btn-invisible-primary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-primary:not(.disabled):not(:disabled):hover{background-color:var(--theme-btn-invisible-primary--background--hover);color:var(--theme-btn-invisible-primary--color--hover)}:host .btn-invisible-primary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-primary:not(.disabled):not(:disabled):active,:host .btn-invisible-primary:not(.disabled):not(:disabled).active{background-color:var(--theme-btn-invisible-primary--background--active);color:var(--theme-btn-invisible-primary--color--active)}:host(.disabled){pointer-events:none}:host(.disabled) .btn-invisible-primary.disabled,:host(.disabled) .btn-invisible-primary:disabled{pointer-events:none;background-color:var(--theme-btn-invisible-primary--background--disabled);color:var(--theme-btn-invisible-primary--color--disabled);opacity:1;--ix-button-color:var(--theme-btn-invisible-primary--color--disabled)}:host .btn-secondary{border-radius:var(--theme-btn--border-radius)}:host .btn-secondary,:host .btn-secondary.focus,:host .btn-secondary:focus-visible{background-color:var(--theme-btn-secondary--background);color:var(--theme-btn-secondary--color);--ix-button-color:var(--theme-btn-secondary--color);border-width:var(--theme-btn--border-thickness);border-color:var(--theme-btn-secondary--border-color);border-style:solid}:host .btn-secondary:not(.disabled):not(:disabled):focus-visible{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-btn--focus--outline-offset)}:host .btn-secondary.selected{background-color:var(--theme-color-ghost--selected);color:var(--theme-color-dynamic)}:host .btn-secondary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-secondary.selected:not(.disabled):not(:disabled):hover{background-color:var(--theme-color-ghost--selected-hover);color:var(--theme-color-dynamic)}:host .btn-secondary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-secondary.selected:not(.disabled):not(:disabled):active,:host .btn-secondary.selected:not(.disabled):not(:disabled).active{background-color:var(--theme-color-ghost--selected-active);color:var(--theme-color-dynamic)}:host .btn-secondary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-secondary:not(.disabled):not(:disabled):hover{border-color:var(--theme-btn-secondary--border-color--hover);background-color:var(--theme-btn-secondary--background--hover);color:var(--theme-btn-secondary--color--hover)}:host .btn-secondary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-secondary:not(.disabled):not(:disabled):active,:host .btn-secondary:not(.disabled):not(:disabled).active{border-color:var(--theme-btn-secondary--border-color--active);background-color:var(--theme-btn-secondary--background--active);color:var(--theme-btn-secondary--color--active)}:host(.disabled){pointer-events:none}:host(.disabled) .btn-secondary.disabled,:host(.disabled) .btn-secondary:disabled{pointer-events:none;border-color:var(--theme-btn-secondary--border-color--disabled);background-color:var(--theme-btn-secondary--background--disabled);color:var(--theme-btn-secondary--color--disabled);opacity:1;--ix-button-color:var(--theme-btn-secondary--color--disabled)}:host .btn-outline-secondary{border-radius:var(--theme-btn--border-radius)}:host .btn-outline-secondary,:host .btn-outline-secondary.focus,:host .btn-outline-secondary:focus-visible{background-color:var(--theme-btn-outline-secondary--background);color:var(--theme-btn-outline-secondary--color);--ix-button-color:var(--theme-btn-outline-secondary--color);border-width:var(--theme-btn--border-thickness);border-color:var(--theme-btn-outline-secondary--border-color);border-style:solid}:host .btn-outline-secondary:not(.disabled):not(:disabled):focus-visible{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-btn--focus--outline-offset)}:host .btn-outline-secondary.selected{background-color:var(--theme-color-ghost--selected);color:var(--theme-color-dynamic)}:host .btn-outline-secondary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-secondary.selected:not(.disabled):not(:disabled):hover{background-color:var(--theme-color-ghost--selected-hover);color:var(--theme-color-dynamic)}:host .btn-outline-secondary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-secondary.selected:not(.disabled):not(:disabled):active,:host .btn-outline-secondary.selected:not(.disabled):not(:disabled).active{background-color:var(--theme-color-ghost--selected-active);color:var(--theme-color-dynamic)}:host .btn-outline-secondary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-secondary:not(.disabled):not(:disabled):hover{border-color:var(--theme-btn-outline-secondary--border-color--hover);background-color:var(--theme-btn-outline-secondary--background--hover);color:var(--theme-btn-outline-secondary--color--hover)}:host .btn-outline-secondary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-outline-secondary:not(.disabled):not(:disabled):active,:host .btn-outline-secondary:not(.disabled):not(:disabled).active{border-color:var(--theme-btn-outline-secondary--border-color--active);background-color:var(--theme-btn-outline-secondary--background--active);color:var(--theme-btn-outline-secondary--color--active)}:host(.disabled){pointer-events:none}:host(.disabled) .btn-outline-secondary.disabled,:host(.disabled) .btn-outline-secondary:disabled{pointer-events:none;border-color:var(--theme-btn-outline-secondary--border-color--disabled);background-color:var(--theme-btn-outline-secondary--background--disabled);color:var(--theme-btn-outline-secondary--color--disabled);opacity:1;--ix-button-color:var(--theme-btn-outline-secondary--color--disabled)}:host .btn-invisible-secondary{border-radius:var(--theme-btn--border-radius)}:host .btn-invisible-secondary,:host .btn-invisible-secondary.focus,:host .btn-invisible-secondary:focus-visible{background-color:var(--theme-btn-invisible-secondary--background);color:var(--theme-btn-invisible-secondary--color);--ix-button-color:var(--theme-btn-invisible-secondary--color);border-color:transparent}:host .btn-invisible-secondary:not(.disabled):not(:disabled):focus-visible{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-btn--focus--outline-offset)}:host .btn-invisible-secondary.selected{background-color:var(--theme-color-ghost--selected);color:var(--theme-color-dynamic)}:host .btn-invisible-secondary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-secondary.selected:not(.disabled):not(:disabled):hover{background-color:var(--theme-color-ghost--selected-hover);color:var(--theme-color-dynamic)}:host .btn-invisible-secondary.selected:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-secondary.selected:not(.disabled):not(:disabled):active,:host .btn-invisible-secondary.selected:not(.disabled):not(:disabled).active{background-color:var(--theme-color-ghost--selected-active);color:var(--theme-color-dynamic)}:host .btn-invisible-secondary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-secondary:not(.disabled):not(:disabled):hover{background-color:var(--theme-btn-invisible-secondary--background--hover);color:var(--theme-btn-invisible-secondary--color--hover)}:host .btn-invisible-secondary:not(.disabled):not(:disabled){cursor:pointer}:host .btn-invisible-secondary:not(.disabled):not(:disabled):active,:host .btn-invisible-secondary:not(.disabled):not(:disabled).active{background-color:var(--theme-btn-invisible-secondary--background--active);color:var(--theme-btn-invisible-secondary--color--active)}:host(.disabled){pointer-events:none}:host(.disabled) .btn-invisible-secondary.disabled,:host(.disabled) .btn-invisible-secondary:disabled{pointer-events:none;background-color:var(--theme-btn-invisible-secondary--background--disabled);color:var(--theme-btn-invisible-secondary--color--disabled);opacity:1;--ix-button-color:var(--theme-btn-invisible-secondary--color--disabled)}:host{min-width:5rem}.dropdown-group{margin:0.687rem;display:block;position:relative;width:21.562rem;border-radius:0.25rem;background-color:#f8f9fa;border:solid 0.062rem rgba(0, 0, 0, 0.25)}.dropdown-group .dropdown-group-title{display:block;position:relative;font-size:0.875rem;text-align:left;margin:0.937rem 0 1.25rem 0.937rem}.dropdown-group .dropdown-group-content{position:relative;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:11.562rem;margin:0.937rem 0 0.937rem 0.937rem}.dropdown-group .dropdown-group-content>*{margin-bottom:1rem}.dropdown-group-submit{display:flex;justify-content:space-between;margin:0 0.687rem 0 0.687rem}.dropdown-menu{position:absolute;background-color:var(--theme-menu--background);-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;font-family:Siemens Sans, sans-serif;font-size:0.875rem;font-weight:400;line-height:1.143em;color:var(--theme-color-std-text);border:var(--theme-menu--border-thickness) solid var(--theme-menu--border--color);border-radius:var(--theme-menu--border-radius);max-width:100vw;padding:0.25rem 0;transition:background-color 150ms;box-shadow:var(--theme-menu--box-shadow)}.dropdown-menu.xl>.dropdown-item{height:2.5rem;line-height:2.187rem}.dropdown-header{display:flex;align-items:center;height:2.5rem;color:var(--theme-menu-header--color);padding:0 1rem}.dropdown-buttons{display:flex;padding:0.25rem 0.5rem}.dropdown-buttons ix-icon-button+ix-icon-button{-webkit-margin-start:0.5rem;margin-inline-start:0.5rem}.dropdown-item{display:flex;height:2.5rem;position:relative;align-items:center;cursor:pointer;padding:0 2rem;border:1px solid transparent;color:var(--theme-menu-item--color);background-color:transparent}.dropdown-item:focus-visible{background-color:var(--theme-menu-item--background);color:var(--theme-menu-item--color)}.dropdown-item:focus-visible{outline:none;background-color:var(--theme-menu-item--background);border-color:#119fff;color:var(--theme-menu-item--color--focus)}.dropdown-item:not(.disabled):not(:disabled){cursor:pointer}.dropdown-item:not(.disabled):not(:disabled):hover{color:var(--theme-menu-item--color--hover);background-color:var(--theme-menu-item--background--hover)}.dropdown-item:not(.disabled):not(:disabled){cursor:pointer}.dropdown-item:not(.disabled):not(:disabled):active,.dropdown-item:not(.disabled):not(:disabled).active{color:var(--theme-menu-item--color--active);background-color:var(--theme-menu-item--background--active)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--theme-menu-item--color--disabled);background-color:var(--theme-menu-item--background--disabled)}.dropdown-item>a,.dropdown-item a:hover,.dropdown-item a:active{color:var(--theme-color-std-text)}.dropdown-item>.glyph{color:var(--theme-menu-item-icon--color);-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}.dropdown-item>.glyph.disabled{color:var(--color-weak-text)}.dropdown-item>.glyph.glyph-single-check{color:var(--theme-menu-item-icon-check--color)}.dropdown-item>input[type=checkbox]+label{margin-bottom:0px}.dropdown-item>input[type=checkbox]+label::before{margin-right:1rem}.dropdown-divider{border-top:1px solid var(--theme-menu-separator--background);margin:0.25rem 0}button.dropdown-toggle{position:relative;padding-right:1.5rem}button.dropdown-toggle::after{position:absolute;top:45%;right:0.5rem}.form-control,.form-control-plaintext{-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;font-family:Siemens Sans, sans-serif;font-size:0.875rem;font-weight:400;line-height:1.429em;color:var(--theme-color-std-text);color:var(--theme-input--color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--theme-input--border-radius);height:2rem;min-height:2rem;min-width:2rem;background-color:var(--theme-input--background);border:solid 1px var(--theme-input--border-color);box-shadow:var(--theme-input--box-shadow);-webkit-padding-start:0.5rem;padding-inline-start:0.5rem;-webkit-padding-end:0.5rem;padding-inline-end:0.5rem}.form-control::-moz-placeholder,.form-control-plaintext::-moz-placeholder{color:var(--theme-input-hint--color)}.form-control::placeholder,.form-control-plaintext::placeholder{color:var(--theme-input-hint--color)}.form-control:not(:-moz-read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled),.form-control-plaintext:not(:-moz-read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled){cursor:pointer}.form-control:not(:read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled),.form-control-plaintext:not(:read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled){cursor:pointer}.form-control:not(:-moz-read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):hover,.form-control-plaintext:not(:-moz-read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):hover{background-color:var(--theme-input--background--hover);border-color:var(--theme-input--border-color--hover);cursor:auto}.form-control:not(:read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):hover,.form-control-plaintext:not(:read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):hover{background-color:var(--theme-input--background--hover);border-color:var(--theme-input--border-color--hover);cursor:auto}.form-control:not(:-moz-read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):focus-visible,.form-control-plaintext:not(:-moz-read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):focus-visible{background-color:var(--theme-input--background--focus);border-color:var(--theme-input--border-color--focus);outline-offset:var(--theme-input--focus--outline-offset);box-shadow:var(--theme-input--box-shadow);outline:1px solid var(--theme-color-focus-bdr)}.form-control:not(:read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):focus-visible,.form-control-plaintext:not(:read-only):not([readonly]):not([readOnly]):not(.readonly):not(.disabled):not(:disabled):focus-visible{background-color:var(--theme-input--background--focus);border-color:var(--theme-input--border-color--focus);outline-offset:var(--theme-input--focus--outline-offset);box-shadow:var(--theme-input--box-shadow);outline:1px solid var(--theme-color-focus-bdr)}.form-control:focus-visible{color:var(--theme-input--color)}.form-control[type=number]{text-align:right}.form-control[type=number]::-webkit-inner-spin-button{margin-right:-2px;margin-left:2px;display:none}.form-control.readonly,.form-control[readonly]{background:transparent !important;-webkit-border-before:none !important;border-block-start:none !important;-webkit-border-start:none !important;border-inline-start:none !important;-webkit-border-end:none !important;border-inline-end:none !important;border-radius:0rem}.form-control:-moz-read-only{box-shadow:none !important;outline:none !important;border-color:var(--theme-input--border-color);cursor:default !important}.form-control:read-only,.form-control[readonly],.form-control[readOnly],.form-control.readonly{box-shadow:none !important;outline:none !important;border-color:var(--theme-input--border-color);cursor:default !important}.form-control:read-only::-moz-placeholder,.form-control[readonly]::-moz-placeholder,.form-control[readOnly]::-moz-placeholder,.form-control.readonly::-moz-placeholder{color:transparent}.form-control:-moz-read-only::placeholder{color:transparent}.form-control:read-only::placeholder,.form-control[readonly]::placeholder,.form-control[readOnly]::placeholder,.form-control.readonly::placeholder{color:transparent}.form-control:disabled,.form-control.disabled{background:transparent !important;-webkit-border-before:none !important;border-block-start:none !important;-webkit-border-start:none !important;border-inline-start:none !important;-webkit-border-end:none !important;border-inline-end:none !important;border-radius:0rem;color:var(--theme-color-weak-text);border-color:var(--theme-input--border-color-bottom--disabled)}.form-control:disabled::-moz-placeholder,.form-control.disabled::-moz-placeholder{color:transparent}.form-control:disabled::placeholder,.form-control.disabled::placeholder{color:transparent}.form-control-plaintext{outline:0}.form-group{position:relative}.input-wrapper{display:flex;position:relative;align-items:center;flex-wrap:nowrap}.input-wrapper>.glyph{display:block;position:absolute;-webkit-margin-start:0.312rem;margin-inline-start:0.312rem;color:var(--theme-color-std-text)}.input-wrapper>input{-webkit-padding-start:2.2rem;padding-inline-start:2.2rem}select.form-control{padding:0 0.312rem}textarea.form-control{padding:0.375rem 0.5rem}.was-validated .form-control:invalid,.was-validated .is-invalid{background-color:var(--theme-input-error--background);background-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='512px' height='512px' viewBox='0 0 512 512' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3C!-- Generator: sketchtool 62 (101010) - https://sketch.com --%3E%3Ctitle%3Eerror%3C/title%3E%3Cdesc%3ECreated with sketchtool.%3C/desc%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0.75'%3E%3Cg id='error' fill='%23ff2640'%3E%3Cg id='error/error'%3E%3Cpath d='M256,42.6666667 C373.626371,42.6666667 469.333333,138.373627 469.333333,256 C469.333333,373.626371 373.626371,469.333333 256,469.333333 C138.373627,469.333333 42.6666667,373.626371 42.6666667,256 C42.6666667,138.373627 138.373627,42.6666667 256,42.6666667 Z M256,85.3333333 C161.559631,85.3333333 85.3333333,161.559631 85.3333333,256 C85.3333333,350.44037 161.559631,426.666667 256,426.666667 C350.44037,426.666667 426.666667,350.44037 426.666667,256 C426.666667,161.559631 350.44037,85.3333333 256,85.3333333 Z M326.248389,155.581722 L356.418278,185.751611 L286.168667,255.999667 L356.418278,326.248389 L326.248389,356.418278 L255.999667,286.168667 L185.751611,356.418278 L155.581722,326.248389 L225.829667,255.999667 L155.581722,185.751611 L185.751611,155.581722 L255.999667,225.829667 L326.248389,155.581722 Z' id='Combined-Shape'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\") !important;background-position:left calc(0.375em + 0.1875rem) center !important;padding-right:0.75rem;padding-left:calc(1.5em + 0.75rem);background-size:18px;background-repeat:no-repeat}input.disabled,input:disabled{color:var(--theme-input--color--disabled)}input:-moz-read-only{cursor:default}input:read-only,input.readonly{cursor:default}label{color:var(--theme-color-soft-text);padding:2px 0px}label.label-alignment-left{padding:6px 0px}input,input:-webkit-autofill{font-feature-settings:\"clig\" off, \"liga\" off;font-family:Siemens Sans, Siemens Sans, Arial, Helvetica, sans-serif;font-style:normal;font-size:var(--theme-ms-0);line-height:var(--theme-line-height-md);font-weight:var(--theme-font-weight-normal);letter-spacing:var(--theme-letter-spacing-xl);text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;min-height:2rem;width:100%;padding:0.25rem 0.5rem;background-color:var(--theme-input--background);color:var(--theme-input--color);border:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);border-radius:var(--theme-input--border-radius);box-shadow:var(--theme-input--box-shadow)}input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--theme-input--background) inset !important;-webkit-text-fill-color:var(--theme-input--color) !important;border-color:var(--theme-input--border-color) !important}input::-moz-placeholder{color:var(--theme-input-hint--color)}input::placeholder{color:var(--theme-input-hint--color)}input.hover,input:hover{border-color:var(--theme-input--border-color--hover);background-color:var(--theme-input--background--hover)}input.focus,input:focus{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-input--focus--outline-offset);border-color:var(--theme-input--border-color--focus)}input:-moz-read-only{box-shadow:none;background-color:transparent;outline:none;border:none;border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--readonly)}input.read-only,input:read-only{box-shadow:none;background-color:transparent;outline:none;border:none;border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--readonly)}input.read-only::-moz-placeholder,input:read-only::-moz-placeholder{color:transparent}input:-moz-read-only::placeholder{color:transparent}input.read-only::placeholder,input:read-only::placeholder{color:transparent}input:disabled{box-shadow:none;background-color:transparent;outline:none;border:none;color:var(--theme-input--color--disabled);border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--disabled)}input:disabled::-moz-placeholder{color:transparent}input:disabled::placeholder{color:transparent}input[type=number]{text-align:right}input[type=number]::-webkit-inner-spin-button{margin-right:-2px;margin-left:2px;display:none}textarea{height:3.25rem;padding:0.375rem 1.25rem 0.375rem 0.5rem}textarea,textarea:-webkit-autofill{font-feature-settings:\"clig\" off, \"liga\" off;font-family:Siemens Sans, Siemens Sans, Arial, Helvetica, sans-serif;font-style:normal;font-size:var(--theme-ms-0);line-height:var(--theme-line-height-md);font-weight:var(--theme-font-weight-normal);letter-spacing:var(--theme-letter-spacing-xl);text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;min-height:2rem;width:100%;padding:0.25rem 0.5rem;background-color:var(--theme-input--background);color:var(--theme-input--color);border:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);border-radius:var(--theme-input--border-radius);box-shadow:var(--theme-input--box-shadow)}textarea:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--theme-input--background) inset !important;-webkit-text-fill-color:var(--theme-input--color) !important;border-color:var(--theme-input--border-color) !important}textarea::-moz-placeholder{color:var(--theme-input-hint--color)}textarea::placeholder{color:var(--theme-input-hint--color)}textarea.hover,textarea:hover{border-color:var(--theme-input--border-color--hover);background-color:var(--theme-input--background--hover)}textarea.focus,textarea:focus{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-input--focus--outline-offset);border-color:var(--theme-input--border-color--focus)}textarea:-moz-read-only{box-shadow:none;background-color:transparent;outline:none;border:none;border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--readonly)}textarea.read-only,textarea:read-only{box-shadow:none;background-color:transparent;outline:none;border:none;border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--readonly)}textarea.read-only::-moz-placeholder,textarea:read-only::-moz-placeholder{color:transparent}textarea:-moz-read-only::placeholder{color:transparent}textarea.read-only::placeholder,textarea:read-only::placeholder{color:transparent}textarea:disabled{box-shadow:none;background-color:transparent;outline:none;border:none;color:var(--theme-input--color--disabled);border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--disabled)}textarea:disabled::-moz-placeholder{color:transparent}textarea:disabled::placeholder{color:transparent}textarea~.valid-feedback,textarea~.invalid-feedback,input~.valid-feedback,input~.invalid-feedback{display:none;font-feature-settings:\"clig\" off, \"liga\" off;font-family:Siemens Sans, Siemens Sans, Arial, Helvetica, sans-serif;font-style:normal;font-size:var(--theme-ms-0);line-height:var(--theme-line-height-md);font-weight:var(--theme-font-weight-normal);letter-spacing:var(--theme-letter-spacing-xl);text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale}form textarea~.valid-feedback,form input~.valid-feedback{color:var(--theme-color-success)}form textarea~.invalid-feedback,form input~.invalid-feedback{color:var(--theme-color-alarm-text)}form:not([novalidate]) :invalid,form:not([novalidate]) .is-invalid,form.was-validated :invalid,form.was-validated .is-invalid{background-color:var(--theme-input-error--background);border-color:var(--theme-input-error--border-color);background-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='512px' height='512px' viewBox='0 0 512 512' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3C!-- Generator: sketchtool 62 (101010) - https://sketch.com --%3E%3Ctitle%3Eerror%3C/title%3E%3Cdesc%3ECreated with sketchtool.%3C/desc%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0.75'%3E%3Cg id='error' fill='%23ff2640'%3E%3Cg id='error/error'%3E%3Cpath d='M256,42.6666667 C373.626371,42.6666667 469.333333,138.373627 469.333333,256 C469.333333,373.626371 373.626371,469.333333 256,469.333333 C138.373627,469.333333 42.6666667,373.626371 42.6666667,256 C42.6666667,138.373627 138.373627,42.6666667 256,42.6666667 Z M256,85.3333333 C161.559631,85.3333333 85.3333333,161.559631 85.3333333,256 C85.3333333,350.44037 161.559631,426.666667 256,426.666667 C350.44037,426.666667 426.666667,350.44037 426.666667,256 C426.666667,161.559631 350.44037,85.3333333 256,85.3333333 Z M326.248389,155.581722 L356.418278,185.751611 L286.168667,255.999667 L356.418278,326.248389 L326.248389,356.418278 L255.999667,286.168667 L185.751611,356.418278 L155.581722,326.248389 L225.829667,255.999667 L155.581722,185.751611 L185.751611,155.581722 L255.999667,225.829667 L326.248389,155.581722 Z' id='Combined-Shape'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\") !important;background-position:left calc(0.375em + 0.1875rem) center;padding-right:0.75rem;padding-left:calc(1.5em + 0.75rem);background-size:18px;background-repeat:no-repeat}form:not([novalidate]) :invalid~.invalid-feedback,form:not([novalidate]) .is-invalid~.invalid-feedback,form.was-validated :invalid~.invalid-feedback,form.was-validated .is-invalid~.invalid-feedback{display:block}form:not([novalidate]) :valid~.valid-feedback,form:not([novalidate]) .is-valid~.valid-feedback,form.was-validated :valid~.valid-feedback,form.was-validated .is-valid~.valid-feedback{display:block}:host{display:block;position:relative;height:auto}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host :host(:focus-visible:not(.disabled):not(:disabled)){border-color:var(--theme-color-primary);box-shadow:0 0 0.25rem 0 var(--theme-color-primary) !important}:host .reset-button{position:absolute;top:0.25rem;right:0.25rem}:host .reset-button.hide-reset-button{display:none}:host .input-container{display:flex;height:auto;max-height:3.75rem;padding:1px 1.5rem 1px 2rem !important}:host .input-container:not(.readonly):not(.disabled),:host .input-container:not(.readonly):not(.disabled):-webkit-autofill{font-feature-settings:\"clig\" off, \"liga\" off;font-family:Siemens Sans, Siemens Sans, Arial, Helvetica, sans-serif;font-style:normal;font-size:var(--theme-ms-0);line-height:var(--theme-line-height-md);font-weight:var(--theme-font-weight-normal);letter-spacing:var(--theme-letter-spacing-xl);text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;min-height:2rem;width:100%;padding:0.25rem 0.5rem;background-color:var(--theme-input--background);color:var(--theme-input--color);border:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);border-radius:var(--theme-input--border-radius);box-shadow:var(--theme-input--box-shadow)}:host .input-container:not(.readonly):not(.disabled):-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--theme-input--background) inset !important;-webkit-text-fill-color:var(--theme-input--color) !important;border-color:var(--theme-input--border-color) !important}:host .input-container:not(.readonly):not(.disabled)::-moz-placeholder{color:var(--theme-input-hint--color)}:host .input-container:not(.readonly):not(.disabled)::placeholder{color:var(--theme-input-hint--color)}:host .input-container:not(.readonly):not(.disabled).hover,:host .input-container:not(.readonly):not(.disabled):hover{border-color:var(--theme-input--border-color--hover);background-color:var(--theme-input--background--hover)}:host .input-container:not(.readonly):not(.disabled).focus,:host .input-container:not(.readonly):not(.disabled):focus{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-input--focus--outline-offset);border-color:var(--theme-input--border-color--focus)}:host .input-container:not(.readonly):not(.disabled):disabled{box-shadow:none;background-color:transparent;outline:none;border:none;color:var(--theme-input--color--disabled);border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--disabled)}:host .input-container:not(.readonly):not(.disabled):disabled::-moz-placeholder{color:transparent}:host .input-container:not(.readonly):not(.disabled):disabled::placeholder{color:transparent}:host .input-container.disabled{color:var(--theme-input--color--disabled);border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--disabled)}:host .input-container.readonly,:host .input-container.readonly:-webkit-autofill{font-feature-settings:\"clig\" off, \"liga\" off;font-family:Siemens Sans, Siemens Sans, Arial, Helvetica, sans-serif;font-style:normal;font-size:var(--theme-ms-0);line-height:var(--theme-line-height-md);font-weight:var(--theme-font-weight-normal);letter-spacing:var(--theme-letter-spacing-xl);text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;min-height:2rem;width:100%;padding:0.25rem 0.5rem;background-color:var(--theme-input--background);color:var(--theme-input--color);border:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);border-radius:var(--theme-input--border-radius);box-shadow:var(--theme-input--box-shadow)}:host .input-container.readonly:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--theme-input--background) inset !important;-webkit-text-fill-color:var(--theme-input--color) !important;border-color:var(--theme-input--border-color) !important}:host .input-container.readonly::-moz-placeholder{color:var(--theme-input-hint--color)}:host .input-container.readonly::placeholder{color:var(--theme-input-hint--color)}:host .input-container.readonly.hover,:host .input-container.readonly:hover{border-color:var(--theme-input--border-color--hover);background-color:var(--theme-input--background--hover)}:host .input-container.readonly.focus,:host .input-container.readonly:focus{outline:1px solid var(--theme-color-focus-bdr);outline-offset:var(--theme-input--focus--outline-offset);border-color:var(--theme-input--border-color--focus)}:host .input-container.readonly:-moz-read-only{box-shadow:none;background-color:transparent;outline:none;border:none;border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--readonly)}:host .input-container.readonly.read-only,:host .input-container.readonly:read-only{box-shadow:none;background-color:transparent;outline:none;border:none;border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--readonly)}:host .input-container.readonly.read-only::-moz-placeholder,:host .input-container.readonly:read-only::-moz-placeholder{color:transparent}:host .input-container.readonly:-moz-read-only::placeholder{color:transparent}:host .input-container.readonly.read-only::placeholder,:host .input-container.readonly:read-only::placeholder{color:transparent}:host .input-container.readonly:disabled{box-shadow:none;background-color:transparent;outline:none;border:none;color:var(--theme-input--color--disabled);border-bottom:var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color-bottom--disabled)}:host .input-container.readonly:disabled::-moz-placeholder{color:transparent}:host .input-container.readonly:disabled::placeholder{color:transparent}:host .input-container.no-icon{padding-left:0.25rem}:host .token-container{flex-grow:1;overflow:hidden}:host .text-input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;font-family:Siemens Sans, sans-serif;font-size:0.875rem;font-weight:400;line-height:1.429em;color:var(--theme-color-std-text);width:auto;height:1.75rem;min-height:1.5rem;background:transparent;flex-grow:1;box-shadow:none}:host .text-input,:host .text-input:hover,:host .text-input:focus-visible{border:none;outline:none}:host .text-input.hide-placeholder::-moz-placeholder{opacity:0}:host .text-input.hide-placeholder::placeholder{opacity:0}:host .list-unstyled{display:flex;flex-wrap:wrap;list-style:none;padding:0;margin:0;overflow-y:auto}:host ix-icon{position:absolute;top:0.5rem;left:0.5rem}:host ix-filter-chip{margin-right:0.5rem}:host .category-preview{display:flex;align-items:center;height:1.5rem;background-color:var(--theme-bg-3);border-top-left-radius:1rem;border-bottom-left-radius:1rem;padding:0.5rem;margin:2px 0}:host ul{height:100%}:host ul>li,:host input{padding-top:2px;padding-bottom:2px}:host ix-dropdown{min-width:10rem !important}:host ix-dropdown .dropdown-item-container{display:flex;flex-direction:column}:host ix-dropdown .dropdown-item-container .dropdown-item{-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;font-family:Siemens Sans, sans-serif;font-size:0.875rem;font-weight:400;line-height:1.143em;color:var(--theme-color-std-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:2.5rem;margin:0.25rem 0.5rem;padding-inline:0.5rem;border:1px solid transparent;border-radius:100rem;width:auto;justify-content:flex-start;flex-grow:1}:host ix-dropdown .dropdown-item-container .dropdown-item:not(.disabled):not(:disabled):focus-visible{border-color:var(--theme-color-focus-bdr)}:host ix-dropdown .dropdown-item-container .category-item{border-end-end-radius:0;border-start-end-radius:0}:host ix-dropdown .dropdown-item-container .category-item-value{border-start-start-radius:0;border-end-start-radius:0}:host ix-dropdown .btn-toggle-operator{width:2rem;height:2rem;margin-inline:0.5rem}:host .d-none{display:none}";const s=class{constructor(t){o(this,t);this.categoryChanged=e(this,"categoryChanged",7);this.inputChanged=e(this,"inputChanged",7);this.filterChanged=e(this,"filterChanged",7);this.ID_CUSTOM_FILTER_VALUE="CW_CUSTOM_FILTER_VALUE";this.textInput=undefined;this.hasFocus=undefined;this.categoryLogicalOperator=a.EQUAL;this.inputValue=undefined;this.category=undefined;this.filterTokens=[];this.disabled=false;this.readonly=false;this.filterState=undefined;this.placeholder=undefined;this.categories=undefined;this.nonSelectableCategories={};this.suggestions=undefined;this.icon="search";this.hideIcon=undefined;this.repeatCategories=true;this.tmpDisableScrollIntoView=true;this.labelCategories="Categories";this.i18nPlainText="Filter by text"}watchFilterState(o){this.setFilterState(o)}componentDidLoad(){var o,e;if(this.filterState!==undefined){setTimeout((()=>this.setFilterState(this.filterState)))}(o=this.hostElement)===null||o===void 0?void 0:o.addEventListener("keydown",this.handleFormElementKeyDown.bind(this));(e=this.formElement)===null||e===void 0?void 0:e.addEventListener("submit",(o=>o.preventDefault()));if(this.textInput==null){console.warn("ix-category-filter - unable to add event listeners to native input element");return}this.textInput.addEventListener("focusin",(()=>{this.hasFocus=true}));this.textInput.addEventListener("focusout",(()=>this.hasFocus=false));this.textInput.addEventListener("input",(()=>{this.inputValue=this.textInput.value;const o=new d(this.inputValue,this.category);this.inputChanged.emit(o)}));this.textInput.addEventListener("keydown",this.handleInputElementKeyDown.bind(this))}setFilterState(o){this.filterTokens=[];for(const e of o.tokens){this.addToken(e,this.ID_CUSTOM_FILTER_VALUE,this.categoryLogicalOperator,false)}for(const e of o.categories){this.addToken(e.value,e.id,e.operator,false)}this.emitFilterEvent()}closeDropdown(){if(this.disabled||this.readonly){return}this.hostElement.shadowRoot.querySelector("ix-dropdown").show=false}handleFormElementKeyDown(o){switch(o.code){case"Enter":case"NumpadEnter":if(!document.activeElement.classList.contains("dropdown-item")){return}const e=document.activeElement.getAttribute("data-id");if(this.hasCategorySelection()){if(this.category!==undefined){this.addToken(e,this.category)}else if(document.activeElement.classList.contains("category-item-id")){this.selectCategory(e)}}else{this.addToken(e)}o.preventDefault();break;case"ArrowUp":this.focusPreviousItem();o.preventDefault();break;case"ArrowDown":this.focusNextItem();o.preventDefault();break;case"Escape":this.closeDropdown();break}}focusPreviousItem(){const o=document.activeElement.previousSibling;if(o instanceof HTMLElement){o.focus()}}focusNextItem(){const o=document.activeElement.nextSibling;if(o instanceof HTMLElement){o.focus()}}handleInputElementKeyDown(o){var e;switch(o.code){case"ArrowDown":const t=`.category-item-${this.category!==undefined?"value":"id"}`;let r=this.hostElement.shadowRoot.querySelector(t);if(r instanceof HTMLElement){r.focus();o.stopPropagation()}else if((e=this.suggestions)===null||e===void 0?void 0:e.length){r=this.hostElement.shadowRoot.querySelector(".category-item");if(r instanceof HTMLElement){r.focus();o.stopPropagation()}}break;case"Backspace":if(this.textInput.value!==""){return}if(this.category!==undefined){this.category=undefined;return}const n=this.filterTokens.length;if(n>0){this.removeToken(n-1)}break;case"Enter":case"NumpadEnter":this.addToken(this.inputValue,this.category);o.preventDefault();break}}emitFilterEvent(){const o=this.filterTokens.filter((o=>o.id===this.ID_CUSTOM_FILTER_VALUE)).map((o=>o.value));const e=this.filterTokens.filter((o=>o.id!==this.ID_CUSTOM_FILTER_VALUE));const t={tokens:o,categories:e};this.filterChanged.emit(t)}addToken(o,e=this.ID_CUSTOM_FILTER_VALUE,t=this.categoryLogicalOperator,r=true){if(o===undefined||o===null){return}const n=o.trim();if(n===""){return}if(this.hasToken(n)){return}const i={id:e,value:n,operator:t};this.filterTokens=[...this.filterTokens,i];this.textInput.value="";this.inputValue="";this.categoryLogicalOperator=a.EQUAL;if(this.category!==undefined){this.category=undefined}this.isScrollStateDirty=true;this.textInput.focus();if(r){this.emitFilterEvent()}this.closeDropdown()}removeToken(o){this.filterTokens=this.filterTokens.filter(((e,t)=>t!==o));this.emitFilterEvent()}getCategoryIds(){const o=[];for(const e in this.categories){if(Object.prototype.hasOwnProperty.call(this.categories,e)){o.push(e)}}return o}selectCategory(o){this.category=o;this.textInput.value="";this.inputValue="";this.textInput.focus();this.categoryChanged.emit(o)}resetFilter(){this.closeDropdown();this.filterTokens=[];this.emitFilterEvent()}filterMultiples(o){if(this.repeatCategories){return true}const e=this.filterTokens.find((e=>e.id===o));return!e}hasToken(o){return this.filterTokens.some((e=>{const t=e.value===o;if(!t){return false}if(this.category!==undefined){return this.category===e.id}if(e.id){return e.id===this.ID_CUSTOM_FILTER_VALUE}return t}))}filterDuplicateTokens(o){return!this.hasToken(o)}filterByInput(o){if(this.inputValue===undefined||this.inputValue===""){return true}return o.toLowerCase().indexOf(this.inputValue.toLowerCase())!==-1}toggleCategoryOperator(){switch(this.categoryLogicalOperator){case a.EQUAL:this.categoryLogicalOperator=a.NOT_EQUAL;break;case a.NOT_EQUAL:this.categoryLogicalOperator=a.EQUAL;break}}getFilterChipLabel(o){var e,t,r;if(o.id===this.ID_CUSTOM_FILTER_VALUE){return o.value}const n=o.operator===a.EQUAL?"=":"!=";const i=(r=(t=(e=this.categories[o.id])===null||e===void 0?void 0:e.label)!==null&&t!==void 0?t:this.nonSelectableCategories[o.id])!==null&&r!==void 0?r:o.id;return`${i} ${n} ${o.value}`}getFilteredSuggestions(){var o,e;if(!((o=this.suggestions)===null||o===void 0?void 0:o.length)){return[]}return(e=this.suggestions)===null||e===void 0?void 0:e.filter((o=>this.filterByInput(o))).filter((o=>this.filterDuplicateTokens(o)))}hasCategorySelection(){return this.categories!==undefined}renderPlainSuggestions(){return t("div",{class:"dropdown-item-container"},this.getFilteredSuggestions().map((o=>t("button",{class:"dropdown-item","data-id":o,onClick:()=>this.addToken(o),key:o,title:o},o))))}renderOperatorButton(){const o={type:"button",variant:"secondary",outline:false,ghost:true,iconOnly:true,iconOval:false,selected:false,disabled:this.disabled,loading:false,icon:"",onClick:o=>{o.stopPropagation();this.toggleCategoryOperator()},extraClasses:{"btn-icon-32":true,"btn-toggle-operator":true}};return t(i,Object.assign({},o),this.categoryLogicalOperator===a.NOT_EQUAL?"=":"!=")}renderCategoryValues(){var o,e;return t("div",{class:"dropdown-item-container"},this.renderOperatorButton(),t("div",{class:"dropdown-header"},(o=this.categories[this.category])===null||o===void 0?void 0:o.label),(e=this.categories[this.category])===null||e===void 0?void 0:e.options.filter((o=>this.filterByInput(o))).filter((o=>this.filterDuplicateTokens(o))).map((o=>t("button",{class:"dropdown-item category-item-value","data-id":o,title:o,key:o,onClick:()=>this.addToken(o,this.category)},`${this.categoryLogicalOperator===a.EQUAL?"=":"!="} ${o}`))))}renderDropdownContent(){if(this.hasCategorySelection()){if(this.category!==undefined){return this.renderCategoryValues()}else{return this.renderCategorySelection()}}else return this.renderPlainSuggestions()}renderCategorySelection(){var o;return t("div",{class:"dropdown-item-container"},(o=this.getCategoryIds())===null||o===void 0?void 0:o.filter((o=>this.filterByInput(this.categories[o].label))).filter((o=>this.filterMultiples(o))).map((o=>{var e;return t("button",{class:"dropdown-item category-item category-item-id","data-id":o,title:this.categories[o].label,key:o,onClick:e=>{e.preventDefault();this.selectCategory(o)},tabindex:"0"},(e=this.categories[o])===null||e===void 0?void 0:e.label)})))}getDropdownHeader(){if(this.categories!==undefined){if(this.category!==undefined){return null}else{return this.labelCategories}}return this.i18nPlainText}componentDidRender(){if(this.isScrollStateDirty){if(!this.tmpDisableScrollIntoView){this.textInput.scrollIntoView()}this.isScrollStateDirty=false}}getResetButton(){return t("ix-icon-button",{onClick:()=>this.resetFilter(),class:{"reset-button":true,"hide-reset-button":!this.filterTokens.length&&this.category===undefined},ghost:true,oval:true,icon:"clear",size:"16"})}getIconColor(){if(this.disabled){return"color-componentn-1"}if(this.readonly){return"color-std-txt"}return"color-primary"}render(){var o;return t(r,null,t("form",{ref:o=>this.formElement=o},t("div",{"read-only":this.readonly,class:{"input-container":true,disabled:this.disabled,focus:this.hasFocus,readonly:this.readonly,"no-icon":this.hideIcon}},t("ix-icon",{color:this.getIconColor(),class:{"d-none":this.hideIcon},name:this.icon,size:"16"}),t("div",{class:"token-container"},t("ul",{class:"list-unstyled"},this.filterTokens.map(((o,e)=>t("li",{key:o.toString(),class:{animate__animated:true,animate__fadein:true}},t("ix-filter-chip",{disabled:this.disabled,readonly:this.readonly,onCloseClick:()=>this.removeToken(e)},this.getFilterChipLabel(o))))),this.categories===undefined?"":t("li",{class:{"category-preview":true,"d-none":this.category===undefined}},(o=this.categories[this.category])===null||o===void 0?void 0:o.label),t("input",{class:{"text-input":true,"hide-placeholder":this.readonly||this.disabled||this.category!==undefined},disabled:this.disabled,readonly:this.readonly,ref:o=>this.textInput=o,type:"text",placeholder:this.placeholder}))),this.getResetButton())),this.disabled||this.readonly?"":t("ix-dropdown",{closeBehavior:"outside",offset:{mainAxis:2},trigger:this.textInput,triggerEvent:["click","focus"],header:this.getDropdownHeader()},this.renderDropdownContent()))}get hostElement(){return n(this)}static get watchers(){return{filterState:["watchFilterState"]}}};s.style=l;export{s as ix_category_filter};
|
|
2
|
+
//# sourceMappingURL=p-9249df8d.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["categoryFilterCss","CategoryFilter","this","ID_CUSTOM_FILTER_VALUE","LogicalFilterOperator","EQUAL","watchFilterState","newValue","setFilterState","componentDidLoad","filterState","undefined","setTimeout","_a","hostElement","addEventListener","handleFormElementKeyDown","bind","_b","formElement","e","preventDefault","textInput","console","warn","hasFocus","inputValue","value","inputState","InputState","category","inputChanged","emit","handleInputElementKeyDown","state","filterTokens","token","tokens","addToken","categoryLogicalOperator","categories","id","operator","emitFilterEvent","closeDropdown","disabled","readonly","shadowRoot","querySelector","show","code","document","activeElement","classList","contains","getAttribute","hasCategorySelection","selectCategory","focusPreviousItem","focusNextItem","sibling","previousSibling","HTMLElement","focus","nextSibling","selector","item","stopPropagation","suggestions","length","tokenCount","removeToken","filter","map","filterChanged","emitEvent","newToken","trim","hasToken","pair","isScrollStateDirty","index","_","i","getCategoryIds","ids","Object","prototype","hasOwnProperty","call","push","categoryChanged","resetFilter","filterMultiples","repeatCategories","isCategoryAlreadySet","find","some","filterToken","hasSameValue","filterDuplicateTokens","filterByInput","toLowerCase","indexOf","toggleCategoryOperator","NOT_EQUAL","getFilterChipLabel","operatorString","label","_c","nonSelectableCategories","getFilteredSuggestions","renderPlainSuggestions","h","class","suggestion","onClick","key","title","renderOperatorButton","params","type","variant","outline","ghost","iconOnly","iconOval","selected","loading","icon","extraClasses","BaseButton","assign","renderCategoryValues","options","renderDropdownContent","renderCategorySelection","tabindex","getDropdownHeader","labelCategories","i18nPlainText","componentDidRender","tmpDisableScrollIntoView","scrollIntoView","getResetButton","oval","size","getIconColor","render","Host","ref","el","hideIcon","color","name","toString","animate__animated","animate__fadein","onCloseClick","placeholder","closeBehavior","offset","mainAxis","trigger","triggerEvent","header"],"sources":["./src/components/category-filter/category-filter.scss?tag=ix-category-filter&encapsulation=shadow","./src/components/category-filter/category-filter.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'common-variables';\n@import 'legacy/mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/shadows';\n@import 'mixins/shadow-dom/component';\n@import 'mixins/text-truncation';\n@import '../button/button';\n@import 'legacy/components/dropdown';\n@import 'legacy/components/forms';\n@import 'components/form/input';\n\n:host {\n @include ix-component;\n\n display: block;\n position: relative;\n height: auto;\n\n @include host-focus-visible {\n border-color: var(--theme-color-primary);\n box-shadow: 0 0 $tiny-space 0 var(--theme-color-primary) !important;\n }\n\n .reset-button {\n position: absolute;\n top: $tiny-space;\n right: $tiny-space;\n }\n\n .reset-button.hide-reset-button {\n display: none;\n }\n\n .input-container {\n &:not(.readonly):not(.disabled) {\n @include element-input('false');\n }\n\n &.disabled {\n color: var(--theme-input--color--disabled);\n border-bottom: var(--theme-input--border-thickness, 1px) solid\n var(--theme-input--border-color-bottom--disabled);\n }\n\n &.readonly {\n @include element-input;\n }\n\n display: flex;\n height: auto;\n max-height: 3.75rem;\n padding: 1px $large-space 1px $x-large-space !important;\n\n &.no-icon {\n padding-left: $tiny-space;\n }\n }\n\n .token-container {\n flex-grow: 1;\n overflow: hidden;\n }\n\n .text-input {\n @include ellipsis;\n @include text-default;\n width: auto;\n height: 1.75rem;\n min-height: $large-space;\n background: transparent;\n flex-grow: 1;\n box-shadow: none;\n\n &,\n &:hover,\n &:focus-visible {\n border: none;\n outline: none;\n }\n\n &.hide-placeholder::placeholder {\n opacity: 0;\n }\n }\n\n .list-unstyled {\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n }\n\n ix-icon {\n position: absolute;\n top: $small-space;\n left: $small-space;\n }\n\n ix-filter-chip {\n margin-right: $small-space;\n }\n\n .category-preview {\n display: flex;\n align-items: center;\n height: $large-space;\n background-color: var(--theme-bg-3);\n border-top-left-radius: $default-space;\n border-bottom-left-radius: $default-space;\n padding: $small-space;\n margin: 2px 0;\n }\n\n ul {\n height: 100%;\n }\n\n ul > li,\n input {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n\n ix-dropdown {\n min-width: 10rem !important;\n\n .dropdown-item-container {\n display: flex;\n flex-direction: column;\n\n .dropdown-item {\n @include text-default-single;\n @include ellipsis;\n @include focus-visible {\n border-color: var(--theme-color-focus-bdr);\n }\n\n height: $large-control-height;\n margin: $tiny-space $small-space;\n padding-inline: $small-space;\n border: 1px solid transparent;\n border-radius: 100rem;\n width: auto;\n justify-content: flex-start;\n flex-grow: 1;\n }\n\n .category-item {\n border-end-end-radius: 0;\n border-start-end-radius: 0;\n }\n\n .category-item-value {\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n }\n\n .btn-toggle-operator {\n width: 2rem;\n height: 2rem;\n margin-inline: $small-space;\n }\n }\n\n .d-none {\n display: none;\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { BaseButton, BaseButtonProps } from '../button/base-button';\nimport { FilterState } from './filter-state';\nimport { InputState } from './input-state';\nimport { LogicalFilterOperator } from './logical-filter-operator';\n\n@Component({\n tag: 'ix-category-filter',\n styleUrl: 'category-filter.scss',\n shadow: true,\n})\nexport class CategoryFilter {\n private readonly ID_CUSTOM_FILTER_VALUE = 'CW_CUSTOM_FILTER_VALUE';\n\n @State() private textInput?: HTMLInputElement;\n private formElement?: HTMLFormElement;\n private isScrollStateDirty: boolean;\n\n @Element() hostElement: HTMLIxCategoryFilterElement;\n\n @State() hasFocus: boolean;\n @State() categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n @State() inputValue: string;\n @State() category: string;\n @State() filterTokens: Array<{\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }> = [];\n\n /**\n * If true the filter will be in disabled state\n */\n @Prop() disabled = false;\n\n /**\n * If true the filter will be in readonly mode\n */\n @Prop() readonly = false;\n\n /**\n * A set of search criteria to populate the component with.\n */\n @Prop() filterState: FilterState;\n\n /**\n * Placeholder text to be displayed in an empty input field.\n */\n @Prop() placeholder: string;\n\n /**\n * Configuration object hash used to populate the dropwdown menu for typeahead and quick selection functionality.\n * Each ID maps to an object with a label and an array of options to select from.\n */\n @Prop() categories: {\n [id: string]: {\n label: string;\n options: string[];\n };\n };\n\n /**\n * In certain use cases some categories may not be available for selection anymore.\n * To allow proper display of set filters with these categories this ID to label mapping can be populated.\n *\n * Configuration object hash used to supply labels to the filter chips in the input field.\n * Each ID maps to a string representing the label to display.\n */\n @Prop() nonSelectableCategories?: {\n [id: string]: string;\n } = {};\n\n /**\n * A list of strings that will be supplied as typeahead suggestions not tied to any categories.\n */\n @Prop() suggestions: string[];\n\n /**\n * The icon next to the actual text input\n * Defaults to 'search'\n */\n @Prop() icon = 'search';\n\n /**\n * Allows to hide the icon inside the text input.\n * Defaults to false\n */\n @Prop() hideIcon: boolean;\n\n /**\n * If set to true allows that a single category can be set more than once.\n * An already set category will not appear in the category dropdown if set to false.\n *\n * Defaults to true\n */\n @Prop() repeatCategories = true;\n\n /**\n * @internal For debugging purposes only!\n */\n @Prop() tmpDisableScrollIntoView = true;\n\n /**\n * i18n\n */\n @Prop() labelCategories = 'Categories';\n\n /**\n * i18n\n */\n @Prop() i18nPlainText = 'Filter by text';\n\n /**\n * Event dispatched whenever the a category gets selected in the dropdown\n */\n @Event() categoryChanged: EventEmitter<string>;\n\n /**\n * Event dispatched whenever the text input changes.\n */\n @Event() inputChanged: EventEmitter<InputState>;\n\n /**\n * Event dispatched whenever the filter state changes.\n */\n @Event() filterChanged: EventEmitter<FilterState>;\n\n @Watch('filterState')\n watchFilterState(newValue) {\n this.setFilterState(newValue);\n }\n\n componentDidLoad() {\n if (this.filterState !== undefined) {\n setTimeout(() => this.setFilterState(this.filterState));\n }\n\n this.hostElement?.addEventListener(\n 'keydown',\n this.handleFormElementKeyDown.bind(this)\n );\n\n this.formElement?.addEventListener('submit', (e) => e.preventDefault());\n\n if (this.textInput == null) {\n console.warn(\n 'ix-category-filter - unable to add event listeners to native input element'\n );\n return;\n }\n\n this.textInput.addEventListener('focusin', () => {\n this.hasFocus = true;\n });\n this.textInput.addEventListener('focusout', () => (this.hasFocus = false));\n this.textInput.addEventListener('input', () => {\n this.inputValue = this.textInput.value;\n const inputState = new InputState(this.inputValue, this.category);\n this.inputChanged.emit(inputState);\n });\n this.textInput.addEventListener(\n 'keydown',\n this.handleInputElementKeyDown.bind(this)\n );\n }\n\n private setFilterState(state: FilterState) {\n this.filterTokens = [];\n\n for (const token of state.tokens) {\n this.addToken(\n token,\n this.ID_CUSTOM_FILTER_VALUE,\n this.categoryLogicalOperator,\n false\n );\n }\n\n for (const category of state.categories) {\n this.addToken(category.value, category.id, category.operator, false);\n }\n\n this.emitFilterEvent();\n }\n\n private closeDropdown() {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.hostElement.shadowRoot.querySelector('ix-dropdown').show = false;\n }\n\n private handleFormElementKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'Enter':\n case 'NumpadEnter':\n if (!document.activeElement.classList.contains('dropdown-item')) {\n return;\n }\n\n const token = document.activeElement.getAttribute('data-id');\n\n if (this.hasCategorySelection()) {\n if (this.category !== undefined) {\n this.addToken(token, this.category);\n } else if (\n document.activeElement.classList.contains('category-item-id')\n ) {\n this.selectCategory(token);\n }\n } else {\n this.addToken(token);\n }\n\n e.preventDefault();\n break;\n\n case 'ArrowUp':\n this.focusPreviousItem();\n e.preventDefault();\n break;\n\n case 'ArrowDown':\n this.focusNextItem();\n e.preventDefault();\n break;\n\n case 'Escape':\n this.closeDropdown();\n break;\n }\n }\n\n private focusPreviousItem() {\n const sibling = document.activeElement.previousSibling;\n if (sibling instanceof HTMLElement) {\n sibling.focus();\n }\n }\n\n private focusNextItem() {\n const sibling = document.activeElement.nextSibling;\n if (sibling instanceof HTMLElement) {\n sibling.focus();\n }\n }\n\n private handleInputElementKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'ArrowDown':\n const selector = `.category-item-${\n this.category !== undefined ? 'value' : 'id'\n }`;\n let item = this.hostElement.shadowRoot.querySelector(selector);\n\n if (item instanceof HTMLElement) {\n item.focus();\n e.stopPropagation();\n } else if (this.suggestions?.length) {\n item = this.hostElement.shadowRoot.querySelector('.category-item');\n if (item instanceof HTMLElement) {\n item.focus();\n e.stopPropagation();\n }\n }\n break;\n\n case 'Backspace':\n if (this.textInput.value !== '') {\n return;\n }\n\n if (this.category !== undefined) {\n this.category = undefined;\n return;\n }\n\n const tokenCount = this.filterTokens.length;\n if (tokenCount > 0) {\n this.removeToken(tokenCount - 1);\n }\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n this.addToken(this.inputValue, this.category);\n e.preventDefault();\n break;\n }\n }\n\n private emitFilterEvent() {\n const tokens = this.filterTokens\n .filter((item) => item.id === this.ID_CUSTOM_FILTER_VALUE)\n .map((item) => item.value);\n const categories = this.filterTokens.filter(\n (item) => item.id !== this.ID_CUSTOM_FILTER_VALUE\n );\n const filterState: FilterState = {\n tokens,\n categories,\n };\n\n this.filterChanged.emit(filterState);\n }\n\n private addToken(\n token: string,\n category: string = this.ID_CUSTOM_FILTER_VALUE,\n operator = this.categoryLogicalOperator,\n emitEvent = true\n ) {\n if (token === undefined || token === null) {\n return;\n }\n\n const newToken = token.trim();\n\n if (newToken === '') {\n return;\n }\n\n if (this.hasToken(newToken)) {\n return;\n }\n\n const pair = { id: category, value: newToken, operator };\n this.filterTokens = [...this.filterTokens, pair];\n this.textInput.value = '';\n this.inputValue = '';\n this.categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n\n if (this.category !== undefined) {\n this.category = undefined;\n }\n\n this.isScrollStateDirty = true;\n\n this.textInput.focus();\n\n if (emitEvent) {\n this.emitFilterEvent();\n }\n\n this.closeDropdown();\n }\n\n private removeToken(index: number) {\n this.filterTokens = this.filterTokens.filter((_, i) => i !== index);\n this.emitFilterEvent();\n }\n\n private getCategoryIds() {\n const ids = [];\n for (const id in this.categories) {\n if (Object.prototype.hasOwnProperty.call(this.categories, id)) {\n ids.push(id);\n }\n }\n\n return ids;\n }\n\n private selectCategory(category: string) {\n this.category = category;\n this.textInput.value = '';\n this.inputValue = '';\n this.textInput.focus();\n this.categoryChanged.emit(category);\n }\n\n private resetFilter() {\n this.closeDropdown();\n this.filterTokens = [];\n this.emitFilterEvent();\n }\n\n private filterMultiples(value: string) {\n if (this.repeatCategories) {\n return true;\n }\n\n const isCategoryAlreadySet = this.filterTokens.find(\n (token) => token.id === value\n );\n\n return !isCategoryAlreadySet;\n }\n\n private hasToken(token: string) {\n return this.filterTokens.some((filterToken) => {\n const hasSameValue = filterToken.value === token;\n\n if (!hasSameValue) {\n return false;\n }\n\n if (this.category !== undefined) {\n return this.category === filterToken.id;\n }\n\n if (filterToken.id) {\n return filterToken.id === this.ID_CUSTOM_FILTER_VALUE;\n }\n\n return hasSameValue;\n });\n }\n\n private filterDuplicateTokens(value: string) {\n return !this.hasToken(value);\n }\n\n private filterByInput(value: string) {\n if (this.inputValue === undefined || this.inputValue === '') {\n return true;\n }\n\n return value.toLowerCase().indexOf(this.inputValue.toLowerCase()) !== -1;\n }\n\n private toggleCategoryOperator() {\n switch (this.categoryLogicalOperator) {\n case LogicalFilterOperator.EQUAL:\n this.categoryLogicalOperator = LogicalFilterOperator.NOT_EQUAL;\n break;\n\n case LogicalFilterOperator.NOT_EQUAL:\n this.categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n break;\n }\n }\n\n private getFilterChipLabel(value: {\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }): string {\n if (value.id === this.ID_CUSTOM_FILTER_VALUE) {\n return value.value;\n }\n\n const operatorString =\n value.operator === LogicalFilterOperator.EQUAL ? '=' : '!=';\n const label =\n this.categories[value.id]?.label ??\n this.nonSelectableCategories[value.id] ??\n value.id;\n\n return `${label} ${operatorString} ${value.value}`;\n }\n\n private getFilteredSuggestions() {\n if (!this.suggestions?.length) {\n return [];\n }\n\n return this.suggestions\n ?.filter((value) => this.filterByInput(value))\n .filter((value) => this.filterDuplicateTokens(value));\n }\n\n private hasCategorySelection() {\n return this.categories !== undefined;\n }\n\n private renderPlainSuggestions() {\n return (\n <div class=\"dropdown-item-container\">\n {this.getFilteredSuggestions().map((suggestion) => (\n <button\n class=\"dropdown-item\"\n data-id={suggestion}\n onClick={() => this.addToken(suggestion)}\n key={suggestion}\n title={suggestion}\n >\n {suggestion}\n </button>\n ))}\n </div>\n );\n }\n\n private renderOperatorButton() {\n const params: BaseButtonProps = {\n type: 'button',\n variant: 'secondary',\n outline: false,\n ghost: true,\n iconOnly: true,\n iconOval: false,\n selected: false,\n disabled: this.disabled,\n loading: false,\n icon: '',\n onClick: (e: Event) => {\n e.stopPropagation();\n this.toggleCategoryOperator();\n },\n extraClasses: {\n 'btn-icon-32': true,\n 'btn-toggle-operator': true,\n },\n };\n\n return (\n <BaseButton {...params}>\n {this.categoryLogicalOperator === LogicalFilterOperator.NOT_EQUAL\n ? '='\n : '!='}\n </BaseButton>\n );\n }\n\n private renderCategoryValues() {\n return (\n <div class=\"dropdown-item-container\">\n {this.renderOperatorButton()}\n <div class=\"dropdown-header\">\n {this.categories[this.category]?.label}\n </div>\n {this.categories[this.category]?.options\n .filter((value) => this.filterByInput(value))\n .filter((value) => this.filterDuplicateTokens(value))\n .map((id) => (\n <button\n class=\"dropdown-item category-item-value\"\n data-id={id}\n title={id}\n key={id}\n onClick={() => this.addToken(id, this.category)}\n >\n {`${\n this.categoryLogicalOperator === LogicalFilterOperator.EQUAL\n ? '='\n : '!='\n } ${id}`}\n </button>\n ))}\n </div>\n );\n }\n\n private renderDropdownContent() {\n if (this.hasCategorySelection()) {\n if (this.category !== undefined) {\n return this.renderCategoryValues();\n } else {\n return this.renderCategorySelection();\n }\n } else return this.renderPlainSuggestions();\n }\n\n private renderCategorySelection() {\n return (\n <div class=\"dropdown-item-container\">\n {this.getCategoryIds()\n ?.filter((id) => this.filterByInput(this.categories[id].label))\n .filter((id) => this.filterMultiples(id))\n .map((id) => (\n <button\n class=\"dropdown-item category-item category-item-id\"\n data-id={id}\n title={this.categories[id].label}\n key={id}\n onClick={(e) => {\n e.preventDefault();\n this.selectCategory(id);\n }}\n tabindex=\"0\"\n >\n {this.categories[id]?.label}\n </button>\n ))}\n </div>\n );\n }\n\n private getDropdownHeader() {\n if (this.categories !== undefined) {\n if (this.category !== undefined) {\n return null;\n } else {\n return this.labelCategories;\n }\n }\n\n return this.i18nPlainText;\n }\n\n componentDidRender() {\n if (this.isScrollStateDirty) {\n if (!this.tmpDisableScrollIntoView) {\n this.textInput.scrollIntoView();\n }\n this.isScrollStateDirty = false;\n }\n }\n\n private getResetButton() {\n return (\n <ix-icon-button\n onClick={() => this.resetFilter()}\n class={{\n 'reset-button': true,\n 'hide-reset-button':\n !this.filterTokens.length && this.category === undefined,\n }}\n ghost\n oval\n icon={'clear'}\n size=\"16\"\n ></ix-icon-button>\n );\n }\n\n private getIconColor() {\n if (this.disabled) {\n return 'color-componentn-1';\n }\n\n if (this.readonly) {\n return 'color-std-txt';\n }\n\n return 'color-primary';\n }\n\n render() {\n return (\n <Host>\n <form ref={(el) => (this.formElement = el)}>\n <div\n read-only={this.readonly}\n class={{\n 'input-container': true,\n disabled: this.disabled,\n focus: this.hasFocus,\n readonly: this.readonly,\n 'no-icon': this.hideIcon,\n }}\n >\n <ix-icon\n color={this.getIconColor()}\n class={{ 'd-none': this.hideIcon }}\n name={this.icon}\n size=\"16\"\n ></ix-icon>\n <div class=\"token-container\">\n <ul class=\"list-unstyled\">\n {this.filterTokens.map((value, index) => (\n <li\n key={value.toString()}\n class={{\n animate__animated: true,\n animate__fadein: true,\n }}\n >\n <ix-filter-chip\n disabled={this.disabled}\n readonly={this.readonly}\n onCloseClick={() => this.removeToken(index)}\n >\n {this.getFilterChipLabel(value)}\n </ix-filter-chip>\n </li>\n ))}\n {this.categories === undefined ? (\n ''\n ) : (\n <li\n class={{\n 'category-preview': true,\n 'd-none': this.category === undefined,\n }}\n >\n {this.categories[this.category]?.label}\n </li>\n )}\n <input\n class={{\n 'text-input': true,\n 'hide-placeholder':\n this.readonly ||\n this.disabled ||\n this.category !== undefined,\n }}\n disabled={this.disabled}\n readonly={this.readonly}\n ref={(el) => (this.textInput = el)}\n type=\"text\"\n placeholder={this.placeholder}\n ></input>\n </ul>\n </div>\n {this.getResetButton()}\n </div>\n </form>\n\n {this.disabled || this.readonly ? (\n ''\n ) : (\n <ix-dropdown\n closeBehavior=\"outside\"\n offset={{ mainAxis: 2 }}\n trigger={this.textInput}\n triggerEvent={['click', 'focus']}\n header={this.getDropdownHeader()}\n >\n {this.renderDropdownContent()}\n </ix-dropdown>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["categoryFilterCss","CategoryFilter","this","ID_CUSTOM_FILTER_VALUE","LogicalFilterOperator","EQUAL","watchFilterState","newValue","setFilterState","componentDidLoad","filterState","undefined","setTimeout","_a","hostElement","addEventListener","handleFormElementKeyDown","bind","_b","formElement","e","preventDefault","textInput","console","warn","hasFocus","inputValue","value","inputState","InputState","category","inputChanged","emit","handleInputElementKeyDown","state","filterTokens","token","tokens","addToken","categoryLogicalOperator","categories","id","operator","emitFilterEvent","closeDropdown","disabled","readonly","shadowRoot","querySelector","show","code","document","activeElement","classList","contains","getAttribute","hasCategorySelection","selectCategory","focusPreviousItem","focusNextItem","sibling","previousSibling","HTMLElement","focus","nextSibling","selector","item","stopPropagation","suggestions","length","tokenCount","removeToken","filter","map","filterChanged","emitEvent","newToken","trim","hasToken","pair","isScrollStateDirty","index","_","i","getCategoryIds","ids","Object","prototype","hasOwnProperty","call","push","categoryChanged","resetFilter","filterMultiples","repeatCategories","isCategoryAlreadySet","find","some","filterToken","hasSameValue","filterDuplicateTokens","filterByInput","toLowerCase","indexOf","toggleCategoryOperator","NOT_EQUAL","getFilterChipLabel","operatorString","label","_c","nonSelectableCategories","getFilteredSuggestions","renderPlainSuggestions","h","class","suggestion","onClick","key","title","renderOperatorButton","params","type","variant","outline","ghost","iconOnly","iconOval","selected","loading","icon","extraClasses","BaseButton","assign","renderCategoryValues","options","renderDropdownContent","renderCategorySelection","tabindex","getDropdownHeader","labelCategories","i18nPlainText","componentDidRender","tmpDisableScrollIntoView","scrollIntoView","getResetButton","oval","size","getIconColor","render","Host","ref","el","hideIcon","color","name","toString","animate__animated","animate__fadein","onCloseClick","placeholder","closeBehavior","offset","mainAxis","trigger","triggerEvent","header"],"sources":["./src/components/category-filter/category-filter.scss?tag=ix-category-filter&encapsulation=shadow","./src/components/category-filter/category-filter.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'common-variables';\n@import 'legacy/mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/shadows';\n@import 'mixins/shadow-dom/component';\n@import 'mixins/text-truncation';\n@import '../button/button';\n@import 'legacy/components/dropdown';\n@import 'legacy/components/forms';\n@import 'components/form/input';\n\n:host {\n @include ix-component;\n\n display: block;\n position: relative;\n height: auto;\n\n @include host-focus-visible {\n border-color: var(--theme-color-primary);\n box-shadow: 0 0 $tiny-space 0 var(--theme-color-primary) !important;\n }\n\n .reset-button {\n position: absolute;\n top: $tiny-space;\n right: $tiny-space;\n }\n\n .reset-button.hide-reset-button {\n display: none;\n }\n\n .input-container {\n &:not(.readonly):not(.disabled) {\n @include element-input('false');\n }\n\n &.disabled {\n color: var(--theme-input--color--disabled);\n border-bottom: var(--theme-input--border-thickness, 1px) solid\n var(--theme-input--border-color-bottom--disabled);\n }\n\n &.readonly {\n @include element-input;\n }\n\n display: flex;\n height: auto;\n max-height: 3.75rem;\n padding: 1px $large-space 1px $x-large-space !important;\n\n &.no-icon {\n padding-left: $tiny-space;\n }\n }\n\n .token-container {\n flex-grow: 1;\n overflow: hidden;\n }\n\n .text-input {\n @include ellipsis;\n @include text-default;\n width: auto;\n height: 1.75rem;\n min-height: $large-space;\n background: transparent;\n flex-grow: 1;\n box-shadow: none;\n\n &,\n &:hover,\n &:focus-visible {\n border: none;\n outline: none;\n }\n\n &.hide-placeholder::placeholder {\n opacity: 0;\n }\n }\n\n .list-unstyled {\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n }\n\n ix-icon {\n position: absolute;\n top: $small-space;\n left: $small-space;\n }\n\n ix-filter-chip {\n margin-right: $small-space;\n }\n\n .category-preview {\n display: flex;\n align-items: center;\n height: $large-space;\n background-color: var(--theme-bg-3);\n border-top-left-radius: $default-space;\n border-bottom-left-radius: $default-space;\n padding: $small-space;\n margin: 2px 0;\n }\n\n ul {\n height: 100%;\n }\n\n ul > li,\n input {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n\n ix-dropdown {\n min-width: 10rem !important;\n\n .dropdown-item-container {\n display: flex;\n flex-direction: column;\n\n .dropdown-item {\n @include text-default-single;\n @include ellipsis;\n @include focus-visible {\n border-color: var(--theme-color-focus-bdr);\n }\n\n height: $large-control-height;\n margin: $tiny-space $small-space;\n padding-inline: $small-space;\n border: 1px solid transparent;\n border-radius: 100rem;\n width: auto;\n justify-content: flex-start;\n flex-grow: 1;\n }\n\n .category-item {\n border-end-end-radius: 0;\n border-start-end-radius: 0;\n }\n\n .category-item-value {\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n }\n\n .btn-toggle-operator {\n width: 2rem;\n height: 2rem;\n margin-inline: $small-space;\n }\n }\n\n .d-none {\n display: none;\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { BaseButton, BaseButtonProps } from '../button/base-button';\nimport { FilterState } from './filter-state';\nimport { InputState } from './input-state';\nimport { LogicalFilterOperator } from './logical-filter-operator';\n\n@Component({\n tag: 'ix-category-filter',\n styleUrl: 'category-filter.scss',\n shadow: true,\n})\nexport class CategoryFilter {\n private readonly ID_CUSTOM_FILTER_VALUE = 'CW_CUSTOM_FILTER_VALUE';\n\n @State() private textInput?: HTMLInputElement;\n private formElement?: HTMLFormElement;\n private isScrollStateDirty: boolean;\n\n @Element() hostElement: HTMLIxCategoryFilterElement;\n\n @State() hasFocus: boolean;\n @State() categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n @State() inputValue: string;\n @State() category: string;\n @State() filterTokens: Array<{\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }> = [];\n\n /**\n * If true the filter will be in disabled state\n */\n @Prop() disabled = false;\n\n /**\n * If true the filter will be in readonly mode\n */\n @Prop() readonly = false;\n\n /**\n * A set of search criteria to populate the component with.\n */\n @Prop() filterState: FilterState;\n\n /**\n * Placeholder text to be displayed in an empty input field.\n */\n @Prop() placeholder: string;\n\n /**\n * Configuration object hash used to populate the dropwdown menu for typeahead and quick selection functionality.\n * Each ID maps to an object with a label and an array of options to select from.\n */\n @Prop() categories: {\n [id: string]: {\n label: string;\n options: string[];\n };\n };\n\n /**\n * In certain use cases some categories may not be available for selection anymore.\n * To allow proper display of set filters with these categories this ID to label mapping can be populated.\n *\n * Configuration object hash used to supply labels to the filter chips in the input field.\n * Each ID maps to a string representing the label to display.\n */\n @Prop() nonSelectableCategories?: {\n [id: string]: string;\n } = {};\n\n /**\n * A list of strings that will be supplied as typeahead suggestions not tied to any categories.\n */\n @Prop() suggestions: string[];\n\n /**\n * The icon next to the actual text input\n * Defaults to 'search'\n */\n @Prop() icon = 'search';\n\n /**\n * Allows to hide the icon inside the text input.\n * Defaults to false\n */\n @Prop() hideIcon: boolean;\n\n /**\n * If set to true allows that a single category can be set more than once.\n * An already set category will not appear in the category dropdown if set to false.\n *\n * Defaults to true\n */\n @Prop() repeatCategories = true;\n\n /**\n * @internal For debugging purposes only!\n */\n @Prop() tmpDisableScrollIntoView = true;\n\n /**\n * i18n\n */\n @Prop() labelCategories = 'Categories';\n\n /**\n * i18n\n */\n @Prop() i18nPlainText = 'Filter by text';\n\n /**\n * Event dispatched whenever the a category gets selected in the dropdown\n */\n @Event() categoryChanged: EventEmitter<string>;\n\n /**\n * Event dispatched whenever the text input changes.\n */\n @Event() inputChanged: EventEmitter<InputState>;\n\n /**\n * Event dispatched whenever the filter state changes.\n */\n @Event() filterChanged: EventEmitter<FilterState>;\n\n @Watch('filterState')\n watchFilterState(newValue) {\n this.setFilterState(newValue);\n }\n\n componentDidLoad() {\n if (this.filterState !== undefined) {\n setTimeout(() => this.setFilterState(this.filterState));\n }\n\n this.hostElement?.addEventListener(\n 'keydown',\n this.handleFormElementKeyDown.bind(this)\n );\n\n this.formElement?.addEventListener('submit', (e) => e.preventDefault());\n\n if (this.textInput == null) {\n console.warn(\n 'ix-category-filter - unable to add event listeners to native input element'\n );\n return;\n }\n\n this.textInput.addEventListener('focusin', () => {\n this.hasFocus = true;\n });\n this.textInput.addEventListener('focusout', () => (this.hasFocus = false));\n this.textInput.addEventListener('input', () => {\n this.inputValue = this.textInput.value;\n const inputState = new InputState(this.inputValue, this.category);\n this.inputChanged.emit(inputState);\n });\n this.textInput.addEventListener(\n 'keydown',\n this.handleInputElementKeyDown.bind(this)\n );\n }\n\n private setFilterState(state: FilterState) {\n this.filterTokens = [];\n\n for (const token of state.tokens) {\n this.addToken(\n token,\n this.ID_CUSTOM_FILTER_VALUE,\n this.categoryLogicalOperator,\n false\n );\n }\n\n for (const category of state.categories) {\n this.addToken(category.value, category.id, category.operator, false);\n }\n\n this.emitFilterEvent();\n }\n\n private closeDropdown() {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.hostElement.shadowRoot.querySelector('ix-dropdown').show = false;\n }\n\n private handleFormElementKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'Enter':\n case 'NumpadEnter':\n if (!document.activeElement.classList.contains('dropdown-item')) {\n return;\n }\n\n const token = document.activeElement.getAttribute('data-id');\n\n if (this.hasCategorySelection()) {\n if (this.category !== undefined) {\n this.addToken(token, this.category);\n } else if (\n document.activeElement.classList.contains('category-item-id')\n ) {\n this.selectCategory(token);\n }\n } else {\n this.addToken(token);\n }\n\n e.preventDefault();\n break;\n\n case 'ArrowUp':\n this.focusPreviousItem();\n e.preventDefault();\n break;\n\n case 'ArrowDown':\n this.focusNextItem();\n e.preventDefault();\n break;\n\n case 'Escape':\n this.closeDropdown();\n break;\n }\n }\n\n private focusPreviousItem() {\n const sibling = document.activeElement.previousSibling;\n if (sibling instanceof HTMLElement) {\n sibling.focus();\n }\n }\n\n private focusNextItem() {\n const sibling = document.activeElement.nextSibling;\n if (sibling instanceof HTMLElement) {\n sibling.focus();\n }\n }\n\n private handleInputElementKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'ArrowDown':\n const selector = `.category-item-${\n this.category !== undefined ? 'value' : 'id'\n }`;\n let item = this.hostElement.shadowRoot.querySelector(selector);\n\n if (item instanceof HTMLElement) {\n item.focus();\n e.stopPropagation();\n } else if (this.suggestions?.length) {\n item = this.hostElement.shadowRoot.querySelector('.category-item');\n if (item instanceof HTMLElement) {\n item.focus();\n e.stopPropagation();\n }\n }\n break;\n\n case 'Backspace':\n if (this.textInput.value !== '') {\n return;\n }\n\n if (this.category !== undefined) {\n this.category = undefined;\n return;\n }\n\n const tokenCount = this.filterTokens.length;\n if (tokenCount > 0) {\n this.removeToken(tokenCount - 1);\n }\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n this.addToken(this.inputValue, this.category);\n e.preventDefault();\n break;\n }\n }\n\n private emitFilterEvent() {\n const tokens = this.filterTokens\n .filter((item) => item.id === this.ID_CUSTOM_FILTER_VALUE)\n .map((item) => item.value);\n const categories = this.filterTokens.filter(\n (item) => item.id !== this.ID_CUSTOM_FILTER_VALUE\n );\n const filterState: FilterState = {\n tokens,\n categories,\n };\n\n this.filterChanged.emit(filterState);\n }\n\n private addToken(\n token: string,\n category: string = this.ID_CUSTOM_FILTER_VALUE,\n operator = this.categoryLogicalOperator,\n emitEvent = true\n ) {\n if (token === undefined || token === null) {\n return;\n }\n\n const newToken = token.trim();\n\n if (newToken === '') {\n return;\n }\n\n if (this.hasToken(newToken)) {\n return;\n }\n\n const pair = { id: category, value: newToken, operator };\n this.filterTokens = [...this.filterTokens, pair];\n this.textInput.value = '';\n this.inputValue = '';\n this.categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n\n if (this.category !== undefined) {\n this.category = undefined;\n }\n\n this.isScrollStateDirty = true;\n\n this.textInput.focus();\n\n if (emitEvent) {\n this.emitFilterEvent();\n }\n\n this.closeDropdown();\n }\n\n private removeToken(index: number) {\n this.filterTokens = this.filterTokens.filter((_, i) => i !== index);\n this.emitFilterEvent();\n }\n\n private getCategoryIds() {\n const ids = [];\n for (const id in this.categories) {\n if (Object.prototype.hasOwnProperty.call(this.categories, id)) {\n ids.push(id);\n }\n }\n\n return ids;\n }\n\n private selectCategory(category: string) {\n this.category = category;\n this.textInput.value = '';\n this.inputValue = '';\n this.textInput.focus();\n this.categoryChanged.emit(category);\n }\n\n private resetFilter() {\n this.closeDropdown();\n this.filterTokens = [];\n this.emitFilterEvent();\n }\n\n private filterMultiples(value: string) {\n if (this.repeatCategories) {\n return true;\n }\n\n const isCategoryAlreadySet = this.filterTokens.find(\n (token) => token.id === value\n );\n\n return !isCategoryAlreadySet;\n }\n\n private hasToken(token: string) {\n return this.filterTokens.some((filterToken) => {\n const hasSameValue = filterToken.value === token;\n\n if (!hasSameValue) {\n return false;\n }\n\n if (this.category !== undefined) {\n return this.category === filterToken.id;\n }\n\n if (filterToken.id) {\n return filterToken.id === this.ID_CUSTOM_FILTER_VALUE;\n }\n\n return hasSameValue;\n });\n }\n\n private filterDuplicateTokens(value: string) {\n return !this.hasToken(value);\n }\n\n private filterByInput(value: string) {\n if (this.inputValue === undefined || this.inputValue === '') {\n return true;\n }\n\n return value.toLowerCase().indexOf(this.inputValue.toLowerCase()) !== -1;\n }\n\n private toggleCategoryOperator() {\n switch (this.categoryLogicalOperator) {\n case LogicalFilterOperator.EQUAL:\n this.categoryLogicalOperator = LogicalFilterOperator.NOT_EQUAL;\n break;\n\n case LogicalFilterOperator.NOT_EQUAL:\n this.categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n break;\n }\n }\n\n private getFilterChipLabel(value: {\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }): string {\n if (value.id === this.ID_CUSTOM_FILTER_VALUE) {\n return value.value;\n }\n\n const operatorString =\n value.operator === LogicalFilterOperator.EQUAL ? '=' : '!=';\n const label =\n this.categories[value.id]?.label ??\n this.nonSelectableCategories[value.id] ??\n value.id;\n\n return `${label} ${operatorString} ${value.value}`;\n }\n\n private getFilteredSuggestions() {\n if (!this.suggestions?.length) {\n return [];\n }\n\n return this.suggestions\n ?.filter((value) => this.filterByInput(value))\n .filter((value) => this.filterDuplicateTokens(value));\n }\n\n private hasCategorySelection() {\n return this.categories !== undefined;\n }\n\n private renderPlainSuggestions() {\n return (\n <div class=\"dropdown-item-container\">\n {this.getFilteredSuggestions().map((suggestion) => (\n <button\n class=\"dropdown-item\"\n data-id={suggestion}\n onClick={() => this.addToken(suggestion)}\n key={suggestion}\n title={suggestion}\n >\n {suggestion}\n </button>\n ))}\n </div>\n );\n }\n\n private renderOperatorButton() {\n const params: BaseButtonProps = {\n type: 'button',\n variant: 'secondary',\n outline: false,\n ghost: true,\n iconOnly: true,\n iconOval: false,\n selected: false,\n disabled: this.disabled,\n loading: false,\n icon: '',\n onClick: (e: Event) => {\n e.stopPropagation();\n this.toggleCategoryOperator();\n },\n extraClasses: {\n 'btn-icon-32': true,\n 'btn-toggle-operator': true,\n },\n };\n\n return (\n <BaseButton {...params}>\n {this.categoryLogicalOperator === LogicalFilterOperator.NOT_EQUAL\n ? '='\n : '!='}\n </BaseButton>\n );\n }\n\n private renderCategoryValues() {\n return (\n <div class=\"dropdown-item-container\">\n {this.renderOperatorButton()}\n <div class=\"dropdown-header\">\n {this.categories[this.category]?.label}\n </div>\n {this.categories[this.category]?.options\n .filter((value) => this.filterByInput(value))\n .filter((value) => this.filterDuplicateTokens(value))\n .map((id) => (\n <button\n class=\"dropdown-item category-item-value\"\n data-id={id}\n title={id}\n key={id}\n onClick={() => this.addToken(id, this.category)}\n >\n {`${\n this.categoryLogicalOperator === LogicalFilterOperator.EQUAL\n ? '='\n : '!='\n } ${id}`}\n </button>\n ))}\n </div>\n );\n }\n\n private renderDropdownContent() {\n if (this.hasCategorySelection()) {\n if (this.category !== undefined) {\n return this.renderCategoryValues();\n } else {\n return this.renderCategorySelection();\n }\n } else return this.renderPlainSuggestions();\n }\n\n private renderCategorySelection() {\n return (\n <div class=\"dropdown-item-container\">\n {this.getCategoryIds()\n ?.filter((id) => this.filterByInput(this.categories[id].label))\n .filter((id) => this.filterMultiples(id))\n .map((id) => (\n <button\n class=\"dropdown-item category-item category-item-id\"\n data-id={id}\n title={this.categories[id].label}\n key={id}\n onClick={(e) => {\n e.preventDefault();\n this.selectCategory(id);\n }}\n tabindex=\"0\"\n >\n {this.categories[id]?.label}\n </button>\n ))}\n </div>\n );\n }\n\n private getDropdownHeader() {\n if (this.categories !== undefined) {\n if (this.category !== undefined) {\n return null;\n } else {\n return this.labelCategories;\n }\n }\n\n return this.i18nPlainText;\n }\n\n componentDidRender() {\n if (this.isScrollStateDirty) {\n if (!this.tmpDisableScrollIntoView) {\n this.textInput.scrollIntoView();\n }\n this.isScrollStateDirty = false;\n }\n }\n\n private getResetButton() {\n return (\n <ix-icon-button\n onClick={() => this.resetFilter()}\n class={{\n 'reset-button': true,\n 'hide-reset-button':\n !this.filterTokens.length && this.category === undefined,\n }}\n ghost\n oval\n icon={'clear'}\n size=\"16\"\n ></ix-icon-button>\n );\n }\n\n private getIconColor() {\n if (this.disabled) {\n return 'color-componentn-1';\n }\n\n if (this.readonly) {\n return 'color-std-txt';\n }\n\n return 'color-primary';\n }\n\n render() {\n return (\n <Host>\n <form ref={(el) => (this.formElement = el)}>\n <div\n read-only={this.readonly}\n class={{\n 'input-container': true,\n disabled: this.disabled,\n focus: this.hasFocus,\n readonly: this.readonly,\n 'no-icon': this.hideIcon,\n }}\n >\n <ix-icon\n color={this.getIconColor()}\n class={{ 'd-none': this.hideIcon }}\n name={this.icon}\n size=\"16\"\n ></ix-icon>\n <div class=\"token-container\">\n <ul class=\"list-unstyled\">\n {this.filterTokens.map((value, index) => (\n <li\n key={value.toString()}\n class={{\n animate__animated: true,\n animate__fadein: true,\n }}\n >\n <ix-filter-chip\n disabled={this.disabled}\n readonly={this.readonly}\n onCloseClick={() => this.removeToken(index)}\n >\n {this.getFilterChipLabel(value)}\n </ix-filter-chip>\n </li>\n ))}\n {this.categories === undefined ? (\n ''\n ) : (\n <li\n class={{\n 'category-preview': true,\n 'd-none': this.category === undefined,\n }}\n >\n {this.categories[this.category]?.label}\n </li>\n )}\n <input\n class={{\n 'text-input': true,\n 'hide-placeholder':\n this.readonly ||\n this.disabled ||\n this.category !== undefined,\n }}\n disabled={this.disabled}\n readonly={this.readonly}\n ref={(el) => (this.textInput = el)}\n type=\"text\"\n placeholder={this.placeholder}\n ></input>\n </ul>\n </div>\n {this.getResetButton()}\n </div>\n </form>\n\n {this.disabled || this.readonly ? (\n ''\n ) : (\n <ix-dropdown\n closeBehavior=\"outside\"\n offset={{ mainAxis: 2 }}\n trigger={this.textInput}\n triggerEvent={['click', 'focus']}\n header={this.getDropdownHeader()}\n >\n {this.renderDropdownContent()}\n </ix-dropdown>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"+IAAA,MAAMA,EAAoB,mjzC,MC8BbC,EAAc,M,kKACRC,KAAAC,uBAAyB,yB,8EASPC,EAAsBC,M,oEAOpD,G,cAKc,M,cAKA,M,6GAgCf,G,qCAWW,S,8CAcY,K,8BAKQ,K,qBAKT,a,mBAKF,gB,CAkBxBC,iBAAiBC,GACfL,KAAKM,eAAeD,E,CAGtBE,mB,QACE,GAAIP,KAAKQ,cAAgBC,UAAW,CAClCC,YAAW,IAAMV,KAAKM,eAAeN,KAAKQ,c,EAG5CG,EAAAX,KAAKY,eAAW,MAAAD,SAAA,SAAAA,EAAEE,iBAChB,UACAb,KAAKc,yBAAyBC,KAAKf,QAGrCgB,EAAAhB,KAAKiB,eAAW,MAAAD,SAAA,SAAAA,EAAEH,iBAAiB,UAAWK,GAAMA,EAAEC,mBAEtD,GAAInB,KAAKoB,WAAa,KAAM,CAC1BC,QAAQC,KACN,8EAEF,M,CAGFtB,KAAKoB,UAAUP,iBAAiB,WAAW,KACzCb,KAAKuB,SAAW,IAAI,IAEtBvB,KAAKoB,UAAUP,iBAAiB,YAAY,IAAOb,KAAKuB,SAAW,QACnEvB,KAAKoB,UAAUP,iBAAiB,SAAS,KACvCb,KAAKwB,WAAaxB,KAAKoB,UAAUK,MACjC,MAAMC,EAAa,IAAIC,EAAW3B,KAAKwB,WAAYxB,KAAK4B,UACxD5B,KAAK6B,aAAaC,KAAKJ,EAAW,IAEpC1B,KAAKoB,UAAUP,iBACb,UACAb,KAAK+B,0BAA0BhB,KAAKf,M,CAIhCM,eAAe0B,GACrBhC,KAAKiC,aAAe,GAEpB,IAAK,MAAMC,KAASF,EAAMG,OAAQ,CAChCnC,KAAKoC,SACHF,EACAlC,KAAKC,uBACLD,KAAKqC,wBACL,M,CAIJ,IAAK,MAAMT,KAAYI,EAAMM,WAAY,CACvCtC,KAAKoC,SAASR,EAASH,MAAOG,EAASW,GAAIX,EAASY,SAAU,M,CAGhExC,KAAKyC,iB,CAGCC,gBACN,GAAI1C,KAAK2C,UAAY3C,KAAK4C,SAAU,CAClC,M,CAGF5C,KAAKY,YAAYiC,WAAWC,cAAc,eAAeC,KAAO,K,CAG1DjC,yBAAyBI,GAC/B,OAAQA,EAAE8B,MACR,IAAK,QACL,IAAK,cACH,IAAKC,SAASC,cAAcC,UAAUC,SAAS,iBAAkB,CAC/D,M,CAGF,MAAMlB,EAAQe,SAASC,cAAcG,aAAa,WAElD,GAAIrD,KAAKsD,uBAAwB,CAC/B,GAAItD,KAAK4B,WAAanB,UAAW,CAC/BT,KAAKoC,SAASF,EAAOlC,KAAK4B,S,MACrB,GACLqB,SAASC,cAAcC,UAAUC,SAAS,oBAC1C,CACApD,KAAKuD,eAAerB,E,MAEjB,CACLlC,KAAKoC,SAASF,E,CAGhBhB,EAAEC,iBACF,MAEF,IAAK,UACHnB,KAAKwD,oBACLtC,EAAEC,iBACF,MAEF,IAAK,YACHnB,KAAKyD,gBACLvC,EAAEC,iBACF,MAEF,IAAK,SACHnB,KAAK0C,gBACL,M,CAIEc,oBACN,MAAME,EAAUT,SAASC,cAAcS,gBACvC,GAAID,aAAmBE,YAAa,CAClCF,EAAQG,O,EAIJJ,gBACN,MAAMC,EAAUT,SAASC,cAAcY,YACvC,GAAIJ,aAAmBE,YAAa,CAClCF,EAAQG,O,EAIJ9B,0BAA0Bb,G,MAChC,OAAQA,EAAE8B,MACR,IAAK,YACH,MAAMe,EAAW,kBACf/D,KAAK4B,WAAanB,UAAY,QAAU,OAE1C,IAAIuD,EAAOhE,KAAKY,YAAYiC,WAAWC,cAAciB,GAErD,GAAIC,aAAgBJ,YAAa,CAC/BI,EAAKH,QACL3C,EAAE+C,iB,MACG,IAAItD,EAAAX,KAAKkE,eAAW,MAAAvD,SAAA,SAAAA,EAAEwD,OAAQ,CACnCH,EAAOhE,KAAKY,YAAYiC,WAAWC,cAAc,kBACjD,GAAIkB,aAAgBJ,YAAa,CAC/BI,EAAKH,QACL3C,EAAE+C,iB,EAGN,MAEF,IAAK,YACH,GAAIjE,KAAKoB,UAAUK,QAAU,GAAI,CAC/B,M,CAGF,GAAIzB,KAAK4B,WAAanB,UAAW,CAC/BT,KAAK4B,SAAWnB,UAChB,M,CAGF,MAAM2D,EAAapE,KAAKiC,aAAakC,OACrC,GAAIC,EAAa,EAAG,CAClBpE,KAAKqE,YAAYD,EAAa,E,CAEhC,MAEF,IAAK,QACL,IAAK,cACHpE,KAAKoC,SAASpC,KAAKwB,WAAYxB,KAAK4B,UACpCV,EAAEC,iBACF,M,CAIEsB,kBACN,MAAMN,EAASnC,KAAKiC,aACjBqC,QAAQN,GAASA,EAAKzB,KAAOvC,KAAKC,yBAClCsE,KAAKP,GAASA,EAAKvC,QACtB,MAAMa,EAAatC,KAAKiC,aAAaqC,QAClCN,GAASA,EAAKzB,KAAOvC,KAAKC,yBAE7B,MAAMO,EAA2B,CAC/B2B,SACAG,cAGFtC,KAAKwE,cAAc1C,KAAKtB,E,CAGlB4B,SACNF,EACAN,EAAmB5B,KAAKC,uBACxBuC,EAAWxC,KAAKqC,wBAChBoC,EAAY,MAEZ,GAAIvC,IAAUzB,WAAayB,IAAU,KAAM,CACzC,M,CAGF,MAAMwC,EAAWxC,EAAMyC,OAEvB,GAAID,IAAa,GAAI,CACnB,M,CAGF,GAAI1E,KAAK4E,SAASF,GAAW,CAC3B,M,CAGF,MAAMG,EAAO,CAAEtC,GAAIX,EAAUH,MAAOiD,EAAUlC,YAC9CxC,KAAKiC,aAAe,IAAIjC,KAAKiC,aAAc4C,GAC3C7E,KAAKoB,UAAUK,MAAQ,GACvBzB,KAAKwB,WAAa,GAClBxB,KAAKqC,wBAA0BnC,EAAsBC,MAErD,GAAIH,KAAK4B,WAAanB,UAAW,CAC/BT,KAAK4B,SAAWnB,S,CAGlBT,KAAK8E,mBAAqB,KAE1B9E,KAAKoB,UAAUyC,QAEf,GAAIY,EAAW,CACbzE,KAAKyC,iB,CAGPzC,KAAK0C,e,CAGC2B,YAAYU,GAClB/E,KAAKiC,aAAejC,KAAKiC,aAAaqC,QAAO,CAACU,EAAGC,IAAMA,IAAMF,IAC7D/E,KAAKyC,iB,CAGCyC,iBACN,MAAMC,EAAM,GACZ,IAAK,MAAM5C,KAAMvC,KAAKsC,WAAY,CAChC,GAAI8C,OAAOC,UAAUC,eAAeC,KAAKvF,KAAKsC,WAAYC,GAAK,CAC7D4C,EAAIK,KAAKjD,E,EAIb,OAAO4C,C,CAGD5B,eAAe3B,GACrB5B,KAAK4B,SAAWA,EAChB5B,KAAKoB,UAAUK,MAAQ,GACvBzB,KAAKwB,WAAa,GAClBxB,KAAKoB,UAAUyC,QACf7D,KAAKyF,gBAAgB3D,KAAKF,E,CAGpB8D,cACN1F,KAAK0C,gBACL1C,KAAKiC,aAAe,GACpBjC,KAAKyC,iB,CAGCkD,gBAAgBlE,GACtB,GAAIzB,KAAK4F,iBAAkB,CACzB,OAAO,I,CAGT,MAAMC,EAAuB7F,KAAKiC,aAAa6D,MAC5C5D,GAAUA,EAAMK,KAAOd,IAG1B,OAAQoE,C,CAGFjB,SAAS1C,GACf,OAAOlC,KAAKiC,aAAa8D,MAAMC,IAC7B,MAAMC,EAAeD,EAAYvE,QAAUS,EAE3C,IAAK+D,EAAc,CACjB,OAAO,K,CAGT,GAAIjG,KAAK4B,WAAanB,UAAW,CAC/B,OAAOT,KAAK4B,WAAaoE,EAAYzD,E,CAGvC,GAAIyD,EAAYzD,GAAI,CAClB,OAAOyD,EAAYzD,KAAOvC,KAAKC,sB,CAGjC,OAAOgG,CAAY,G,CAIfC,sBAAsBzE,GAC5B,OAAQzB,KAAK4E,SAASnD,E,CAGhB0E,cAAc1E,GACpB,GAAIzB,KAAKwB,aAAef,WAAaT,KAAKwB,aAAe,GAAI,CAC3D,OAAO,I,CAGT,OAAOC,EAAM2E,cAAcC,QAAQrG,KAAKwB,WAAW4E,kBAAoB,C,CAGjEE,yBACN,OAAQtG,KAAKqC,yBACX,KAAKnC,EAAsBC,MACzBH,KAAKqC,wBAA0BnC,EAAsBqG,UACrD,MAEF,KAAKrG,EAAsBqG,UACzBvG,KAAKqC,wBAA0BnC,EAAsBC,MACrD,M,CAIEqG,mBAAmB/E,G,UAKzB,GAAIA,EAAMc,KAAOvC,KAAKC,uBAAwB,CAC5C,OAAOwB,EAAMA,K,CAGf,MAAMgF,EACJhF,EAAMe,WAAatC,EAAsBC,MAAQ,IAAM,KACzD,MAAMuG,GACJC,GAAA3F,GAAAL,EAAAX,KAAKsC,WAAWb,EAAMc,OAAG,MAAA5B,SAAA,SAAAA,EAAE+F,SAAK,MAAA1F,SAAA,EAAAA,EAChChB,KAAK4G,wBAAwBnF,EAAMc,OAAG,MAAAoE,SAAA,EAAAA,EACtClF,EAAMc,GAER,MAAO,GAAGmE,KAASD,KAAkBhF,EAAMA,O,CAGrCoF,yB,QACN,MAAKlG,EAAAX,KAAKkE,eAAW,MAAAvD,SAAA,SAAAA,EAAEwD,QAAQ,CAC7B,MAAO,E,CAGT,OAAOnD,EAAAhB,KAAKkE,eAAW,MAAAlD,SAAA,SAAAA,EACnBsD,QAAQ7C,GAAUzB,KAAKmG,cAAc1E,KACtC6C,QAAQ7C,GAAUzB,KAAKkG,sBAAsBzE,I,CAG1C6B,uBACN,OAAOtD,KAAKsC,aAAe7B,S,CAGrBqG,yBACN,OACEC,EAAA,OAAKC,MAAM,2BACRhH,KAAK6G,yBAAyBtC,KAAK0C,GAClCF,EAAA,UACEC,MAAM,gBAAe,UACZC,EACTC,QAAS,IAAMlH,KAAKoC,SAAS6E,GAC7BE,IAAKF,EACLG,MAAOH,GAENA,K,CAOHI,uBACN,MAAMC,EAA0B,CAC9BC,KAAM,SACNC,QAAS,YACTC,QAAS,MACTC,MAAO,KACPC,SAAU,KACVC,SAAU,MACVC,SAAU,MACVlF,SAAU3C,KAAK2C,SACfmF,QAAS,MACTC,KAAM,GACNb,QAAUhG,IACRA,EAAE+C,kBACFjE,KAAKsG,wBAAwB,EAE/B0B,aAAc,CACZ,cAAe,KACf,sBAAuB,OAI3B,OACEjB,EAACkB,EAAU7C,OAAA8C,OAAA,GAAKZ,GACbtH,KAAKqC,0BAA4BnC,EAAsBqG,UACpD,IACA,K,CAKF4B,uB,QACN,OACEpB,EAAA,OAAKC,MAAM,2BACRhH,KAAKqH,uBACNN,EAAA,OAAKC,MAAM,oBACRrG,EAAAX,KAAKsC,WAAWtC,KAAK4B,aAAS,MAAAjB,SAAA,SAAAA,EAAE+F,QAElC1F,EAAAhB,KAAKsC,WAAWtC,KAAK4B,aAAS,MAAAZ,SAAA,S,EAAEoH,QAC9B9D,QAAQ7C,GAAUzB,KAAKmG,cAAc1E,KACrC6C,QAAQ7C,GAAUzB,KAAKkG,sBAAsBzE,KAC7C8C,KAAKhC,GACJwE,EAAA,UACEC,MAAM,oCAAmC,UAChCzE,EACT6E,MAAO7E,EACP4E,IAAK5E,EACL2E,QAAS,IAAMlH,KAAKoC,SAASG,EAAIvC,KAAK4B,WAErC,GACC5B,KAAKqC,0BAA4BnC,EAAsBC,MACnD,IACA,QACFoC,O,CAOR8F,wBACN,GAAIrI,KAAKsD,uBAAwB,CAC/B,GAAItD,KAAK4B,WAAanB,UAAW,CAC/B,OAAOT,KAAKmI,sB,KACP,CACL,OAAOnI,KAAKsI,yB,OAET,OAAOtI,KAAK8G,wB,CAGbwB,0B,MACN,OACEvB,EAAA,OAAKC,MAAM,4BACRrG,EAAAX,KAAKkF,oBAAgB,MAAAvE,SAAA,SAAAA,EAClB2D,QAAQ/B,GAAOvC,KAAKmG,cAAcnG,KAAKsC,WAAWC,GAAImE,SACvDpC,QAAQ/B,GAAOvC,KAAK2F,gBAAgBpD,KACpCgC,KAAKhC,I,MAAO,OACXwE,EAAA,UACEC,MAAM,+CAA8C,UAC3CzE,EACT6E,MAAOpH,KAAKsC,WAAWC,GAAImE,MAC3BS,IAAK5E,EACL2E,QAAUhG,IACRA,EAAEC,iBACFnB,KAAKuD,eAAehB,EAAG,EAEzBgG,SAAS,MAER5H,EAAAX,KAAKsC,WAAWC,MAAG,MAAA5B,SAAA,SAAAA,EAAE+F,MACf,I,CAMX8B,oBACN,GAAIxI,KAAKsC,aAAe7B,UAAW,CACjC,GAAIT,KAAK4B,WAAanB,UAAW,CAC/B,OAAO,I,KACF,CACL,OAAOT,KAAKyI,e,EAIhB,OAAOzI,KAAK0I,a,CAGdC,qBACE,GAAI3I,KAAK8E,mBAAoB,CAC3B,IAAK9E,KAAK4I,yBAA0B,CAClC5I,KAAKoB,UAAUyH,gB,CAEjB7I,KAAK8E,mBAAqB,K,EAItBgE,iBACN,OACE/B,EAAA,kBACEG,QAAS,IAAMlH,KAAK0F,cACpBsB,MAAO,CACL,eAAgB,KAChB,qBACGhH,KAAKiC,aAAakC,QAAUnE,KAAK4B,WAAanB,WAEnDiH,MAAK,KACLqB,KAAI,KACJhB,KAAM,QACNiB,KAAK,M,CAKHC,eACN,GAAIjJ,KAAK2C,SAAU,CACjB,MAAO,oB,CAGT,GAAI3C,KAAK4C,SAAU,CACjB,MAAO,e,CAGT,MAAO,e,CAGTsG,S,MACE,OACEnC,EAACoC,EAAI,KACHpC,EAAA,QAAMqC,IAAMC,GAAQrJ,KAAKiB,YAAcoI,GACrCtC,EAAA,mBACa/G,KAAK4C,SAChBoE,MAAO,CACL,kBAAmB,KACnBrE,SAAU3C,KAAK2C,SACfkB,MAAO7D,KAAKuB,SACZqB,SAAU5C,KAAK4C,SACf,UAAW5C,KAAKsJ,WAGlBvC,EAAA,WACEwC,MAAOvJ,KAAKiJ,eACZjC,MAAO,CAAE,SAAUhH,KAAKsJ,UACxBE,KAAMxJ,KAAK+H,KACXiB,KAAK,OAEPjC,EAAA,OAAKC,MAAM,mBACTD,EAAA,MAAIC,MAAM,iBACPhH,KAAKiC,aAAasC,KAAI,CAAC9C,EAAOsD,IAC7BgC,EAAA,MACEI,IAAK1F,EAAMgI,WACXzC,MAAO,CACL0C,kBAAmB,KACnBC,gBAAiB,OAGnB5C,EAAA,kBACEpE,SAAU3C,KAAK2C,SACfC,SAAU5C,KAAK4C,SACfgH,aAAc,IAAM5J,KAAKqE,YAAYU,IAEpC/E,KAAKwG,mBAAmB/E,OAI9BzB,KAAKsC,aAAe7B,UAAS,GAG5BsG,EAAA,MACEC,MAAO,CACL,mBAAoB,KACpB,SAAUhH,KAAK4B,WAAanB,aAG7BE,EAAAX,KAAKsC,WAAWtC,KAAK4B,aAAS,MAAAjB,SAAA,SAAAA,EAAE+F,OAGrCK,EAAA,SACEC,MAAO,CACL,aAAc,KACd,mBACEhH,KAAK4C,UACL5C,KAAK2C,UACL3C,KAAK4B,WAAanB,WAEtBkC,SAAU3C,KAAK2C,SACfC,SAAU5C,KAAK4C,SACfwG,IAAMC,GAAQrJ,KAAKoB,UAAYiI,EAC/B9B,KAAK,OACLsC,YAAa7J,KAAK6J,gBAIvB7J,KAAK8I,mBAIT9I,KAAK2C,UAAY3C,KAAK4C,SAAQ,GAG7BmE,EAAA,eACE+C,cAAc,UACdC,OAAQ,CAAEC,SAAU,GACpBC,QAASjK,KAAKoB,UACd8I,aAAc,CAAC,QAAS,SACxBC,OAAQnK,KAAKwI,qBAEZxI,KAAKqI,yB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,h as s,H as i,g as r}from"./p-76a509c7.js";import{g as e}from"./p-04eeba9e.js";const o=":host{position:relative;display:flex;width:100%;flex-wrap:wrap;align-items:stretch}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host .group{display:flex;position:absolute;align-items:center;height:100%}:host .group-start{left:0px;height:2rem;margin-left:0.375rem;color:var(--theme-color-soft-text)}:host .group-end{right:0px;height:2rem;margin-right:0.375rem;color:var(--theme-color-soft-text)}:host ::slotted(*){display:flex}";const h=class{constructor(s){t(this,s);this.inputPaddingLeft=0;this.inputPaddingRight=0}get inputElement(){return this.hostElement.querySelector("input")}componentWillLoad(){var t;const{valid:s}=this.inputElement.validity;this.inputElement.addEventListener("valid",(()=>{this.onValidInput()}));this.inputElement.addEventListener("invalid",(()=>{this.onInvalidInput()}));this.inputElement.addEventListener("input",(()=>{this.startSlotChanged()}));(t=this.inputElement.form)===null||t===void 0?void 0:t.addEventListener("submit",(()=>{this.startSlotChanged()}));s?this.onValidInput():this.onInvalidInput();this.observer=new MutationObserver((()=>{this.startSlotChanged();this.endSlotChanged()}));this.observer.observe(this.hostElement,{subtree:true,childList:true,attributes:true,characterData:true})}componentDidRender(){this.prepareInputElement()}onValidInput(){this.startSlotChanged()}onInvalidInput(){this.startSlotChanged()}prepareInputElement(){if(this.inputElement){this.inputElement.style.width="100%";if(this.inputPaddingRight!==0){this.inputElement.style.paddingRight=this.inputPaddingRight+"px"}else{this.inputElement.style.paddingRight="0.5rem"}if(this.inputPaddingLeft!==0){this.inputElement.style.paddingLeft=this.inputPaddingLeft+"px"}else{this.inputElement.style.paddingLeft="0.5rem"}}else{console.warn('You used the ix-input-group without an input tag, e.g. <input class="form-control" />')}}startSlotChanged(){const t=this.hostElement.shadowRoot.querySelector('slot[name="input-start"]');setTimeout((()=>{var s,i;const r=this.getChildrenWidth(t);if(r!==0){this.inputPaddingLeft=15+r}else{this.inputPaddingLeft=0}if(!this.inputElement){return}if((((s=this.inputElement.form)===null||s===void 0?void 0:s.classList.contains("was-validated"))||((i=this.inputElement.form)===null||i===void 0?void 0:i.noValidate)===false)&&!this.inputElement.validity.valid){this.inputElement.style.backgroundPositionX=`${this.inputPaddingLeft}px`;this.inputPaddingLeft+=32}}))}endSlotChanged(){const t=this.hostElement.shadowRoot.querySelector('slot[name="input-end"]');setTimeout((()=>{this.inputPaddingRight=15+this.getChildrenWidth(t)}))}getChildrenWidth(t){if(!t){return 0}const s=e(t);if(s.length===0){return 0}let i=0;s.forEach((t=>{i+=t.getBoundingClientRect().width}));return i}render(){return s(i,null,s("div",{class:"group group-start"},s("slot",{name:"input-start"})),s("slot",null),s("div",{class:"group group-end"},s("slot",{name:"input-end"})))}get hostElement(){return r(this)}};h.style=o;export{h as ix_input_group};
|
|
2
|
+
//# sourceMappingURL=p-ad94f795.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["inputGroupCss","InputGroup","inputElement","this","hostElement","querySelector","componentWillLoad","valid","validity","addEventListener","onValidInput","onInvalidInput","startSlotChanged","_a","form","observer","MutationObserver","endSlotChanged","observe","subtree","childList","attributes","characterData","componentDidRender","prepareInputElement","style","width","inputPaddingRight","paddingRight","inputPaddingLeft","paddingLeft","console","warn","slot","shadowRoot","setTimeout","startPadding","getChildrenWidth","classList","contains","_b","noValidate","backgroundPositionX","slotElement","endElements","getSlottedElements","length","forEach","element","getBoundingClientRect","render","h","Host","class","name"],"sources":["./src/components/input-group/input-group.scss?tag=ix-input-group&encapsulation=shadow","./src/components/input-group/input-group.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n@import 'mixins/shadow-dom/component';\n\n:host {\n @include ix-component;\n\n position: relative;\n display: flex;\n width: 100%;\n flex-wrap: wrap;\n align-items: stretch;\n\n .group {\n display: flex;\n position: absolute;\n align-items: center;\n height: 100%;\n }\n\n .group-start {\n left: 0px;\n height: 2rem;\n margin-left: 0.375rem;\n color: var(--theme-color-soft-text);\n }\n\n .group-end {\n right: 0px;\n height: 2rem;\n margin-right: 0.375rem;\n color: var(--theme-color-soft-text);\n }\n\n ::slotted(*) {\n display: flex;\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, State } from '@stencil/core';\nimport { getSlottedElements } from '../utils/shadow-dom';\n\n@Component({\n tag: 'ix-input-group',\n styleUrl: 'input-group.scss',\n shadow: true,\n})\nexport class InputGroup {\n @Element() hostElement!: HTMLIxInputGroupElement;\n\n @State() inputPaddingLeft = 0;\n @State() inputPaddingRight = 0;\n\n private get inputElement() {\n return this.hostElement.querySelector('input') as HTMLInputElement;\n }\n\n private observer: MutationObserver;\n\n componentWillLoad() {\n const { valid } = this.inputElement.validity;\n this.inputElement.addEventListener('valid', () => {\n this.onValidInput();\n });\n this.inputElement.addEventListener('invalid', () => {\n this.onInvalidInput();\n });\n this.inputElement.addEventListener('input', () => {\n this.startSlotChanged();\n });\n\n this.inputElement.form?.addEventListener('submit', () => {\n this.startSlotChanged();\n });\n\n valid ? this.onValidInput() : this.onInvalidInput();\n\n this.observer = new MutationObserver(() => {\n this.startSlotChanged();\n this.endSlotChanged();\n });\n\n this.observer.observe(this.hostElement, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true,\n });\n }\n\n componentDidRender() {\n this.prepareInputElement();\n }\n\n private onValidInput() {\n this.startSlotChanged();\n }\n\n private onInvalidInput() {\n this.startSlotChanged();\n }\n\n private prepareInputElement() {\n if (this.inputElement) {\n this.inputElement.style.width = '100%';\n\n if (this.inputPaddingRight !== 0) {\n this.inputElement.style.paddingRight = this.inputPaddingRight + 'px';\n } else {\n this.inputElement.style.paddingRight = '0.5rem';\n }\n\n if (this.inputPaddingLeft !== 0) {\n this.inputElement.style.paddingLeft = this.inputPaddingLeft + 'px';\n } else {\n this.inputElement.style.paddingLeft = '0.5rem';\n }\n } else {\n console.warn(\n 'You used the ix-input-group without an input tag, e.g. <input class=\"form-control\" />'\n );\n }\n }\n\n private startSlotChanged() {\n const slot = this.hostElement.shadowRoot.querySelector(\n 'slot[name=\"input-start\"]'\n );\n\n setTimeout(() => {\n const startPadding = this.getChildrenWidth(slot);\n\n if (startPadding !== 0) {\n this.inputPaddingLeft = 15 + startPadding;\n } else {\n this.inputPaddingLeft = 0;\n }\n\n if (!this.inputElement) {\n return;\n }\n\n if (\n (this.inputElement.form?.classList.contains('was-validated') ||\n this.inputElement.form?.noValidate === false) &&\n !this.inputElement.validity.valid\n ) {\n this.inputElement.style.backgroundPositionX = `${this.inputPaddingLeft}px`;\n this.inputPaddingLeft += 32;\n }\n });\n }\n\n private endSlotChanged() {\n const slot = this.hostElement.shadowRoot.querySelector(\n 'slot[name=\"input-end\"]'\n );\n\n setTimeout(() => {\n this.inputPaddingRight = 15 + this.getChildrenWidth(slot);\n });\n }\n\n private getChildrenWidth(slotElement: Element) {\n if (!slotElement) {\n return 0;\n }\n\n const endElements = getSlottedElements<HTMLElement>(slotElement);\n if (endElements.length === 0) {\n return 0;\n }\n\n let width = 0;\n\n endElements.forEach((element) => {\n width += element.getBoundingClientRect().width;\n });\n\n return width;\n }\n\n render() {\n return (\n <Host>\n <div class=\"group group-start\">\n <slot name=\"input-start\"></slot>\n </div>\n <slot></slot>\n <div class=\"group group-end\">\n <slot name=\"input-end\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"6FAAA,MAAMA,EAAgB,69B,MCiBTC,EAAU,M,+CAGO,E,uBACC,C,CAEjBC,mBACV,OAAOC,KAAKC,YAAYC,cAAc,Q,CAKxCC,oB,MACE,MAAMC,MAAEA,GAAUJ,KAAKD,aAAaM,SACpCL,KAAKD,aAAaO,iBAAiB,SAAS,KAC1CN,KAAKO,cAAc,IAErBP,KAAKD,aAAaO,iBAAiB,WAAW,KAC5CN,KAAKQ,gBAAgB,IAEvBR,KAAKD,aAAaO,iBAAiB,SAAS,KAC1CN,KAAKS,kBAAkB,KAGzBC,EAAAV,KAAKD,aAAaY,QAAI,MAAAD,SAAA,SAAAA,EAAEJ,iBAAiB,UAAU,KACjDN,KAAKS,kBAAkB,IAGzBL,EAAQJ,KAAKO,eAAiBP,KAAKQ,iBAEnCR,KAAKY,SAAW,IAAIC,kBAAiB,KACnCb,KAAKS,mBACLT,KAAKc,gBAAgB,IAGvBd,KAAKY,SAASG,QAAQf,KAAKC,YAAa,CACtCe,QAAS,KACTC,UAAW,KACXC,WAAY,KACZC,cAAe,M,CAInBC,qBACEpB,KAAKqB,qB,CAGCd,eACNP,KAAKS,kB,CAGCD,iBACNR,KAAKS,kB,CAGCY,sBACN,GAAIrB,KAAKD,aAAc,CACrBC,KAAKD,aAAauB,MAAMC,MAAQ,OAEhC,GAAIvB,KAAKwB,oBAAsB,EAAG,CAChCxB,KAAKD,aAAauB,MAAMG,aAAezB,KAAKwB,kBAAoB,I,KAC3D,CACLxB,KAAKD,aAAauB,MAAMG,aAAe,Q,CAGzC,GAAIzB,KAAK0B,mBAAqB,EAAG,CAC/B1B,KAAKD,aAAauB,MAAMK,YAAc3B,KAAK0B,iBAAmB,I,KACzD,CACL1B,KAAKD,aAAauB,MAAMK,YAAc,Q,MAEnC,CACLC,QAAQC,KACN,wF,EAKEpB,mBACN,MAAMqB,EAAO9B,KAAKC,YAAY8B,WAAW7B,cACvC,4BAGF8B,YAAW,K,QACT,MAAMC,EAAejC,KAAKkC,iBAAiBJ,GAE3C,GAAIG,IAAiB,EAAG,CACtBjC,KAAK0B,iBAAmB,GAAKO,C,KACxB,CACLjC,KAAK0B,iBAAmB,C,CAG1B,IAAK1B,KAAKD,aAAc,CACtB,M,CAGF,MACGW,EAAAV,KAAKD,aAAaY,QAAI,MAAAD,SAAA,SAAAA,EAAEyB,UAAUC,SAAS,qBAC1CC,EAAArC,KAAKD,aAAaY,QAAI,MAAA0B,SAAA,SAAAA,EAAEC,cAAe,SACxCtC,KAAKD,aAAaM,SAASD,MAC5B,CACAJ,KAAKD,aAAauB,MAAMiB,oBAAsB,GAAGvC,KAAK0B,qBACtD1B,KAAK0B,kBAAoB,E,KAKvBZ,iBACN,MAAMgB,EAAO9B,KAAKC,YAAY8B,WAAW7B,cACvC,0BAGF8B,YAAW,KACThC,KAAKwB,kBAAoB,GAAKxB,KAAKkC,iBAAiBJ,EAAK,G,CAIrDI,iBAAiBM,GACvB,IAAKA,EAAa,CAChB,OAAO,C,CAGT,MAAMC,EAAcC,EAAgCF,GACpD,GAAIC,EAAYE,SAAW,EAAG,CAC5B,OAAO,C,CAGT,IAAIpB,EAAQ,EAEZkB,EAAYG,SAASC,IACnBtB,GAASsB,EAAQC,wBAAwBvB,KAAK,IAGhD,OAAOA,C,CAGTwB,SACE,OACEC,EAACC,EAAI,KACHD,EAAA,OAAKE,MAAM,qBACTF,EAAA,QAAMG,KAAK,iBAEbH,EAAA,aACAA,EAAA,OAAKE,MAAM,mBACTF,EAAA,QAAMG,KAAK,e"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as t,c as i,h as o,H as s,g as a}from"./p-76a509c7.js";import{a as e}from"./p-810b5232.js";import{b as l,a as r}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as t,c as i,h as o,H as s,g as a}from"./p-76a509c7.js";import{a as e}from"./p-810b5232.js";import{b as l,a as r}from"./p-2fd30d79.js";import{A as n}from"./p-3b97bb69.js";const d="::backdrop{--ix-dialog-backdrop:var(--theme-color-lightbox, #0000008c)}:focus-visible{outline:none !important}:host dialog{margin:0;left:50%}:host dialog::backdrop{-webkit-backdrop-filter:blur(2.7182817459px);backdrop-filter:blur(2.7182817459px)}:host .modal{display:flex;flex-direction:column;position:relative;border:none;border-radius:var(--theme-default-border-radius);background:var(--theme-modal--background);box-shadow:var(--theme-shadow-4);color:var(--theme-color-std-text);overflow:visible;max-height:80vh;pointer-events:all}:host .modal-size-360{width:22.5rem}:host .modal-size-480{width:30rem}:host .modal-size-600{width:37.5rem}:host .modal-size-720{width:45rem}:host .modal-size-840{width:52.5rem}:host .modal-size-full-width{width:95%}:host .modal-size-full-screen{left:0px !important;top:0px !important;transform:none !important;width:calc(100% - 28px);min-width:calc(100% - 28px);max-width:calc(100% - 28px);height:calc(100% - 28px);min-height:calc(100% - 28px);max-height:calc(100% - 28px)}:host .dialog-backdrop{display:block;position:fixed;width:100vw;height:100vh;top:0px;left:0px;pointer-events:none}:host ::slotted(ix-modal-footer){margin-top:auto}:host(.align-center) dialog{margin:0;left:50%;top:50%}:host(.no-backdrop) dialog::backdrop{background-color:transparent !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}:host(.with-icon) ::slotted(ix-modal-footer),:host(.with-icon) ::slotted(ix-modal-content){margin-left:2.5rem}";const h=class{constructor(o){t(this,o);this.dialogClose=i(this,"dialogClose",7);this.dialogDismiss=i(this,"dialogDismiss",7);this.ariaAttributes={};this.size="360";this.animation=true;this.backdrop=true;this.closeOnBackdropClick=false;this.beforeDismiss=undefined;this.centered=false;this.keyboard=true}get dialog(){return this.hostElement.shadowRoot.querySelector("dialog")}slideInModal(){const t=this.animation?n.mediumTime:0;let i=this.centered?"-50":40;e({targets:this.dialog,duration:t,opacity:[0,1],translateY:[0,i],translateX:["-50%","-50%"],easing:"easeOutSine"})}slideOutModal(t){const i=this.animation?n.mediumTime:0;let o=this.centered?"-50":40;e({targets:this.dialog,duration:i,opacity:[1,0],translateY:[o,0],translateX:["-50%","-50%"],easing:"easeInSine",complete:()=>{if(t){t()}}})}onModalClick(t){const i=this.dialog.getBoundingClientRect();const o=i.top<=t.clientY&&t.clientY<=i.top+i.height&&i.left<=t.clientX&&t.clientX<=i.left+i.width;if(!o&&this.closeOnBackdropClick){this.dismissModal()}}async showModal(){setTimeout((()=>this.dialog.showModal()))}async dismissModal(t){let i=true;if(this.beforeDismiss!==undefined){i=await this.beforeDismiss(t)}if(!i){return}this.slideOutModal((()=>{this.dialog.close(JSON.stringify({type:"dismiss",reason:t},null,2));this.dialogDismiss.emit(t)}))}async closeModal(t){this.slideOutModal((()=>{this.dialog.close(JSON.stringify({type:"close",reason:t},null,2));this.dialogClose.emit(t)}))}componentDidLoad(){this.slideInModal()}componentWillLoad(){this.ariaAttributes=l(this.hostElement)}render(){return o(s,{class:{"no-backdrop":this.backdrop===false,"align-center":this.centered}},o("div",{class:"dialog-backdrop"},o("dialog",{"aria-modal":r(true),"aria-describedby":this.ariaAttributes["aria-describedby"],"aria-labelledby":this.ariaAttributes["aria-labelledby"],class:`modal modal-size-${this.size}`,onKeyDown:t=>{if(t.key==="Escape"&&this.keyboard===false){t.preventDefault()}},onClick:t=>this.onModalClick(t),onCancel:t=>{t.preventDefault();this.dismissModal()}},o("slot",null))))}get hostElement(){return a(this)}};h.style=d;export{h as ix_modal};
|
|
2
|
+
//# sourceMappingURL=p-b2042a15.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["modalCss","Modal","this","ariaAttributes","dialog","hostElement","shadowRoot","querySelector","slideInModal","duration","animation","Animation","mediumTime","transformY","centered","anime","targets","opacity","translateY","translateX","easing","slideOutModal","completeCallback","complete","onModalClick","event","rect","getBoundingClientRect","isClickOutside","top","clientY","height","left","clientX","width","closeOnBackdropClick","dismissModal","async","setTimeout","showModal","reason","allowDismiss","beforeDismiss","undefined","close","JSON","stringify","type","dialogDismiss","emit","dialogClose","componentDidLoad","componentWillLoad","a11yHostAttributes","render","h","Host","class","backdrop","a11yBoolean","size","onKeyDown","e","key","keyboard","preventDefault","onClick","onCancel"],"sources":["./src/components/modal/modal.scss?tag=ix-modal&encapsulation=shadow","./src/components/modal/modal.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n::backdrop {\n --ix-dialog-backdrop: var(--theme-color-lightbox, #0000008c);\n}\n\n:focus-visible {\n outline: none !important;\n}\n\n:host {\n dialog {\n margin: 0;\n left: 50%;\n }\n\n dialog::backdrop {\n backdrop-filter: blur(2.7182817459106445px);\n }\n\n .modal {\n display: flex;\n flex-direction: column;\n position: relative;\n border: none;\n border-radius: var(--theme-default-border-radius);\n background: var(--theme-modal--background);\n box-shadow: var(--theme-shadow-4);\n color: var(--theme-color-std-text);\n overflow: visible;\n max-height: 80vh;\n pointer-events: all;\n }\n\n .modal-size-360 {\n width: 22.5rem;\n }\n\n .modal-size-480 {\n width: 30rem;\n }\n\n .modal-size-600 {\n width: 37.5rem;\n }\n\n .modal-size-720 {\n width: 45rem;\n }\n\n .modal-size-840 {\n width: 52.5rem;\n }\n\n .modal-size-full-width {\n width: 95%;\n }\n\n .modal-size-full-screen {\n left: 0px !important;\n top: 0px !important;\n transform: none !important;\n\n width: calc(100% - 28px);\n min-width: calc(100% - 28px);\n max-width: calc(100% - 28px);\n\n height: calc(100% - 28px);\n min-height: calc(100% - 28px);\n max-height: calc(100% - 28px);\n }\n\n .dialog-backdrop {\n display: block;\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0px;\n left: 0px;\n\n pointer-events: none;\n }\n\n ::slotted(ix-modal-footer) {\n margin-top: auto;\n }\n}\n\n:host(.align-center) {\n dialog {\n margin: 0;\n left: 50%;\n top: 50%;\n }\n}\n\n:host(.no-backdrop) {\n dialog::backdrop {\n background-color: transparent !important;\n backdrop-filter: none !important;\n }\n}\n\n:host(.with-icon) {\n ::slotted(ix-modal-footer),\n ::slotted(ix-modal-content) {\n margin-left: 2.5rem;\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n} from '@stencil/core';\nimport anime from 'animejs';\nimport { A11yAttributes, a11yBoolean, a11yHostAttributes } from '../utils/a11y';\nimport Animation from '../utils/animation';\n\nexport type IxModalFixedSize = '360' | '480' | '600' | '720' | '840';\nexport type IxModalDynamicSize = 'full-width' | 'full-screen';\nexport type IxModalSize = IxModalFixedSize | IxModalDynamicSize;\n\n@Component({\n tag: 'ix-modal',\n styleUrl: 'modal.scss',\n shadow: true,\n})\nexport class Modal {\n private ariaAttributes: A11yAttributes = {};\n\n @Element() hostElement!: HTMLIxModalElement;\n\n /**\n * Modal size\n *\n * @since 2.0.0\n */\n @Prop() size: IxModalSize = '360';\n\n /**\n * Should the modal be animated\n */\n @Prop() animation = true;\n\n /**\n * Show a backdrop behind the modal dialog\n */\n @Prop() backdrop = true;\n\n /**\n * Dismiss modal on backdrop click\n *\n * @since 2.0.0\n */\n @Prop() closeOnBackdropClick = false;\n\n /**\n * Is called before the modal is dismissed.\n *\n * - Return `true` to proceed in dismissing the modal\n * - Return `false` to abort in dismissing the modal\n */\n @Prop() beforeDismiss: (reason?: any) => boolean | Promise<boolean>;\n\n /**\n * Centered modal\n */\n @Prop() centered = false;\n\n /**\n * Use ESC to dismiss the modal\n */\n @Prop() keyboard = true;\n\n /**\n * Dialog close\n */\n @Event() dialogClose: EventEmitter;\n\n /**\n * Dialog cancel\n */\n @Event() dialogDismiss: EventEmitter;\n\n get dialog() {\n return this.hostElement.shadowRoot.querySelector('dialog');\n }\n\n private slideInModal() {\n const duration = this.animation ? Animation.mediumTime : 0;\n\n let transformY = this.centered ? '-50' : 40;\n\n anime({\n targets: this.dialog,\n duration,\n opacity: [0, 1],\n translateY: [0, transformY],\n translateX: ['-50%', '-50%'],\n easing: 'easeOutSine',\n });\n }\n\n private slideOutModal(completeCallback: Function) {\n const duration = this.animation ? Animation.mediumTime : 0;\n\n let transformY = this.centered ? '-50' : 40;\n\n anime({\n targets: this.dialog,\n duration,\n opacity: [1, 0],\n translateY: [transformY, 0],\n translateX: ['-50%', '-50%'],\n easing: 'easeInSine',\n complete: () => {\n if (completeCallback) {\n completeCallback();\n }\n },\n });\n }\n\n private onModalClick(event: MouseEvent) {\n const rect = this.dialog.getBoundingClientRect();\n const isClickOutside =\n rect.top <= event.clientY &&\n event.clientY <= rect.top + rect.height &&\n rect.left <= event.clientX &&\n event.clientX <= rect.left + rect.width;\n if (!isClickOutside && this.closeOnBackdropClick) {\n this.dismissModal();\n }\n }\n\n /**\n * Show the dialog\n */\n @Method()\n async showModal() {\n setTimeout(() => this.dialog.showModal());\n }\n\n /**\n * Dismiss the dialog\n */\n @Method()\n async dismissModal<T = any>(reason?: T) {\n let allowDismiss = true;\n\n if (this.beforeDismiss !== undefined) {\n allowDismiss = await this.beforeDismiss(reason);\n }\n if (!allowDismiss) {\n return;\n }\n\n this.slideOutModal(() => {\n this.dialog.close(\n JSON.stringify(\n {\n type: 'dismiss',\n reason,\n },\n null,\n 2\n )\n );\n\n this.dialogDismiss.emit(reason);\n });\n }\n\n /**\n * Close the dialog\n */\n @Method()\n async closeModal<T = any>(reason: T) {\n this.slideOutModal(() => {\n this.dialog.close(\n JSON.stringify(\n {\n type: 'close',\n reason,\n },\n null,\n 2\n )\n );\n\n this.dialogClose.emit(reason);\n });\n }\n\n componentDidLoad() {\n this.slideInModal();\n }\n\n componentWillLoad() {\n this.ariaAttributes = a11yHostAttributes(this.hostElement);\n }\n\n render() {\n return (\n <Host\n class={{\n 'no-backdrop': this.backdrop === false,\n 'align-center': this.centered,\n }}\n >\n <div class=\"dialog-backdrop\">\n <dialog\n aria-modal={a11yBoolean(true)}\n aria-describedby={this.ariaAttributes['aria-describedby']}\n aria-labelledby={this.ariaAttributes['aria-labelledby']}\n class={`modal modal-size-${this.size}`}\n onKeyDown={(e) => {\n if (e.key === 'Escape' && this.keyboard === false) {\n e.preventDefault();\n }\n }}\n onClick={(event) => this.onModalClick(event)}\n onCancel={(e) => {\n e.preventDefault();\n this.dismissModal();\n }}\n >\n <slot></slot>\n </dialog>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"mLAAA,MAAMA,EAAW,88C,MC+BJC,EAAK,M,+GACRC,KAAAC,eAAiC,G,UASb,M,eAKR,K,cAKD,K,0BAOY,M,2CAaZ,M,cAKA,I,CAYfC,aACF,OAAOF,KAAKG,YAAYC,WAAWC,cAAc,S,CAG3CC,eACN,MAAMC,EAAWP,KAAKQ,UAAYC,EAAUC,WAAa,EAEzD,IAAIC,EAAaX,KAAKY,SAAW,MAAQ,GAEzCC,EAAM,CACJC,QAASd,KAAKE,OACdK,WACAQ,QAAS,CAAC,EAAG,GACbC,WAAY,CAAC,EAAGL,GAChBM,WAAY,CAAC,OAAQ,QACrBC,OAAQ,e,CAIJC,cAAcC,GACpB,MAAMb,EAAWP,KAAKQ,UAAYC,EAAUC,WAAa,EAEzD,IAAIC,EAAaX,KAAKY,SAAW,MAAQ,GAEzCC,EAAM,CACJC,QAASd,KAAKE,OACdK,WACAQ,QAAS,CAAC,EAAG,GACbC,WAAY,CAACL,EAAY,GACzBM,WAAY,CAAC,OAAQ,QACrBC,OAAQ,aACRG,SAAU,KACR,GAAID,EAAkB,CACpBA,G,KAMAE,aAAaC,GACnB,MAAMC,EAAOxB,KAAKE,OAAOuB,wBACzB,MAAMC,EACJF,EAAKG,KAAOJ,EAAMK,SAClBL,EAAMK,SAAWJ,EAAKG,IAAMH,EAAKK,QACjCL,EAAKM,MAAQP,EAAMQ,SACnBR,EAAMQ,SAAWP,EAAKM,KAAON,EAAKQ,MACpC,IAAKN,GAAkB1B,KAAKiC,qBAAsB,CAChDjC,KAAKkC,c,EAQTC,kBACEC,YAAW,IAAMpC,KAAKE,OAAOmC,a,CAO/BF,mBAA4BG,GAC1B,IAAIC,EAAe,KAEnB,GAAIvC,KAAKwC,gBAAkBC,UAAW,CACpCF,QAAqBvC,KAAKwC,cAAcF,E,CAE1C,IAAKC,EAAc,CACjB,M,CAGFvC,KAAKmB,eAAc,KACjBnB,KAAKE,OAAOwC,MACVC,KAAKC,UACH,CACEC,KAAM,UACNP,UAEF,KACA,IAIJtC,KAAK8C,cAAcC,KAAKT,EAAO,G,CAQnCH,iBAA0BG,GACxBtC,KAAKmB,eAAc,KACjBnB,KAAKE,OAAOwC,MACVC,KAAKC,UACH,CACEC,KAAM,QACNP,UAEF,KACA,IAIJtC,KAAKgD,YAAYD,KAAKT,EAAO,G,CAIjCW,mBACEjD,KAAKM,c,CAGP4C,oBACElD,KAAKC,eAAiBkD,EAAmBnD,KAAKG,Y,CAGhDiD,SACE,OACEC,EAACC,EAAI,CACHC,MAAO,CACL,cAAevD,KAAKwD,WAAa,MACjC,eAAgBxD,KAAKY,WAGvByC,EAAA,OAAKE,MAAM,mBACTF,EAAA,uBACcI,EAAY,MAAK,mBACXzD,KAAKC,eAAe,oBAAmB,kBACxCD,KAAKC,eAAe,mBACrCsD,MAAO,oBAAoBvD,KAAK0D,OAChCC,UAAYC,IACV,GAAIA,EAAEC,MAAQ,UAAY7D,KAAK8D,WAAa,MAAO,CACjDF,EAAEG,gB,GAGNC,QAAUzC,GAAUvB,KAAKsB,aAAaC,GACtC0C,SAAWL,IACTA,EAAEG,iBACF/D,KAAKkC,cAAc,GAGrBmB,EAAA,e"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,c as s,h as i,H as e,g as r}from"./p-76a509c7.js";import{f as h,i as o,s as n,o as a,a as d,c}from"./p-00df4a8c.js";const l=":host{background-color:var(--theme-color-2);border-radius:var(--theme-default-border-radius);min-width:0px;z-index:var(--theme-z-index-dropdown);box-shadow:var(--theme-shadow-4);padding:0.25rem 0px}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host .dropdown-header{display:flex;align-items:center;height:2.5rem;color:var(--theme-menu-header--color);padding:0 1rem}:host(.overflow){max-height:50vh;overflow-y:auto}:host(:not(.show)){display:none}";const u=new Map;let f=0;const b=class{constructor(i){t(this,i);this.showChanged=s(this,"showChanged",7);this.autoUpdateCleanup=null;this.localUId=`dropdown-${f++}-${(new Date).valueOf()}`;this.suppressAutomaticPlacement=false;this.show=false;this.trigger=undefined;this.anchor=undefined;this.closeBehavior="both";this.placement="bottom-start";this.positioningStrategy="fixed";this.header=undefined;this.offset=undefined;this.triggerEvent="click";this.overwriteDropdownStyle=undefined;this.toggleBind=this.toggle.bind(this);this.openBind=this.open.bind(this);if(u.has(this.localUId)){console.warn("Dropdown with duplicated id detected")}u.set(this.localUId,{dispose:this.close.bind(this),element:this.hostElement})}get dropdownItems(){return Array.from(this.hostElement.querySelectorAll("ix-dropdown-item"))}get slotElement(){return this.hostElement.shadowRoot.querySelector("slot")}addEventListenersFor(t){switch(t){case"click":this.triggerElement.addEventListener("click",this.openBind);break;case"hover":this.triggerElement.addEventListener("mouseenter",this.openBind);break;case"focus":this.triggerElement.addEventListener("focusin",this.openBind);break}}removeEventListenersFor(t,s){switch(t){case"click":if(this.closeBehavior==="outside"){s.removeEventListener("click",this.openBind)}else{s.removeEventListener("click",this.toggleBind)}break;case"hover":s.removeEventListener("mouseenter",this.openBind);break;case"focus":s.removeEventListener("focusin",this.openBind);break}}async registerListener(t){this.triggerElement=await this.resolveElement(t);if(this.triggerElement){if(Array.isArray(this.triggerEvent)){this.triggerEvent.forEach((t=>{this.addEventListenersFor(t)}))}else{this.addEventListenersFor(this.triggerEvent)}}}async unregisterListener(t){const s=await this.resolveElement(t);if(Array.isArray(this.triggerEvent)){this.triggerEvent.forEach((t=>{this.removeEventListenersFor(t,s)}))}else{this.removeEventListenersFor(this.triggerEvent,s)}}resolveElement(t){if(typeof t!=="string"){return Promise.resolve(t)}const s=`#${t}`;return new Promise((t=>{if(document.querySelector(s)){return t(document.querySelector(s))}const i=new MutationObserver((()=>{if(document.querySelector(s)){t(document.querySelector(s));i.disconnect()}}));i.observe(document.body,{childList:true,subtree:true})}))}async changedShow(t){if(t){this.anchorElement=await(this.anchor?this.resolveElement(this.anchor):this.resolveElement(this.trigger));if(this.anchorElement){this.applyDropdownPosition()}}if(t){u.forEach(((t,s)=>{if(s!==this.localUId&&!this.isAnchorSubmenu()&&!t.element.contains(this.hostElement)){t.dispose()}}))}}changedTrigger(t,s){if(t){this.registerListener(t)}if(s){this.unregisterListener(s)}}clickOutside(t){var s,i;const e=t.target;if(t.defaultPrevented){return}if(this.show===false||this.closeBehavior===false||((s=this.anchorElement)===null||s===void 0?void 0:s.contains(e))||((i=this.triggerElement)===null||i===void 0?void 0:i.contains(e))){return}const r=this.isClickInsideDropdown(t);switch(this.closeBehavior){case"outside":if(!r||this.anchor===e){this.close()}break;case"inside":if(r&&this.hostElement!==e){this.close()}break;case"both":if(this.hostElement!==e){this.close()}break;default:this.close()}}keydown(t){if(this.show===true&&t.code==="Escape"){this.close()}}isNestedDropdown(t){return t.closest("ix-dropdown")}isAnchorSubmenu(){var t;const s=(t=this.anchorElement)===null||t===void 0?void 0:t.closest("ix-dropdown-item");if(!s){return false}return true}toggle(t){t.preventDefault();if(this.isNestedDropdown(t.target)){t.stopPropagation()}const{defaultPrevented:s}=this.showChanged.emit(this.show);if(!s){this.show=!this.show}}open(t){t.preventDefault();if(this.isNestedDropdown(t.target)){t.stopPropagation()}const{defaultPrevented:s}=this.showChanged.emit(true);if(!s){this.show=true}}close(){const{defaultPrevented:t}=this.showChanged.emit(false);if(!t){this.show=false}}async applyDropdownPosition(){if(!this.anchorElement){return}if(!this.dropdownRef){return}const t=this.isAnchorSubmenu();let s={strategy:this.positioningStrategy,middleware:[]};if(!this.suppressAutomaticPlacement){s.middleware.push(h({fallbackStrategy:"initialPlacement"}))}s.placement=t?"right-start":this.placement;s.middleware=[...s.middleware,o(),n()];if(this.offset){s.middleware.push(a(this.offset))}if(this.autoUpdateCleanup){this.autoUpdateCleanup();this.autoUpdateCleanup=null}this.autoUpdateCleanup=d(this.anchorElement,this.dropdownRef,(async()=>{const t=await c(this.anchorElement,this.dropdownRef,s);Object.assign(this.dropdownRef.style,{top:"0",left:"0",transform:`translate(${Math.round(t.x)}px,${Math.round(t.y)}px)`});if(this.overwriteDropdownStyle){const t=await this.overwriteDropdownStyle({dropdownRef:this.dropdownRef,triggerRef:this.triggerElement});Object.assign(this.dropdownRef.style,t)}}),{ancestorResize:true,ancestorScroll:true,elementResize:true})}async componentDidLoad(){this.changedTrigger(this.trigger,null)}async componentDidRender(){var t;await this.applyDropdownPosition();this.anchorElement=await(this.anchor?this.resolveElement(this.anchor):this.resolveElement(this.trigger));if(this.isAnchorSubmenu()&&((t=this.anchorElement)===null||t===void 0?void 0:t.tagName)==="IX-DROPDOWN-ITEM"){this.anchorElement.isSubMenu=true}}isClickInsideDropdown(t){const s=this.dropdownRef.getBoundingClientRect();return s.top<=t.clientY&&t.clientY<=s.top+s.height&&s.left<=t.clientX&&t.clientX<=s.left+s.width}disconnectedCallback(){if(this.autoUpdateCleanup){this.autoUpdateCleanup()}if(u.has(this.localUId)){u.delete(this.localUId)}}async updatePosition(){this.applyDropdownPosition()}render(){return i(e,{ref:t=>this.dropdownRef=t,class:{"dropdown-menu":true,show:this.show,overflow:true},style:{margin:"0",minWidth:"0px",position:this.positioningStrategy},role:"list"},i("div",{style:{display:"contents"}},this.header?i("div",{class:"dropdown-header"},this.header):"",i("slot",null)))}get hostElement(){return r(this)}static get watchers(){return{show:["changedShow"],trigger:["changedTrigger"]}}};b.style=l;export{b as ix_dropdown};
|
|
2
|
+
//# sourceMappingURL=p-bd873b87.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dropdownCss","dropdownDisposer","Map","sequenceId","Dropdown","constructor","hostRef","this","autoUpdateCleanup","localUId","Date","valueOf","toggleBind","toggle","bind","openBind","open","has","console","warn","set","dispose","close","element","hostElement","dropdownItems","Array","from","querySelectorAll","slotElement","shadowRoot","querySelector","addEventListenersFor","triggerEvent","triggerElement","addEventListener","removeEventListenersFor","closeBehavior","removeEventListener","async","resolveElement","isArray","forEach","trigger","Promise","resolve","selector","document","observer","MutationObserver","disconnect","observe","body","childList","subtree","newShow","anchorElement","anchor","applyDropdownPosition","entry","id","isAnchorSubmenu","contains","changedTrigger","newTriggerValue","oldTriggerValue","registerListener","unregisterListener","clickOutside","event","target","defaultPrevented","show","_a","_b","clickInsideDropdown","isClickInsideDropdown","keydown","code","isNestedDropdown","closest","preventDefault","stopPropagation","showChanged","emit","dropdownRef","isSubmenu","positionConfig","strategy","positioningStrategy","middleware","suppressAutomaticPlacement","push","flip","fallbackStrategy","placement","inline","shift","offset","autoUpdate","computeResponse","computePosition","Object","assign","style","top","left","transform","Math","round","x","y","overwriteDropdownStyle","overwriteStyle","triggerRef","ancestorResize","ancestorScroll","elementResize","tagName","isSubMenu","rect","getBoundingClientRect","clientY","height","clientX","width","disconnectedCallback","delete","render","h","Host","ref","class","overflow","margin","minWidth","position","role","display","header"],"sources":["./src/components/dropdown/dropdown.scss?tag=ix-dropdown&encapsulation=shadow","./src/components/dropdown/dropdown.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'common-variables';\n\n@import 'legacy/mixins/fonts';\n@import 'mixins/text-truncation';\n@import 'mixins/shadow-dom/component';\n\n:host {\n background-color: var(--theme-color-2);\n border-radius: var(--theme-default-border-radius);\n @include ix-component;\n min-width: 0px;\n z-index: var(--theme-z-index-dropdown);\n box-shadow: var(--theme-shadow-4);\n\n padding: 0.25rem 0px;\n\n .dropdown-header {\n display: flex;\n align-items: center;\n height: $large-control-height;\n color: var(--theme-menu-header--color);\n padding: 0 $default-space;\n }\n}\n\n:host(.overflow) {\n max-height: 50vh;\n overflow-y: auto;\n}\n\n:host(:not(.show)) {\n display: none;\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n inline,\n offset,\n shift,\n} from '@floating-ui/dom';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { AlignedPlacement } from './placement';\n\n/**\n * @internal\n */\nexport type DropdownTriggerEvent = 'click' | 'hover' | 'focus';\n\ntype DisposeDropdown = () => void;\ntype DropdownDisposerEntry = {\n element: HTMLIxDropdownElement;\n dispose: DisposeDropdown;\n};\nconst dropdownDisposer = new Map<string, DropdownDisposerEntry>();\nlet sequenceId = 0;\n\n@Component({\n tag: 'ix-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown {\n @Element() hostElement!: HTMLIxDropdownElement;\n\n /**\n * Suppress the automatic placement of the dropdown.\n *\n * @since 2.0.0\n */\n @Prop() suppressAutomaticPlacement = false;\n\n /**\n * Show dropdown\n */\n @Prop({ mutable: true, reflect: true }) show = false;\n\n /**\n * Define an element that triggers the dropdown.\n * A trigger can either be a string that will be interpreted as id attribute or a DOM element.\n */\n @Prop() trigger: string | HTMLElement;\n\n /**\n * Define an anchor element\n */\n @Prop() anchor: string | HTMLElement;\n\n /**\n * Controls if the dropdown will be closed in response to a click event depending on the position of the event relative to the dropdown.\n */\n @Prop() closeBehavior: 'inside' | 'outside' | 'both' | boolean = 'both';\n\n /**\n * Placement of the dropdown\n */\n @Prop() placement: AlignedPlacement = 'bottom-start';\n\n /**\n * Position strategy\n */\n @Prop() positioningStrategy: 'absolute' | 'fixed' = 'fixed';\n\n /**\n * An optional header shown at the top of the dropdown\n */\n @Prop() header?: string;\n\n /**\n * Move dropdown along main axis of alignment\n *\n * @internal\n */\n @Prop() offset: {\n mainAxis?: number;\n crossAxis?: number;\n alignmentAxis?: number;\n };\n\n /**\n * Define one or more events to open dropdown\n * @internal\n */\n @Prop() triggerEvent: DropdownTriggerEvent | DropdownTriggerEvent[] = 'click';\n\n /**\n * @internal\n */\n @Prop() overwriteDropdownStyle: (delegate: {\n dropdownRef: HTMLElement;\n triggerRef?: HTMLElement;\n }) => Promise<Partial<CSSStyleDeclaration>>;\n\n /**\n * Fire event after visibility of dropdown has changed\n */\n @Event() showChanged: EventEmitter<boolean>;\n\n private autoUpdateCleanup: () => void = null;\n\n private triggerElement?: Element;\n private anchorElement?: Element;\n\n private dropdownRef: HTMLElement;\n\n private toggleBind: any;\n private openBind: any;\n\n private localUId = `dropdown-${sequenceId++}-${new Date().valueOf()}`;\n\n constructor() {\n this.toggleBind = this.toggle.bind(this);\n this.openBind = this.open.bind(this);\n\n if (dropdownDisposer.has(this.localUId)) {\n console.warn('Dropdown with duplicated id detected');\n }\n\n dropdownDisposer.set(this.localUId, {\n dispose: this.close.bind(this),\n element: this.hostElement,\n });\n }\n\n get dropdownItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-dropdown-item'));\n }\n\n get slotElement() {\n return this.hostElement.shadowRoot.querySelector('slot');\n }\n\n private addEventListenersFor(triggerEvent: DropdownTriggerEvent) {\n switch (triggerEvent) {\n case 'click':\n this.triggerElement.addEventListener('click', this.openBind);\n break;\n\n case 'hover':\n this.triggerElement.addEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n this.triggerElement.addEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private removeEventListenersFor(\n triggerEvent: DropdownTriggerEvent,\n triggerElement: Element\n ) {\n switch (triggerEvent) {\n case 'click':\n if (this.closeBehavior === 'outside') {\n triggerElement.removeEventListener('click', this.openBind);\n } else {\n triggerElement.removeEventListener('click', this.toggleBind);\n }\n break;\n\n case 'hover':\n triggerElement.removeEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n triggerElement.removeEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private async registerListener(element: string | HTMLElement) {\n this.triggerElement = await this.resolveElement(element);\n if (this.triggerElement) {\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.addEventListenersFor(triggerEvent);\n });\n } else {\n this.addEventListenersFor(this.triggerEvent);\n }\n }\n }\n\n private async unregisterListener(element: string | HTMLElement) {\n const trigger = await this.resolveElement(element);\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.removeEventListenersFor(triggerEvent, trigger);\n });\n } else {\n this.removeEventListenersFor(this.triggerEvent, trigger);\n }\n }\n\n private resolveElement(element: string | HTMLElement): Promise<Element> {\n if (typeof element !== 'string') {\n return Promise.resolve(element);\n }\n\n const selector = `#${element}`;\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n @Watch('show')\n async changedShow(newShow: boolean) {\n if (newShow) {\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (this.anchorElement) {\n this.applyDropdownPosition();\n }\n }\n\n if (newShow) {\n dropdownDisposer.forEach((entry, id) => {\n if (\n id !== this.localUId &&\n !this.isAnchorSubmenu() &&\n !entry.element.contains(this.hostElement)\n ) {\n entry.dispose();\n }\n });\n }\n }\n\n @Watch('trigger')\n changedTrigger(\n newTriggerValue: string | HTMLElement,\n oldTriggerValue: string | HTMLElement\n ) {\n if (newTriggerValue) {\n this.registerListener(newTriggerValue);\n }\n\n if (oldTriggerValue) {\n this.unregisterListener(oldTriggerValue);\n }\n }\n\n @Listen('click', {\n target: 'window',\n })\n clickOutside(event: PointerEvent) {\n const target = event.target as HTMLElement;\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (\n this.show === false ||\n this.closeBehavior === false ||\n this.anchorElement?.contains(target) ||\n this.triggerElement?.contains(target)\n ) {\n return;\n }\n\n const clickInsideDropdown = this.isClickInsideDropdown(event);\n\n switch (this.closeBehavior) {\n case 'outside':\n if (!clickInsideDropdown || this.anchor === target) {\n this.close();\n }\n break;\n case 'inside':\n if (clickInsideDropdown && this.hostElement !== target) {\n this.close();\n }\n break;\n case 'both':\n if (this.hostElement !== target) {\n this.close();\n }\n break;\n default:\n this.close();\n }\n }\n\n @Listen('keydown', {\n target: 'window',\n })\n keydown(event: KeyboardEvent) {\n if (this.show === true && event.code === 'Escape') {\n this.close();\n }\n }\n\n private isNestedDropdown(element: Element) {\n return element.closest('ix-dropdown');\n }\n\n private isAnchorSubmenu() {\n const anchor = this.anchorElement?.closest('ix-dropdown-item');\n if (!anchor) {\n return false;\n }\n\n return true;\n }\n\n private toggle(event: Event) {\n event.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n\n const { defaultPrevented } = this.showChanged.emit(this.show);\n\n if (!defaultPrevented) {\n this.show = !this.show;\n }\n }\n\n private open(event: Event) {\n event.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n\n const { defaultPrevented } = this.showChanged.emit(true);\n\n if (!defaultPrevented) {\n this.show = true;\n }\n }\n\n private close() {\n const { defaultPrevented } = this.showChanged.emit(false);\n\n if (!defaultPrevented) {\n this.show = false;\n }\n }\n\n private async applyDropdownPosition() {\n if (!this.anchorElement) {\n return;\n }\n if (!this.dropdownRef) {\n return;\n }\n const isSubmenu = this.isAnchorSubmenu();\n\n let positionConfig: Partial<ComputePositionConfig> = {\n strategy: this.positioningStrategy,\n middleware: [],\n };\n\n if (!this.suppressAutomaticPlacement) {\n positionConfig.middleware.push(\n flip({ fallbackStrategy: 'initialPlacement' })\n );\n }\n\n positionConfig.placement = isSubmenu ? 'right-start' : this.placement;\n\n positionConfig.middleware = [\n ...positionConfig.middleware,\n inline(),\n shift(),\n ];\n\n if (this.offset) {\n positionConfig.middleware.push(offset(this.offset));\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n\n this.autoUpdateCleanup = autoUpdate(\n this.anchorElement,\n this.dropdownRef,\n async () => {\n const computeResponse = await computePosition(\n this.anchorElement,\n this.dropdownRef,\n positionConfig\n );\n\n Object.assign(this.dropdownRef.style, {\n top: '0',\n left: '0',\n transform: `translate(${Math.round(computeResponse.x)}px,${Math.round(\n computeResponse.y\n )}px)`,\n });\n if (this.overwriteDropdownStyle) {\n const overwriteStyle = await this.overwriteDropdownStyle({\n dropdownRef: this.dropdownRef,\n triggerRef: this.triggerElement as HTMLElement,\n });\n\n Object.assign(this.dropdownRef.style, overwriteStyle);\n }\n },\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n }\n );\n }\n\n async componentDidLoad() {\n this.changedTrigger(this.trigger, null);\n }\n\n async componentDidRender() {\n await this.applyDropdownPosition();\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (\n this.isAnchorSubmenu() &&\n this.anchorElement?.tagName === 'IX-DROPDOWN-ITEM'\n ) {\n (this.anchorElement as HTMLIxDropdownItemElement).isSubMenu = true;\n }\n }\n\n private isClickInsideDropdown(event: PointerEvent) {\n const rect = this.dropdownRef.getBoundingClientRect();\n return (\n rect.top <= event.clientY &&\n event.clientY <= rect.top + rect.height &&\n rect.left <= event.clientX &&\n event.clientX <= rect.left + rect.width\n );\n }\n\n disconnectedCallback() {\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n }\n\n if (dropdownDisposer.has(this.localUId)) {\n dropdownDisposer.delete(this.localUId);\n }\n }\n\n /**\n * Update position of dropdown\n */\n @Method()\n async updatePosition() {\n this.applyDropdownPosition();\n }\n\n render() {\n return (\n <Host\n ref={(ref) => (this.dropdownRef = ref)}\n class={{\n 'dropdown-menu': true,\n show: this.show,\n overflow: true,\n }}\n style={{\n margin: '0',\n minWidth: '0px',\n position: this.positioningStrategy,\n }}\n role=\"list\"\n >\n <div style={{ display: 'contents' }}>\n {this.header ? <div class=\"dropdown-header\">{this.header}</div> : ''}\n\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|