@siemens/ix 2.4.0 → 2.4.1
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/application-header.js +17 -11
- package/components/application-header.js.map +1 -1
- package/components/avatar.js +1 -1
- package/components/avatar.js.map +1 -1
- package/components/dropdown.js +10 -6
- package/components/dropdown.js.map +1 -1
- package/components/group-item.js +4 -8
- package/components/group-item.js.map +1 -1
- package/components/ix-basic-navigation.js +16 -10
- package/components/ix-basic-navigation.js.map +1 -1
- package/components/ix-group.js +29 -24
- package/components/ix-group.js.map +1 -1
- package/components/ix-map-navigation.js +18 -12
- package/components/ix-map-navigation.js.map +1 -1
- package/components/ix-pagination.js +3 -3
- package/components/ix-pagination.js.map +1 -1
- package/components/ix-slider.js +20 -13
- package/components/ix-slider.js.map +1 -1
- package/components/service.js +2 -2
- package/components/service.js.map +1 -1
- package/components/tab-item.js +3 -3
- package/components/tab-item.js.map +1 -1
- package/components/tabs.js +77 -43
- package/components/tabs.js.map +1 -1
- package/components/tooltip.js +4 -4
- package/components/tooltip.js.map +1 -1
- package/dist/cjs/ix-application-header.cjs.entry.js +4 -4
- package/dist/cjs/ix-application-header.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-application.cjs.entry.js +1 -1
- package/dist/cjs/ix-avatar_2.cjs.entry.js +1 -1
- package/dist/cjs/ix-avatar_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-basic-navigation.cjs.entry.js +1 -1
- package/dist/cjs/ix-dropdown.cjs.entry.js +10 -6
- package/dist/cjs/ix-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-group-context-menu_2.cjs.entry.js +4 -8
- package/dist/cjs/ix-group-context-menu_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-group.cjs.entry.js +29 -23
- package/dist/cjs/ix-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-menu.cjs.entry.js +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-pane-layout.cjs.entry.js +1 -1
- package/dist/cjs/ix-pane.cjs.entry.js +1 -1
- package/dist/cjs/ix-slider.cjs.entry.js +20 -13
- package/dist/cjs/ix-slider.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-tab-item_2.cjs.entry.js +74 -44
- package/dist/cjs/ix-tab-item_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ix-tooltip.cjs.entry.js +4 -4
- package/dist/cjs/ix-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{service-a42add5f.js → service-39a8e5fe.js} +3 -3
- package/dist/cjs/service-39a8e5fe.js.map +1 -0
- package/dist/cjs/siemens-ix.cjs.js +1 -1
- package/dist/collection/components/application-header/application-header.js +4 -4
- package/dist/collection/components/application-header/application-header.js.map +1 -1
- package/dist/collection/components/avatar/avatar.css +42 -0
- package/dist/collection/components/dropdown/dropdown.js +10 -6
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/group/group.js +34 -28
- package/dist/collection/components/group/group.js.map +1 -1
- package/dist/collection/components/group/test/group.ct.js +39 -1
- package/dist/collection/components/group/test/group.ct.js.map +1 -1
- package/dist/collection/components/group-item/group-item.css +0 -4
- package/dist/collection/components/group-item/group-item.js +9 -12
- package/dist/collection/components/group-item/group-item.js.map +1 -1
- package/dist/collection/components/pagination/pagination.js +5 -4
- package/dist/collection/components/pagination/pagination.js.map +1 -1
- package/dist/collection/components/select/test/select.ct.js +1 -1
- package/dist/collection/components/select/test/select.ct.js.map +1 -1
- package/dist/collection/components/slider/slider.css +1 -1
- package/dist/collection/components/slider/slider.js +23 -15
- package/dist/collection/components/slider/slider.js.map +1 -1
- package/dist/collection/components/slider/test/slider.ct.js +15 -6
- package/dist/collection/components/slider/test/slider.ct.js.map +1 -1
- package/dist/collection/components/tab-item/tab-item.js +4 -4
- package/dist/collection/components/tab-item/tab-item.js.map +1 -1
- package/dist/collection/components/tabs/tabs.js +77 -42
- package/dist/collection/components/tabs/tabs.js.map +1 -1
- package/dist/collection/components/tabs/test/tabs.ct.js +35 -9
- package/dist/collection/components/tabs/test/tabs.ct.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js +13 -8
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/collection/components/utils/application-layout/service.js +2 -2
- package/dist/collection/components/utils/application-layout/service.js.map +1 -1
- package/dist/collection/tests/avatar/avatar.e2e.js +6 -0
- package/dist/collection/tests/avatar/avatar.e2e.js.map +1 -1
- package/dist/collection/tests/slider/slider.e2e.js +14 -0
- package/dist/collection/tests/slider/slider.e2e.js.map +1 -1
- package/dist/collection/tests/tabs/tabs.e2e.js +1 -1
- package/dist/collection/tests/tabs/tabs.e2e.js.map +1 -1
- package/dist/esm/ix-application-header.entry.js +4 -4
- package/dist/esm/ix-application-header.entry.js.map +1 -1
- package/dist/esm/ix-application.entry.js +1 -1
- package/dist/esm/ix-avatar_2.entry.js +1 -1
- package/dist/esm/ix-avatar_2.entry.js.map +1 -1
- package/dist/esm/ix-basic-navigation.entry.js +1 -1
- package/dist/esm/ix-dropdown.entry.js +10 -6
- package/dist/esm/ix-dropdown.entry.js.map +1 -1
- package/dist/esm/ix-group-context-menu_2.entry.js +4 -8
- package/dist/esm/ix-group-context-menu_2.entry.js.map +1 -1
- package/dist/esm/ix-group.entry.js +29 -23
- package/dist/esm/ix-group.entry.js.map +1 -1
- package/dist/esm/ix-menu.entry.js +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-pane-layout.entry.js +1 -1
- package/dist/esm/ix-pane.entry.js +1 -1
- package/dist/esm/ix-slider.entry.js +20 -13
- package/dist/esm/ix-slider.entry.js.map +1 -1
- package/dist/esm/ix-tab-item_2.entry.js +74 -44
- package/dist/esm/ix-tab-item_2.entry.js.map +1 -1
- package/dist/esm/ix-tooltip.entry.js +4 -4
- package/dist/esm/ix-tooltip.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{service-02cc9011.js → service-c7fc628b.js} +3 -3
- package/dist/esm/service-c7fc628b.js.map +1 -0
- package/dist/esm/siemens-ix.js +1 -1
- package/dist/siemens-ix/p-0b4e3779.entry.js +2 -0
- package/dist/siemens-ix/p-0b4e3779.entry.js.map +1 -0
- package/dist/siemens-ix/p-4df0cdd7.entry.js +2 -0
- package/dist/siemens-ix/p-4df0cdd7.entry.js.map +1 -0
- package/dist/siemens-ix/{p-96a3a750.entry.js → p-5b135f6b.entry.js} +2 -2
- package/dist/siemens-ix/{p-96a3a750.entry.js.map → p-5b135f6b.entry.js.map} +1 -1
- package/dist/siemens-ix/{p-29df2e29.entry.js → p-71315e2e.entry.js} +2 -2
- package/dist/siemens-ix/p-71315e2e.entry.js.map +1 -0
- package/dist/siemens-ix/{p-a536adcb.entry.js → p-a0a44a2b.entry.js} +2 -2
- package/dist/siemens-ix/{p-7750e187.entry.js → p-bc2c74c5.entry.js} +2 -2
- package/dist/siemens-ix/{p-c389de85.entry.js → p-c33cee36.entry.js} +2 -2
- package/dist/siemens-ix/p-d331216f.entry.js +2 -0
- package/dist/siemens-ix/p-d331216f.entry.js.map +1 -0
- package/dist/siemens-ix/p-d8790ff5.entry.js +2 -0
- package/dist/siemens-ix/p-d8790ff5.entry.js.map +1 -0
- package/dist/siemens-ix/p-d950c3a8.entry.js +2 -0
- package/dist/siemens-ix/p-d950c3a8.entry.js.map +1 -0
- package/dist/siemens-ix/{p-112069ca.entry.js → p-dbe8f5e6.entry.js} +2 -2
- package/dist/siemens-ix/p-dbe8f5e6.entry.js.map +1 -0
- package/dist/siemens-ix/{p-ae7a7af4.entry.js → p-dde7eb80.entry.js} +2 -2
- package/dist/siemens-ix/{p-4344ba99.entry.js → p-f318140c.entry.js} +2 -2
- package/dist/siemens-ix/p-f318140c.entry.js.map +1 -0
- package/dist/siemens-ix/{p-702f9349.js → p-fbe017b7.js} +2 -2
- package/dist/siemens-ix/p-fbe017b7.js.map +1 -0
- package/dist/siemens-ix/{p-6b928634.entry.js → p-fc5814df.entry.js} +2 -2
- 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 -1
- package/dist/types/components/dropdown/dropdown.d.ts +1 -0
- package/dist/types/components/group/group.d.ts +3 -4
- package/dist/types/components/group-item/group-item.d.ts +4 -4
- package/dist/types/components/slider/slider.d.ts +3 -3
- package/dist/types/components/tab-item/tab-item.d.ts +1 -1
- package/dist/types/components/tabs/tabs.d.ts +7 -4
- package/dist/types/components/tooltip/tooltip.d.ts +7 -7
- package/dist/types/components.d.ts +16 -14
- package/hydrate/index.js +153 -109
- package/package.json +1 -1
- package/dist/cjs/service-a42add5f.js.map +0 -1
- package/dist/esm/service-02cc9011.js.map +0 -1
- package/dist/siemens-ix/p-112069ca.entry.js.map +0 -1
- package/dist/siemens-ix/p-29df2e29.entry.js.map +0 -1
- package/dist/siemens-ix/p-315f070d.entry.js +0 -2
- package/dist/siemens-ix/p-315f070d.entry.js.map +0 -1
- package/dist/siemens-ix/p-4344ba99.entry.js.map +0 -1
- package/dist/siemens-ix/p-60c16878.entry.js +0 -2
- package/dist/siemens-ix/p-60c16878.entry.js.map +0 -1
- package/dist/siemens-ix/p-702f9349.js.map +0 -1
- package/dist/siemens-ix/p-c55db6c7.entry.js +0 -2
- package/dist/siemens-ix/p-c55db6c7.entry.js.map +0 -1
- package/dist/siemens-ix/p-f07110c6.entry.js +0 -2
- package/dist/siemens-ix/p-f07110c6.entry.js.map +0 -1
- package/dist/siemens-ix/p-fa53933d.entry.js +0 -2
- package/dist/siemens-ix/p-fa53933d.entry.js.map +0 -1
- /package/dist/siemens-ix/{p-a536adcb.entry.js.map → p-a0a44a2b.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-7750e187.entry.js.map → p-bc2c74c5.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-c389de85.entry.js.map → p-c33cee36.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-ae7a7af4.entry.js.map → p-dde7eb80.entry.js.map} +0 -0
- /package/dist/siemens-ix/{p-6b928634.entry.js.map → p-fc5814df.entry.js.map} +0 -0
package/components/ix-slider.js
CHANGED
|
@@ -4,7 +4,7 @@ import { O as OnListener } from './listener.js';
|
|
|
4
4
|
import { d as defineCustomElement$3 } from './tooltip.js';
|
|
5
5
|
import { d as defineCustomElement$2 } from './typography.js';
|
|
6
6
|
|
|
7
|
-
const sliderCss = ":host{display:flex;flex-direction:column;min-height:2rem;--thumb-size:1rem;--value:0;--trace-start:0;--trace-end:0;--trace-reference:0;--trace-reference-color:var(--theme-color-8);--trace-color:var(--theme-color-dynamic);--tick-color:var(--theme-color-8);--tick-color--active:var(--theme-color-dynamic);--track-color:var(--theme-color-component-4);}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}@-moz-document url-prefix(){:host *{scrollbar-color:var(--theme-scrollbar-thumb--background) var(--theme-scrollbar-track--background);scrollbar-width:thin}}: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 input[type=range]{position:absolute;top:50%;transform:translateY(-50%);left:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer;width:100%;height:1rem;margin:0}:host input[type=range].trace::before{content:\"\";position:absolute;display:block;z-index:-1;width:calc(7px + 100% * var(--trace-end) - 16px * var(--trace-end) - (7px + 100% * var(--trace-start) - 16px * var(--trace-start)));left:calc(7px + 100% * var(--trace-start) - 16px * var(--trace-start));height:4px;background-color:var(--trace-color);top:50%;transform:translateY(-50%)}:host input[type=range].trace::after{content:\"\";position:absolute;display:block;width:2px;height:16px;background-color:var(--trace-reference-color);top:50%;transform:translateY(-50%);left:calc(7px + 100% * var(--trace-reference) - 16px * var(--trace-reference))}:host input[type=range]::-webkit-slider-runnable-track{background:transparent;height:0.25rem}:host input[type=range]::-moz-range-track{background:transparent;height:0.25rem}:host input[type=range i]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;margin-top:-6px}:host input[type=range i]::-moz-range-thumb{border:none;border-radius:0}:host input[type=range]::-webkit-slider-thumb{border-radius:100px;background-color:var(--theme-color-dynamic);height:var(--thumb-size);width:var(--thumb-size);-webkit-transition:all var(--theme-default-time) ease-in-out;transition:all var(--theme-default-time) ease-in-out;z-index:10}:host input[type=range]::-moz-range-thumb{border-radius:100px;background-color:var(--theme-color-dynamic);height:var(--thumb-size);width:var(--thumb-size);-moz-transition:all var(--theme-default-time) ease-in-out;transition:all var(--theme-default-time) ease-in-out;z-index:10}:host input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:hover::-moz-range-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:active::-webkit-slider-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:active::-moz-range-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:focus{outline:none}:host input[type=range]:focus-visible::-webkit-slider-thumb{outline:1px solid var(--theme-color-focus-bdr);outline-offset:0.125rem}:host input[type=range]:focus-visible::-moz-range-thumb{outline:1px solid var(--theme-color-focus-bdr);outline-offset:0.125rem}:host .ticks{display:flex;position:relative;top:50%;transform:translateY(-50%)}:host .ticks .tick{display:block;position:absolute;width:8px;height:8px;background-color:var(--tick-color);border-radius:100px;top:50%;transform:translateY(-50%);left:calc(var(--tick-value) * 100% - 4px)}:host .ticks .tick.tick-active{background-color:var(--tick-color--active)}:host .slider{position:relative;display:block;width:100%;height:1.5rem}:host .track{position:absolute;background-color:var(--track-color);height:4px;width:calc(100% - 1rem);margin-left:0.5rem;top:50%;transform:translateY(-50%);left:0px}:host .thumb{display:block;position:absolute;background-color:transparent;height:1rem;width:1rem;border-radius:100px;left:0px;top:50%;transform:translateY(-50%)}:host .hide-tooltip{display:none}:host .label{display:flex;position:relative;align-items:center;justify-content:space-between;width:100%;margin-top:0.5rem;min-height:0px}:host .label-start{margin-left:0.5rem}:host .label-end{margin-right:0.5rem}:host .label-error{margin-left:0.5rem}:host(.error){--trace-color:var(--theme-color-alarm-40);--tick-color--active:var(--theme-color-alarm)}:host(.error) input[type=range]::-webkit-slider-thumb{background-color:var(--theme-color-alarm)}:host(.error) input[type=range]::-moz-range-thumb{background-color:var(--theme-color-alarm)}:host(.disabled){pointer-events:none;--track-color:var(--theme-color-component-3);--trace-color:var(--theme-color-3);--tick-color:var(--theme-color-7);--tick-color--active:var(--theme-color-7)}:host(.disabled) input[type=range]::-webkit-slider-thumb{background-color:var(--theme-color-7)}:host(.disabled) input[type=range]::-moz-range-thumb{background-color:var(--theme-color-7)}";
|
|
7
|
+
const sliderCss = ":host{display:flex;flex-direction:column;min-height:2rem;--thumb-size:1rem;--value:0;--trace-start:0;--trace-end:0;--trace-reference:0;--trace-reference-color:var(--theme-color-8);--trace-color:var(--theme-color-dynamic);--tick-color:var(--theme-color-8);--tick-color--active:var(--theme-color-dynamic);--track-color:var(--theme-color-component-4);}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}@-moz-document url-prefix(){:host *{scrollbar-color:var(--theme-scrollbar-thumb--background) var(--theme-scrollbar-track--background);scrollbar-width:thin}}: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 input[type=range]{position:absolute;top:50%;transform:translateY(-50%);left:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer;width:100%;height:1rem;margin:0}:host input[type=range].trace::before{content:\"\";position:absolute;display:block;z-index:-1;width:calc(7px + 100% * var(--trace-end) - 16px * var(--trace-end) - (7px + 100% * var(--trace-start) - 16px * var(--trace-start)));left:calc(7px + 100% * var(--trace-start) - 16px * var(--trace-start));height:4px;background-color:var(--trace-color);top:50%;transform:translateY(-50%)}:host input[type=range].trace:not(.hide-trace-reference)::after{content:\"\";position:absolute;display:block;width:2px;height:16px;background-color:var(--trace-reference-color);top:50%;transform:translateY(-50%);left:calc(7px + 100% * var(--trace-reference) - 16px * var(--trace-reference))}:host input[type=range]::-webkit-slider-runnable-track{background:transparent;height:0.25rem}:host input[type=range]::-moz-range-track{background:transparent;height:0.25rem}:host input[type=range i]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;margin-top:-6px}:host input[type=range i]::-moz-range-thumb{border:none;border-radius:0}:host input[type=range]::-webkit-slider-thumb{border-radius:100px;background-color:var(--theme-color-dynamic);height:var(--thumb-size);width:var(--thumb-size);-webkit-transition:all var(--theme-default-time) ease-in-out;transition:all var(--theme-default-time) ease-in-out;z-index:10}:host input[type=range]::-moz-range-thumb{border-radius:100px;background-color:var(--theme-color-dynamic);height:var(--thumb-size);width:var(--thumb-size);-moz-transition:all var(--theme-default-time) ease-in-out;transition:all var(--theme-default-time) ease-in-out;z-index:10}:host input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:hover::-moz-range-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:active::-webkit-slider-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:active::-moz-range-thumb{transform:scale(1.2);background-color:var(--theme-color-dynamic)}:host input[type=range]:focus{outline:none}:host input[type=range]:focus-visible::-webkit-slider-thumb{outline:1px solid var(--theme-color-focus-bdr);outline-offset:0.125rem}:host input[type=range]:focus-visible::-moz-range-thumb{outline:1px solid var(--theme-color-focus-bdr);outline-offset:0.125rem}:host .ticks{display:flex;position:relative;top:50%;transform:translateY(-50%)}:host .ticks .tick{display:block;position:absolute;width:8px;height:8px;background-color:var(--tick-color);border-radius:100px;top:50%;transform:translateY(-50%);left:calc(var(--tick-value) * 100% - 4px)}:host .ticks .tick.tick-active{background-color:var(--tick-color--active)}:host .slider{position:relative;display:block;width:100%;height:1.5rem}:host .track{position:absolute;background-color:var(--track-color);height:4px;width:calc(100% - 1rem);margin-left:0.5rem;top:50%;transform:translateY(-50%);left:0px}:host .thumb{display:block;position:absolute;background-color:transparent;height:1rem;width:1rem;border-radius:100px;left:0px;top:50%;transform:translateY(-50%)}:host .hide-tooltip{display:none}:host .label{display:flex;position:relative;align-items:center;justify-content:space-between;width:100%;margin-top:0.5rem;min-height:0px}:host .label-start{margin-left:0.5rem}:host .label-end{margin-right:0.5rem}:host .label-error{margin-left:0.5rem}:host(.error){--trace-color:var(--theme-color-alarm-40);--tick-color--active:var(--theme-color-alarm)}:host(.error) input[type=range]::-webkit-slider-thumb{background-color:var(--theme-color-alarm)}:host(.error) input[type=range]::-moz-range-thumb{background-color:var(--theme-color-alarm)}:host(.disabled){pointer-events:none;--track-color:var(--theme-color-component-3);--trace-color:var(--theme-color-3);--tick-color:var(--theme-color-7);--tick-color--active:var(--theme-color-7)}:host(.disabled) input[type=range]::-webkit-slider-thumb{background-color:var(--theme-color-7)}:host(.disabled) input[type=range]::-moz-range-thumb{background-color:var(--theme-color-7)}";
|
|
8
8
|
const IxSliderStyle0 = sliderCss;
|
|
9
9
|
|
|
10
10
|
/*
|
|
@@ -42,7 +42,7 @@ const Slider = /*@__PURE__*/ proxyCustomElement(class Slider extends HTMLElement
|
|
|
42
42
|
this.__registerHost();
|
|
43
43
|
this.__attachShadow();
|
|
44
44
|
this.valueChange = createEvent(this, "valueChange", 7);
|
|
45
|
-
this.step =
|
|
45
|
+
this.step = 1;
|
|
46
46
|
this.min = 0;
|
|
47
47
|
this.max = 100;
|
|
48
48
|
this.value = 0;
|
|
@@ -58,20 +58,24 @@ const Slider = /*@__PURE__*/ proxyCustomElement(class Slider extends HTMLElement
|
|
|
58
58
|
this.showTooltip = false;
|
|
59
59
|
}
|
|
60
60
|
get tooltip() {
|
|
61
|
-
|
|
61
|
+
var _a;
|
|
62
|
+
return (_a = this.hostElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('ix-tooltip');
|
|
62
63
|
}
|
|
63
64
|
get pseudoThumb() {
|
|
64
|
-
|
|
65
|
+
var _a;
|
|
66
|
+
return (_a = this.hostElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.thumb');
|
|
65
67
|
}
|
|
66
68
|
get slider() {
|
|
67
|
-
|
|
69
|
+
var _a;
|
|
70
|
+
return (_a = this.hostElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('slider');
|
|
68
71
|
}
|
|
69
72
|
onShowTooltipChange() {
|
|
73
|
+
var _a, _b;
|
|
70
74
|
if (this.showTooltip) {
|
|
71
|
-
this.tooltip.showTooltip(this.pseudoThumb);
|
|
75
|
+
(_a = this.tooltip) === null || _a === void 0 ? void 0 : _a.showTooltip(this.pseudoThumb);
|
|
72
76
|
return;
|
|
73
77
|
}
|
|
74
|
-
this.tooltip.hideTooltip();
|
|
78
|
+
(_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.hideTooltip();
|
|
75
79
|
}
|
|
76
80
|
componentWillLoad() {
|
|
77
81
|
this.a11yAttributes = a11yHostAttributes(this.hostElement, [
|
|
@@ -122,12 +126,12 @@ const Slider = /*@__PURE__*/ proxyCustomElement(class Slider extends HTMLElement
|
|
|
122
126
|
traceStart = valueInPercentage;
|
|
123
127
|
traceEnd = traceReferenceInPercentage;
|
|
124
128
|
}
|
|
125
|
-
return (h(Host, { key: '
|
|
129
|
+
return (h(Host, { key: 'c7e6a14875ee17d49fe5e42459b81fb561802ebc', class: {
|
|
126
130
|
disabled: this.disabled,
|
|
127
131
|
error: !!this.error,
|
|
128
|
-
}, onPointerDown: () => setTimeout(() => (this.showTooltip = true)) }, h("div", { key: '
|
|
132
|
+
}, onPointerDown: () => setTimeout(() => (this.showTooltip = true)) }, h("div", { key: 'bed770beec56a4798df1c0b8546fd78ef6c1f749', class: "slider" }, h("div", { key: 'b2337e7802806933356cc7930bcb5a0e025796b8', class: "track" }, h("div", { key: 'd5d40d3e44d50112733e5c9137b807e3a25dcafa', class: "thumb", style: {
|
|
129
133
|
left: `calc(${valueInPercentage} * 100% - 8px)`,
|
|
130
|
-
} }), h("div", { key: '
|
|
134
|
+
} }), h("div", { key: '041f4368d4b80929a03abfbe617d8f5bb15957d0', class: "ticks" }, this.marker
|
|
131
135
|
? this.marker.map((markerValue) => {
|
|
132
136
|
if (markerValue > this.max || markerValue < this.min) {
|
|
133
137
|
return;
|
|
@@ -140,20 +144,23 @@ const Slider = /*@__PURE__*/ proxyCustomElement(class Slider extends HTMLElement
|
|
|
140
144
|
'--tick-value': `${left}`,
|
|
141
145
|
} }));
|
|
142
146
|
})
|
|
143
|
-
: null)), h("input", Object.assign({ key: '
|
|
147
|
+
: null)), h("input", Object.assign({ key: 'ef61a64f69ebc8816778dfd95dee2402b0ed9144', id: "slider", type: "range", list: this.marker ? 'markers' : undefined, step: this.step, min: this.min, max: this.max, value: this.rangeInput, tabindex: this.disabled ? -1 : 0, onInput: (event) => this.onInput(event), style: {
|
|
144
148
|
'--value': `${valueInPercentage}`,
|
|
145
149
|
'--trace-reference': `${traceReferenceInPercentage}`,
|
|
146
150
|
'--trace-start': `${traceStart}`,
|
|
147
151
|
'--trace-end': `${traceEnd}`,
|
|
148
152
|
}, class: {
|
|
149
153
|
trace: this.trace && traceReferenceInPercentage !== valueInPercentage,
|
|
154
|
+
'hide-trace-reference': this.trace &&
|
|
155
|
+
(this.traceReference <= this.min ||
|
|
156
|
+
this.traceReference >= this.max),
|
|
150
157
|
}, onFocus: () => {
|
|
151
158
|
this.showTooltip = true;
|
|
152
159
|
}, onBlur: () => {
|
|
153
160
|
this.showTooltip = false;
|
|
154
|
-
}, role: "slider", "aria-valuenow": this.rangeInput, "aria-valuemin": this.min, "aria-valuemax": this.max }, this.a11yAttributes)), h("ix-tooltip", { key: '
|
|
161
|
+
}, role: "slider", "aria-valuenow": this.rangeInput, "aria-valuemin": this.min, "aria-valuemax": this.max }, this.a11yAttributes)), h("ix-tooltip", { key: '4dfe584376f3df426be2e049703adfb4c2bf39ab', class: {
|
|
155
162
|
'hide-tooltip': !this.showTooltip,
|
|
156
|
-
}, animationFrame: true }, this.rangeInput)), h("div", { key: '
|
|
163
|
+
}, animationFrame: true }, this.rangeInput)), h("div", { key: '9c42a9aa11e4c59c2fa9f0b132d6ac3a2b4f8f72', class: "label" }, h("div", { key: '22ed6e4412f84449c68109dd5619054a65d8790f', class: "label-start" }, h("slot", { key: '676a5d1b03b6a398bda253f01396c06ccb7cdb04', name: "label-start" })), h("div", { key: '7ec74b8f1f5a4a6e0eb4dd2b1bd8c32aa098f47c', class: "label-end" }, h("slot", { key: '1a4b99aebbe60d9db5e4ed5c26907aecf2a38568', name: "label-end" }))), this.error ? (h("ix-typography", { class: 'label-error', color: "alarm" }, this.error)) : null));
|
|
157
164
|
}
|
|
158
165
|
get hostElement() { return this; }
|
|
159
166
|
static get watchers() { return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"ix-slider.js","mappings":"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","names":[],"sources":["src/components/slider/slider.scss?tag=ix-slider&encapsulation=shadow","src/components/slider/slider.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@mixin track {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']::-webkit-slider-runnable-track {\n @content;\n }\n\n // Firefox\n input[type='range']::-moz-range-track {\n @content;\n }\n}\n\n@mixin clear-browser-thumb {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range' i]::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n margin-top: -6px;\n }\n\n // Firefox\n input[type='range' i]::-moz-range-thumb {\n border: none;\n border-radius: 0;\n }\n}\n\n@mixin thumb {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']::-moz-range-thumb {\n @content;\n }\n}\n\n@mixin thumb-hover {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']:hover::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']:hover::-moz-range-thumb {\n @content;\n }\n}\n\n@mixin thumb-active {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']:active::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']:active::-moz-range-thumb {\n @content;\n }\n}\n\n@mixin thumb-focus {\n input[type='range']:focus {\n outline: none;\n }\n\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']:focus-visible::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']:focus-visible::-moz-range-thumb {\n @content;\n }\n}\n\n:host {\n @include ix-component;\n display: flex;\n flex-direction: column;\n min-height: 2rem;\n --thumb-size: 1rem;\n --value: 0;\n --trace-start: 0;\n --trace-end: 0;\n --trace-reference: 0;\n --trace-reference-color: var(--theme-color-8);\n --trace-color: var(--theme-color-dynamic);\n --tick-color: var(--theme-color-8);\n --tick-color--active: var(--theme-color-dynamic);\n --track-color: var(--theme-color-component-4);\n\n input[type='range'] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 0;\n appearance: none;\n background: transparent;\n cursor: pointer;\n width: 100%;\n height: 1rem;\n margin: 0;\n }\n\n // Trace line\n input[type='range'].trace::before {\n content: '';\n position: absolute;\n display: block;\n z-index: -1;\n\n width: calc(\n calc(7px + calc(100% * var(--trace-end)) - calc(16px * var(--trace-end))) -\n calc(\n 7px + calc(100% * var(--trace-start)) -\n calc(16px * var(--trace-start))\n )\n );\n\n left: calc(\n 7px + calc(100% * var(--trace-start)) - calc(16px * var(--trace-start))\n );\n\n height: 4px;\n background-color: var(--trace-color);\n top: 50%;\n transform: translateY(-50%);\n }\n\n // Trace reference\n input[type='range'].trace::after {\n content: '';\n position: absolute;\n display: block;\n width: 2px;\n height: 16px;\n background-color: var(--trace-reference-color);\n top: 50%;\n transform: translateY(-50%);\n left: calc(\n 7px + calc(100% * var(--trace-reference)) -\n calc(16px * var(--trace-reference))\n );\n }\n\n @include track() {\n background: transparent;\n height: 0.25rem;\n }\n\n @include clear-browser-thumb();\n\n @include thumb() {\n border-radius: 100px;\n background-color: var(--theme-color-dynamic);\n height: var(--thumb-size);\n width: var(--thumb-size);\n transition: all var(--theme-default-time) ease-in-out;\n z-index: 10;\n }\n\n @include thumb-hover() {\n transform: scale(1.2);\n background-color: var(--theme-color-dynamic);\n }\n\n @include thumb-active() {\n transform: scale(1.2);\n\n background-color: var(--theme-color-dynamic);\n }\n\n @include thumb-focus() {\n outline: 1px solid var(--theme-color-focus-bdr);\n outline-offset: 0.125rem;\n }\n\n /* style datalist */\n .ticks {\n display: flex;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n }\n .ticks .tick {\n display: block;\n position: absolute;\n width: 8px;\n height: 8px;\n background-color: var(--tick-color);\n border-radius: 100px;\n top: 50%;\n transform: translateY(-50%);\n left: calc(var(--tick-value) * 100% - 4px);\n }\n\n .ticks .tick.tick-active {\n background-color: var(--tick-color--active);\n }\n\n .slider {\n position: relative;\n display: block;\n width: 100%;\n height: 1.5rem;\n }\n\n .track {\n position: absolute;\n background-color: var(--track-color);\n height: 4px;\n width: calc(100% - 1rem);\n margin-left: 0.5rem;\n top: 50%;\n transform: translateY(-50%);\n left: 0px;\n }\n\n .thumb {\n display: block;\n position: absolute;\n background-color: transparent;\n height: 1rem;\n width: 1rem;\n border-radius: 100px;\n left: 0px;\n top: 50%;\n transform: translateY(-50%);\n }\n\n .hide-tooltip {\n display: none;\n }\n\n .label {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-top: 0.5rem;\n\n min-height: 0px;\n }\n\n .label-start {\n margin-left: 0.5rem;\n }\n\n .label-end {\n margin-right: 0.5rem;\n }\n\n .label-error {\n margin-left: 0.5rem;\n }\n}\n\n:host(.error) {\n --trace-color: var(--theme-color-alarm-40);\n --tick-color--active: var(--theme-color-alarm);\n\n @include thumb() {\n background-color: var(--theme-color-alarm);\n }\n}\n\n:host(.disabled) {\n pointer-events: none;\n\n --track-color: var(--theme-color-component-3);\n --trace-color: var(--theme-color-3);\n --tick-color: var(--theme-color-7);\n --tick-color--active: var(--theme-color-7);\n\n @include thumb() {\n background-color: var(--theme-color-7);\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 { A11yAttributes, a11yHostAttributes } from '../utils/a11y';\nimport { OnListener } from '../utils/listener';\n\nexport type SliderMarker = Array<number>;\n\nfunction between(min: number, value: number, max: number) {\n if (value < min) {\n return min;\n } else if (value > max) {\n return max;\n } else {\n return value;\n }\n}\n\n/**\n * @since 2.0.0\n *\n * @slot label-start - Element will be displayed at the start of the slider\n * @slot label-end - Element will be displayed at the end of the slider\n */\n@Component({\n tag: 'ix-slider',\n styleUrl: 'slider.scss',\n shadow: true,\n})\nexport class Slider {\n @Element() hostElement!: HTMLIxSliderElement;\n\n /**\n * Legal number intervals\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range#step\n */\n @Prop() step: number;\n\n /**\n * Minimum slider value\n */\n @Prop() min = 0;\n\n /**\n * Maximum slider value\n */\n @Prop() max = 100;\n\n /**\n * Current value of the slider\n */\n @Prop() value = 0;\n\n /**\n * Define tick marker on the slider. Marker has to be within slider min/max\n */\n @Prop() marker: SliderMarker;\n\n /**\n * Show a trace line\n */\n @Prop() trace = false;\n\n /**\n * Define the start point of the trace line\n */\n @Prop() traceReference = 0;\n\n /**\n * Show control as disabled\n */\n @Prop() disabled = false;\n\n /**\n * Show error state and message\n */\n @Prop() error: boolean | string;\n\n /**\n *\n */\n @Event() valueChange: EventEmitter<number>;\n\n @State() rangeInput = 0;\n @State() rangeMin = 0;\n @State() rangeMax = 100;\n @State() rangeTraceReference = 0;\n @State() showTooltip = false;\n\n private a11yAttributes: A11yAttributes;\n\n get tooltip() {\n return this.hostElement.shadowRoot.querySelector('ix-tooltip');\n }\n\n get pseudoThumb() {\n return this.hostElement.shadowRoot.querySelector('.thumb') as HTMLElement;\n }\n\n get slider() {\n return this.hostElement.shadowRoot.getElementById(\n 'slider'\n ) as HTMLInputElement;\n }\n\n @Watch('showTooltip')\n onShowTooltipChange() {\n if (this.showTooltip) {\n this.tooltip.showTooltip(this.pseudoThumb);\n return;\n }\n\n this.tooltip.hideTooltip();\n }\n\n componentWillLoad() {\n this.a11yAttributes = a11yHostAttributes(this.hostElement, [\n 'role',\n 'aria-valuemin',\n 'aria-valuemax',\n 'aria-valuenow',\n ]);\n this.updateRangeVariables();\n }\n\n @Watch('value')\n @Watch('max')\n @Watch('min')\n @Watch('traceReference')\n private updateRangeVariables() {\n this.rangeInput = between(this.min, this.value, this.max);\n this.rangeTraceReference = between(this.min, this.traceReference, this.max);\n this.rangeMin = Math.min(this.min, this.max);\n this.rangeMax = Math.max(this.min, this.max);\n }\n\n private onInput(event: InputEvent) {\n event.stopPropagation();\n const value = parseInt(this.slider.value);\n\n if (!isNaN(value)) {\n this.rangeInput = value;\n this.emitInputEvent();\n }\n }\n\n private emitInputEvent() {\n this.valueChange.emit(this.rangeInput);\n }\n\n private isMarkerActive(markerValue: number) {\n const start = Math.min(this.traceReference, this.rangeInput);\n const end = Math.max(this.traceReference, this.rangeInput);\n const value = markerValue;\n\n return value >= start && value <= end;\n }\n\n // Listen globally on window because sometimes the event listener\n // of the DOM element input itself is not called if the release\n // click is not inside the element anymore\n @OnListener<Slider>('pointerup', (self) => self.showTooltip)\n onPointerUp() {\n this.showTooltip = false;\n }\n\n render() {\n const range = this.rangeMax - this.rangeMin;\n\n let traceReferenceInPercentage =\n (this.rangeTraceReference - this.rangeMin) / range;\n\n let valueInPercentage = (this.rangeInput - this.rangeMin) / range;\n\n const distance = valueInPercentage - traceReferenceInPercentage;\n\n let traceStart = traceReferenceInPercentage;\n let traceEnd = valueInPercentage;\n\n if (distance <= 0) {\n traceStart = valueInPercentage;\n traceEnd = traceReferenceInPercentage;\n }\n\n return (\n <Host\n class={{\n disabled: this.disabled,\n error: !!this.error,\n }}\n onPointerDown={() => setTimeout(() => (this.showTooltip = true))}\n >\n <div class=\"slider\">\n <div class=\"track\">\n <div\n class=\"thumb\"\n style={{\n left: `calc(${valueInPercentage} * 100% - 8px)`,\n }}\n ></div>\n <div class=\"ticks\">\n {this.marker\n ? this.marker.map((markerValue) => {\n if (markerValue > this.max || markerValue < this.min) {\n return;\n }\n\n let left = (markerValue - this.rangeMin) / range;\n\n return (\n <div\n class={{\n tick: true,\n 'tick-active':\n this.isMarkerActive(markerValue) && this.trace,\n }}\n style={{\n '--tick-value': `${left}`,\n }}\n ></div>\n );\n })\n : null}\n </div>\n </div>\n\n <input\n id=\"slider\"\n type=\"range\"\n list={this.marker ? 'markers' : undefined}\n step={this.step}\n min={this.min}\n max={this.max}\n value={this.rangeInput}\n tabindex={this.disabled ? -1 : 0}\n onInput={(event) => this.onInput(event)}\n style={{\n '--value': `${valueInPercentage}`,\n '--trace-reference': `${traceReferenceInPercentage}`,\n '--trace-start': `${traceStart}`,\n '--trace-end': `${traceEnd}`,\n }}\n class={{\n trace:\n this.trace && traceReferenceInPercentage !== valueInPercentage,\n }}\n onFocus={() => {\n this.showTooltip = true;\n }}\n onBlur={() => {\n this.showTooltip = false;\n }}\n role=\"slider\"\n aria-valuenow={this.rangeInput}\n aria-valuemin={this.min}\n aria-valuemax={this.max}\n {...this.a11yAttributes}\n />\n\n <ix-tooltip\n class={{\n 'hide-tooltip': !this.showTooltip,\n }}\n animationFrame={true}\n >\n {this.rangeInput}\n </ix-tooltip>\n </div>\n <div class=\"label\">\n <div class=\"label-start\">\n <slot name=\"label-start\"></slot>\n </div>\n <div class=\"label-end\">\n <slot name=\"label-end\"></slot>\n </div>\n </div>\n {this.error ? (\n <ix-typography class={'label-error'} color=\"alarm\">\n {this.error}\n </ix-typography>\n ) : null}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"ix-slider.js","mappings":"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","names":[],"sources":["src/components/slider/slider.scss?tag=ix-slider&encapsulation=shadow","src/components/slider/slider.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@mixin track {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']::-webkit-slider-runnable-track {\n @content;\n }\n\n // Firefox\n input[type='range']::-moz-range-track {\n @content;\n }\n}\n\n@mixin clear-browser-thumb {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range' i]::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n margin-top: -6px;\n }\n\n // Firefox\n input[type='range' i]::-moz-range-thumb {\n border: none;\n border-radius: 0;\n }\n}\n\n@mixin thumb {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']::-moz-range-thumb {\n @content;\n }\n}\n\n@mixin thumb-hover {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']:hover::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']:hover::-moz-range-thumb {\n @content;\n }\n}\n\n@mixin thumb-active {\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']:active::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']:active::-moz-range-thumb {\n @content;\n }\n}\n\n@mixin thumb-focus {\n input[type='range']:focus {\n outline: none;\n }\n\n // Chrome, Safari, Opera, and Edge Chromium\n input[type='range']:focus-visible::-webkit-slider-thumb {\n @content;\n }\n\n // Firefox\n input[type='range']:focus-visible::-moz-range-thumb {\n @content;\n }\n}\n\n:host {\n @include ix-component;\n display: flex;\n flex-direction: column;\n min-height: 2rem;\n --thumb-size: 1rem;\n --value: 0;\n --trace-start: 0;\n --trace-end: 0;\n --trace-reference: 0;\n --trace-reference-color: var(--theme-color-8);\n --trace-color: var(--theme-color-dynamic);\n --tick-color: var(--theme-color-8);\n --tick-color--active: var(--theme-color-dynamic);\n --track-color: var(--theme-color-component-4);\n\n input[type='range'] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 0;\n appearance: none;\n background: transparent;\n cursor: pointer;\n width: 100%;\n height: 1rem;\n margin: 0;\n }\n\n // Trace line\n input[type='range'].trace::before {\n content: '';\n position: absolute;\n display: block;\n z-index: -1;\n\n width: calc(\n calc(7px + calc(100% * var(--trace-end)) - calc(16px * var(--trace-end))) -\n calc(\n 7px + calc(100% * var(--trace-start)) -\n calc(16px * var(--trace-start))\n )\n );\n\n left: calc(\n 7px + calc(100% * var(--trace-start)) - calc(16px * var(--trace-start))\n );\n\n height: 4px;\n background-color: var(--trace-color);\n top: 50%;\n transform: translateY(-50%);\n }\n\n // Trace reference\n input[type='range'].trace:not(.hide-trace-reference)::after {\n content: '';\n position: absolute;\n display: block;\n width: 2px;\n height: 16px;\n background-color: var(--trace-reference-color);\n top: 50%;\n transform: translateY(-50%);\n left: calc(\n 7px + calc(100% * var(--trace-reference)) -\n calc(16px * var(--trace-reference))\n );\n }\n\n @include track() {\n background: transparent;\n height: 0.25rem;\n }\n\n @include clear-browser-thumb();\n\n @include thumb() {\n border-radius: 100px;\n background-color: var(--theme-color-dynamic);\n height: var(--thumb-size);\n width: var(--thumb-size);\n transition: all var(--theme-default-time) ease-in-out;\n z-index: 10;\n }\n\n @include thumb-hover() {\n transform: scale(1.2);\n background-color: var(--theme-color-dynamic);\n }\n\n @include thumb-active() {\n transform: scale(1.2);\n\n background-color: var(--theme-color-dynamic);\n }\n\n @include thumb-focus() {\n outline: 1px solid var(--theme-color-focus-bdr);\n outline-offset: 0.125rem;\n }\n\n /* style datalist */\n .ticks {\n display: flex;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n }\n .ticks .tick {\n display: block;\n position: absolute;\n width: 8px;\n height: 8px;\n background-color: var(--tick-color);\n border-radius: 100px;\n top: 50%;\n transform: translateY(-50%);\n left: calc(var(--tick-value) * 100% - 4px);\n }\n\n .ticks .tick.tick-active {\n background-color: var(--tick-color--active);\n }\n\n .slider {\n position: relative;\n display: block;\n width: 100%;\n height: 1.5rem;\n }\n\n .track {\n position: absolute;\n background-color: var(--track-color);\n height: 4px;\n width: calc(100% - 1rem);\n margin-left: 0.5rem;\n top: 50%;\n transform: translateY(-50%);\n left: 0px;\n }\n\n .thumb {\n display: block;\n position: absolute;\n background-color: transparent;\n height: 1rem;\n width: 1rem;\n border-radius: 100px;\n left: 0px;\n top: 50%;\n transform: translateY(-50%);\n }\n\n .hide-tooltip {\n display: none;\n }\n\n .label {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-top: 0.5rem;\n\n min-height: 0px;\n }\n\n .label-start {\n margin-left: 0.5rem;\n }\n\n .label-end {\n margin-right: 0.5rem;\n }\n\n .label-error {\n margin-left: 0.5rem;\n }\n}\n\n:host(.error) {\n --trace-color: var(--theme-color-alarm-40);\n --tick-color--active: var(--theme-color-alarm);\n\n @include thumb() {\n background-color: var(--theme-color-alarm);\n }\n}\n\n:host(.disabled) {\n pointer-events: none;\n\n --track-color: var(--theme-color-component-3);\n --trace-color: var(--theme-color-3);\n --tick-color: var(--theme-color-7);\n --tick-color--active: var(--theme-color-7);\n\n @include thumb() {\n background-color: var(--theme-color-7);\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 { A11yAttributes, a11yHostAttributes } from '../utils/a11y';\nimport { OnListener } from '../utils/listener';\n\nexport type SliderMarker = Array<number>;\n\nfunction between(min: number, value: number, max: number) {\n if (value < min) {\n return min;\n } else if (value > max) {\n return max;\n } else {\n return value;\n }\n}\n\n/**\n * @since 2.0.0\n *\n * @slot label-start - Element will be displayed at the start of the slider\n * @slot label-end - Element will be displayed at the end of the slider\n */\n@Component({\n tag: 'ix-slider',\n styleUrl: 'slider.scss',\n shadow: true,\n})\nexport class Slider {\n @Element() hostElement!: HTMLIxSliderElement;\n\n /**\n * Legal number intervals\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range#step\n */\n @Prop() step: number = 1;\n\n /**\n * Minimum slider value\n */\n @Prop() min = 0;\n\n /**\n * Maximum slider value\n */\n @Prop() max = 100;\n\n /**\n * Current value of the slider\n */\n @Prop() value = 0;\n\n /**\n * Define tick marker on the slider. Marker has to be within slider min/max\n */\n @Prop() marker?: SliderMarker;\n\n /**\n * Show a trace line\n */\n @Prop() trace = false;\n\n /**\n * Define the start point of the trace line\n */\n @Prop() traceReference = 0;\n\n /**\n * Show control as disabled\n */\n @Prop() disabled = false;\n\n /**\n * Show error state and message\n */\n @Prop() error?: boolean | string;\n\n /**\n *\n */\n @Event() valueChange!: EventEmitter<number>;\n\n @State() rangeInput = 0;\n @State() rangeMin = 0;\n @State() rangeMax = 100;\n @State() rangeTraceReference = 0;\n @State() showTooltip = false;\n\n private a11yAttributes?: A11yAttributes;\n\n get tooltip() {\n return this.hostElement.shadowRoot?.querySelector('ix-tooltip');\n }\n\n get pseudoThumb() {\n return this.hostElement.shadowRoot?.querySelector('.thumb') as HTMLElement;\n }\n\n get slider() {\n return this.hostElement.shadowRoot?.getElementById(\n 'slider'\n ) as HTMLInputElement;\n }\n\n @Watch('showTooltip')\n onShowTooltipChange() {\n if (this.showTooltip) {\n this.tooltip?.showTooltip(this.pseudoThumb);\n return;\n }\n\n this.tooltip?.hideTooltip();\n }\n\n componentWillLoad() {\n this.a11yAttributes = a11yHostAttributes(this.hostElement, [\n 'role',\n 'aria-valuemin',\n 'aria-valuemax',\n 'aria-valuenow',\n ]);\n this.updateRangeVariables();\n }\n\n @Watch('value')\n @Watch('max')\n @Watch('min')\n @Watch('traceReference')\n private updateRangeVariables() {\n this.rangeInput = between(this.min, this.value, this.max);\n this.rangeTraceReference = between(this.min, this.traceReference, this.max);\n this.rangeMin = Math.min(this.min, this.max);\n this.rangeMax = Math.max(this.min, this.max);\n }\n\n private onInput(event: InputEvent) {\n event.stopPropagation();\n const value = parseInt(this.slider.value);\n\n if (!isNaN(value)) {\n this.rangeInput = value;\n this.emitInputEvent();\n }\n }\n\n private emitInputEvent() {\n this.valueChange.emit(this.rangeInput);\n }\n\n private isMarkerActive(markerValue: number) {\n const start = Math.min(this.traceReference, this.rangeInput);\n const end = Math.max(this.traceReference, this.rangeInput);\n const value = markerValue;\n\n return value >= start && value <= end;\n }\n\n // Listen globally on window because sometimes the event listener\n // of the DOM element input itself is not called if the release\n // click is not inside the element anymore\n @OnListener<Slider>('pointerup', (self) => self.showTooltip)\n onPointerUp() {\n this.showTooltip = false;\n }\n\n render() {\n const range = this.rangeMax - this.rangeMin;\n\n let traceReferenceInPercentage =\n (this.rangeTraceReference - this.rangeMin) / range;\n\n let valueInPercentage = (this.rangeInput - this.rangeMin) / range;\n\n const distance = valueInPercentage - traceReferenceInPercentage;\n\n let traceStart = traceReferenceInPercentage;\n let traceEnd = valueInPercentage;\n\n if (distance <= 0) {\n traceStart = valueInPercentage;\n traceEnd = traceReferenceInPercentage;\n }\n\n return (\n <Host\n class={{\n disabled: this.disabled,\n error: !!this.error,\n }}\n onPointerDown={() => setTimeout(() => (this.showTooltip = true))}\n >\n <div class=\"slider\">\n <div class=\"track\">\n <div\n class=\"thumb\"\n style={{\n left: `calc(${valueInPercentage} * 100% - 8px)`,\n }}\n ></div>\n <div class=\"ticks\">\n {this.marker\n ? this.marker.map((markerValue) => {\n if (markerValue > this.max || markerValue < this.min) {\n return;\n }\n\n let left = (markerValue - this.rangeMin) / range;\n\n return (\n <div\n class={{\n tick: true,\n 'tick-active':\n this.isMarkerActive(markerValue) && this.trace,\n }}\n style={{\n '--tick-value': `${left}`,\n }}\n ></div>\n );\n })\n : null}\n </div>\n </div>\n\n <input\n id=\"slider\"\n type=\"range\"\n list={this.marker ? 'markers' : undefined}\n step={this.step}\n min={this.min}\n max={this.max}\n value={this.rangeInput}\n tabindex={this.disabled ? -1 : 0}\n onInput={(event) => this.onInput(event)}\n style={{\n '--value': `${valueInPercentage}`,\n '--trace-reference': `${traceReferenceInPercentage}`,\n '--trace-start': `${traceStart}`,\n '--trace-end': `${traceEnd}`,\n }}\n class={{\n trace:\n this.trace && traceReferenceInPercentage !== valueInPercentage,\n 'hide-trace-reference':\n this.trace &&\n (this.traceReference <= this.min ||\n this.traceReference >= this.max),\n }}\n onFocus={() => {\n this.showTooltip = true;\n }}\n onBlur={() => {\n this.showTooltip = false;\n }}\n role=\"slider\"\n aria-valuenow={this.rangeInput}\n aria-valuemin={this.min}\n aria-valuemax={this.max}\n {...this.a11yAttributes}\n />\n\n <ix-tooltip\n class={{\n 'hide-tooltip': !this.showTooltip,\n }}\n animationFrame={true}\n >\n {this.rangeInput}\n </ix-tooltip>\n </div>\n <div class=\"label\">\n <div class=\"label-start\">\n <slot name=\"label-start\"></slot>\n </div>\n <div class=\"label-end\">\n <slot name=\"label-end\"></slot>\n </div>\n </div>\n {this.error ? (\n <ix-typography class={'label-error'} color=\"alarm\">\n {this.error}\n </ix-typography>\n ) : null}\n </Host>\n );\n }\n}\n"],"version":3}
|
package/components/service.js
CHANGED
|
@@ -64,13 +64,13 @@ class ApplicationLayoutService {
|
|
|
64
64
|
breakPointIndex = matchBreakpoints.length - 1;
|
|
65
65
|
}
|
|
66
66
|
const [breakpoint, _] = matchBreakpoints[breakPointIndex];
|
|
67
|
-
__classPrivateFieldGet(this, _ApplicationLayoutService_breakpointChangeListener, "f").emit(breakpoint);
|
|
67
|
+
requestAnimationFrame(() => __classPrivateFieldGet(this, _ApplicationLayoutService_breakpointChangeListener, "f").emit(breakpoint));
|
|
68
68
|
__classPrivateFieldSet(this, _ApplicationLayoutService_breakpoint, breakpoint, "f");
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
for (const [breakpoint, match] of matchBreakpoints.reverse()) {
|
|
72
72
|
if (match) {
|
|
73
|
-
__classPrivateFieldGet(this, _ApplicationLayoutService_breakpointChangeListener, "f").emit(breakpoint);
|
|
73
|
+
requestAnimationFrame(() => __classPrivateFieldGet(this, _ApplicationLayoutService_breakpointChangeListener, "f").emit(breakpoint));
|
|
74
74
|
__classPrivateFieldSet(this, _ApplicationLayoutService_breakpoint, breakpoint, "f");
|
|
75
75
|
break;
|
|
76
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"service.js","mappings":";;;SAUgB,QAAQ,CACtB,IAAO,EACP,KAAa;IAEb,IAAI,SAAwC,CAAC;IAE7C,OAAO,SAAS,SAAS,CAAC,GAAG,IAAmB;QAC9C,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,SAAS,GAAG,UAAU,CAAC;YACrB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;SACf,EAAE,KAAK,CAAC,CAAC;KACX,CAAC;AACJ;;;;;;;;;;;;;;ACXA,MAAM,wBAAwB;IAS5B;;QAPA,yDAAsC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAC;QACzD,6DAA4B,IAAI,UAAU,EAAc,EAAC;QACzD,+CAA0B,IAAI,EAAC;QAE/B,uDAAsB,IAAI,EAAC;QAC3B,sBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAGzD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;IAED,IAAI,UAAU;QACZ,OAAO,uBAAA,IAAI,4CAAY,CAAC;KACzB;IAED,IAAI,QAAQ;QACV,OAAO,uBAAA,IAAI,0DAA0B,CAAC;KACvC;IAED,IAAI,kBAAkB;QACpB,OAAO,uBAAA,IAAI,oDAAoB,CAAC;KACjC;IAEO,QAAQ;QACd,IAAI,CAAC,uBAAA,IAAI,oDAAoB,EAAE;YAC7B,OAAO;SACR;QACD,IAAI,CAAC,uBAAA,IAAI,sDAAsB,EAAE;YAC/B,OAAO;SACR;QACD,MAAM,gBAAgB,GAA4B,EAAE,CAAC;QAErD,MAAM,WAAW,GAAG,uBAAA,IAAI,sDAAsB,CAAC;QAE/C,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU;YAC7B,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1C,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;SAC5C,CAAC,CAAC;QAEH,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE;YAC3D,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,uBAAA,IAAI,sDAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC9C,eAAe,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;aAC/C;YAED,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;YAC1D,uBAAA,IAAI,0DAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"file":"service.js","mappings":"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","names":[],"sources":["src/components/utils/debounce.ts","src/components/utils/application-layout/service.ts"],"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 */\ntype AnyFunction = (...args: any[]) => any;\n\nexport function debounce<T extends AnyFunction>(\n func: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n return function debounced(...args: Parameters<T>): void {\n clearTimeout(timeoutId);\n\n timeoutId = setTimeout(() => {\n func(...args);\n }, delay);\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 { Breakpoint, matchBreakpoint } from '../breakpoints';\nimport { debounce } from '../debounce';\nimport { TypedEvent } from '../typed-event';\n\nclass ApplicationLayoutService {\n // Keep order of breakpoints\n #supportedBreakpoints: Breakpoint[] = ['sm', 'md', 'lg'];\n #breakpointChangeListener = new TypedEvent<Breakpoint>();\n #breakpoint: Breakpoint = 'lg';\n\n #isDetectionEnabled = true;\n debouncedOnResize = debounce(this.onResize.bind(this), 50);\n\n constructor() {\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', this.debouncedOnResize.bind(this));\n this.debouncedOnResize();\n }\n }\n\n get breakpoint() {\n return this.#breakpoint;\n }\n\n get onChange() {\n return this.#breakpointChangeListener;\n }\n\n get isDetectionEnabled() {\n return this.#isDetectionEnabled;\n }\n\n private onResize() {\n if (!this.#isDetectionEnabled) {\n return;\n }\n if (!this.#supportedBreakpoints) {\n return;\n }\n const matchBreakpoints: [Breakpoint, boolean][] = [];\n\n const breakpoints = this.#supportedBreakpoints;\n\n breakpoints.forEach((breakpoint) => {\n const match = matchBreakpoint(breakpoint);\n matchBreakpoints.push([breakpoint, match]);\n });\n\n if (matchBreakpoints.every(([_, match]) => match === false)) {\n let breakPointIndex = 0;\n if (!this.#supportedBreakpoints.includes('lg')) {\n breakPointIndex = matchBreakpoints.length - 1;\n }\n\n const [breakpoint, _] = matchBreakpoints[breakPointIndex];\n requestAnimationFrame(() =>\n this.#breakpointChangeListener.emit(breakpoint)\n );\n this.#breakpoint = breakpoint;\n return;\n }\n\n for (const [breakpoint, match] of matchBreakpoints.reverse()) {\n if (match) {\n requestAnimationFrame(() =>\n this.#breakpointChangeListener.emit(breakpoint)\n );\n this.#breakpoint = breakpoint;\n break;\n }\n }\n }\n\n public disableBreakpointDetection() {\n this.#isDetectionEnabled = false;\n }\n\n public enableBreakpointDetection() {\n this.#isDetectionEnabled = true;\n }\n\n public setBreakpoint(breakpoint: Breakpoint) {\n this.#breakpoint = breakpoint;\n this.#breakpointChangeListener.emit(breakpoint);\n }\n\n public setBreakpoints(breakpoints: Breakpoint[]) {\n this.#supportedBreakpoints = breakpoints;\n this.onResize();\n }\n}\n\nexport const applicationLayoutService = new ApplicationLayoutService();\n"],"version":3}
|
package/components/tab-item.js
CHANGED
|
@@ -31,7 +31,7 @@ const TabItem = /*@__PURE__*/ proxyCustomElement(class TabItem extends HTMLEleme
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
render() {
|
|
34
|
-
return (h(Host, { key: '
|
|
34
|
+
return (h(Host, { key: 'd066fe09ebb7ac33ef162eafed96189de7215022', class: this.tabItemClasses({
|
|
35
35
|
selected: this.selected,
|
|
36
36
|
disabled: this.disabled,
|
|
37
37
|
small: this.small,
|
|
@@ -46,12 +46,12 @@ const TabItem = /*@__PURE__*/ proxyCustomElement(class TabItem extends HTMLEleme
|
|
|
46
46
|
if (clientEvent.defaultPrevented) {
|
|
47
47
|
event.stopPropagation();
|
|
48
48
|
}
|
|
49
|
-
} }, h("div", { key: '
|
|
49
|
+
} }, h("div", { key: '944c3beb003abae7f64ed18c3d77fa8d3a576be3', class: {
|
|
50
50
|
circle: this.rounded,
|
|
51
51
|
text: !this.rounded,
|
|
52
52
|
selected: this.selected,
|
|
53
53
|
disabled: this.disabled,
|
|
54
|
-
} }, h("slot", { key: '
|
|
54
|
+
} }, h("slot", { key: 'ff6b883c8b1ec2e53fe9faa705bbcdb0345ef27b' })), h("div", { key: '292419b01ae7e18db509ad09a83ffa5bbc6480a5', class: {
|
|
55
55
|
counter: true,
|
|
56
56
|
selected: this.selected,
|
|
57
57
|
hidden: !(this.rounded && this.counter !== undefined),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"tab-item.js","mappings":";;AAAA,MAAM,UAAU,GAAG,szIAAszI,CAAC;AAC10I,wBAAe,UAAU;;MCmBZ,OAAO;;;;;;wBAIC,KAAK;wBAKL,KAAK;qBAKR,KAAK;oBAKN,KAAK;uBAKF,KAAK;;sBAUgB,MAAM;yBAKP,QAAQ;;IAStC,cAAc,CAAC,KAQtB;QACC,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,KAAK;YACxB,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,SAAS,EAAE,KAAK,CAAC,MAAM,KAAK,WAAW;YACvC,MAAM,EAAE,KAAK,CAAC,SAAS,KAAK,QAAQ;YACpC,GAAG,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;KACH;IAED,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,OAAO;aACrB,CAAC,EACF,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,KAAiB;gBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrC,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;gBAEH,IAAI,WAAW,CAAC,gBAAgB,EAAE;oBAChC,KAAK,CAAC,eAAe,EAAE,CAAC;iBACzB;aACF,IAED,4DACE,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,IAED,8DAAa,CACT,EACN,4DACE,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;gBACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,IAEA,IAAI,CAAC,OAAO,CACT,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/tab-item/tab-item.scss?tag=ix-tab-item&encapsulation=shadow","src/components/tab-item/tab-item.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 'mixins/text-truncation';\n@import 'mixins/hover';\n@import 'mixins/shadow-dom/component';\n\n:host {\n @include ix-component;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px $large-space;\n line-height: 20px;\n font-size: 14px;\n font-weight: bold;\n background-color: var(--theme-tab--background);\n color: var(--theme-tab--color);\n\n &::after {\n content: '';\n position: absolute;\n background-color: var(--theme-tab-indicator--background);\n width: 100%;\n height: var(--theme-tab-indicator--height);\n left: 0;\n }\n\n .text {\n @include ellipsis;\n\n span,\n span::before {\n pointer-events: none;\n }\n\n vertical-align: middle;\n }\n\n .circle {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 3rem;\n width: 3rem;\n background-color: var(--theme-animated-tab-indicator--background);\n border-radius: 50%;\n border: 2px solid var(--theme-animated-tab-circle--border-color);\n color: var(--theme-an…icon--color);\n cursor: pointer;\n\n &.selected:not(.disabled) {\n background-color: var(--theme-animated-tab-circle--background--selected);\n color: var(--theme-animated-tab-icon--color--selected);\n border-color: var(--theme-animated-tab-circle--border-color--selected);\n\n &:hover {\n background-color: var(\n --theme-animated-tab-circle--background--selected\n );\n }\n }\n\n &:hover {\n background-color: var(--theme-animated-tab-circle--background--hover);\n }\n\n &:active {\n background-color: var(--theme-animated-tab-circle--background--active);\n }\n\n &:active {\n background-color: var(--theme-animated-tab-circle--background--active);\n }\n\n &.disabled {\n background-color: var(--theme-animated-tab-circle--background--disabled);\n border-color: var(--theme-animated-tab-circle--border-color--disabled);\n }\n }\n\n .counter {\n position: absolute;\n z-index: 1;\n height: 16px;\n width: auto;\n background-color: var(--theme-pill-outline--background);\n border: 1px solid var(--theme-tab-pill--border-color);\n border-radius: 100px;\n bottom: 6px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding-left: $tiny-space;\n padding-right: $tiny-space;\n font-size: 12px;\n line-height: 14px;\n color: var(--theme-pill-outline--color);\n cursor: pointer;\n\n &.selected {\n border-color: var(--theme-tab-pill--border-color--selected);\n }\n\n &.disabled {\n border-color: var(--theme-tab-pill--border-color--disabled);\n }\n }\n\n .hidden {\n display: none;\n }\n}\n\n:host(.circle) {\n height: 72px;\n}\n\n:host(.top) {\n &::after {\n top: 0;\n }\n}\n\n:host(.bottom) {\n &::after {\n bottom: 0;\n }\n}\n\n:host(.stretched) {\n flex-basis: 100%;\n width: 100%;\n @include ellipsis;\n}\n\n:host(:hover:not(.circle)) {\n background-color: var(--theme-tab--background--hover);\n color: var(--theme-tab-color-hover);\n cursor: pointer;\n\n &::after {\n background-color: var(--theme-tab-indicator--background--hover);\n }\n}\n\n:host(:active:not(.circle)) {\n background-color: var(--theme-tab--background--active);\n color: var(--theme-tab-color--active);\n\n &::after {\n background-color: var(--theme-tab-indicator--background--active);\n }\n}\n\n:host(:focus-visible) {\n outline: 0px solid var(--focus--border-color);\n\n .circle {\n outline: 1px solid var(--focus--border-color);\n }\n}\n\n:host(:focus-visible:not(.circle)) {\n outline: 1px solid var(--focus--border-color);\n}\n\n:host(.disabled) {\n pointer-events: none;\n color: var(--theme-tab--color--disabled);\n background-color: var(--theme-tab--background--disabled);\n\n &::after {\n background-color: var(--theme-tab-indicator--background--disabled);\n }\n}\n\n:host(.selected:not(.disabled)) {\n background-color: var(--theme-tab--background--selected);\n color: var(--theme-tab--color--selected);\n\n &::after {\n background-color: var(--theme-tab-indicator--background--selected);\n }\n}\n\n:host(.icon) {\n padding: $large-space $small-space;\n}\n\n:host(.small-tab) {\n height: 32px;\n padding: $default-space;\n}\n\n:host(.small-tab.icon) {\n padding: $default-space $tiny-space;\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, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\n\nexport type TabClickDetail = {\n nativeEvent: MouseEvent;\n};\n\n@Component({\n tag: 'ix-tab-item',\n styleUrl: 'tab-item.scss',\n shadow: true,\n})\nexport class TabItem {\n /**\n * Set selected tab\n */\n @Prop() selected = false;\n\n /**\n * Set disabled tab\n */\n @Prop() disabled = false;\n\n /**\n * Set small size tab\n */\n @Prop() small = false;\n\n /**\n * Set icon only tab\n */\n @Prop() icon = false;\n\n /**\n * Set rounded tab\n */\n @Prop() rounded = false;\n\n /**\n * Set counter value\n */\n @Prop() counter
|
|
1
|
+
{"file":"tab-item.js","mappings":";;AAAA,MAAM,UAAU,GAAG,szIAAszI,CAAC;AAC10I,wBAAe,UAAU;;MCmBZ,OAAO;;;;;;wBAIC,KAAK;wBAKL,KAAK;qBAKR,KAAK;oBAKN,KAAK;uBAKF,KAAK;;sBAUgB,MAAM;yBAKP,QAAQ;;IAStC,cAAc,CAAC,KAQtB;QACC,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,KAAK;YACxB,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,SAAS,EAAE,KAAK,CAAC,MAAM,KAAK,WAAW;YACvC,MAAM,EAAE,KAAK,CAAC,SAAS,KAAK,QAAQ;YACpC,GAAG,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;KACH;IAED,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,OAAO;aACrB,CAAC,EACF,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,KAAiB;gBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrC,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;gBAEH,IAAI,WAAW,CAAC,gBAAgB,EAAE;oBAChC,KAAK,CAAC,eAAe,EAAE,CAAC;iBACzB;aACF,IAED,4DACE,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,IAED,8DAAa,CACT,EACN,4DACE,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;gBACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,IAEA,IAAI,CAAC,OAAO,CACT,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/tab-item/tab-item.scss?tag=ix-tab-item&encapsulation=shadow","src/components/tab-item/tab-item.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 'mixins/text-truncation';\n@import 'mixins/hover';\n@import 'mixins/shadow-dom/component';\n\n:host {\n @include ix-component;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px $large-space;\n line-height: 20px;\n font-size: 14px;\n font-weight: bold;\n background-color: var(--theme-tab--background);\n color: var(--theme-tab--color);\n\n &::after {\n content: '';\n position: absolute;\n background-color: var(--theme-tab-indicator--background);\n width: 100%;\n height: var(--theme-tab-indicator--height);\n left: 0;\n }\n\n .text {\n @include ellipsis;\n\n span,\n span::before {\n pointer-events: none;\n }\n\n vertical-align: middle;\n }\n\n .circle {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 3rem;\n width: 3rem;\n background-color: var(--theme-animated-tab-indicator--background);\n border-radius: 50%;\n border: 2px solid var(--theme-animated-tab-circle--border-color);\n color: var(--theme-an…icon--color);\n cursor: pointer;\n\n &.selected:not(.disabled) {\n background-color: var(--theme-animated-tab-circle--background--selected);\n color: var(--theme-animated-tab-icon--color--selected);\n border-color: var(--theme-animated-tab-circle--border-color--selected);\n\n &:hover {\n background-color: var(\n --theme-animated-tab-circle--background--selected\n );\n }\n }\n\n &:hover {\n background-color: var(--theme-animated-tab-circle--background--hover);\n }\n\n &:active {\n background-color: var(--theme-animated-tab-circle--background--active);\n }\n\n &:active {\n background-color: var(--theme-animated-tab-circle--background--active);\n }\n\n &.disabled {\n background-color: var(--theme-animated-tab-circle--background--disabled);\n border-color: var(--theme-animated-tab-circle--border-color--disabled);\n }\n }\n\n .counter {\n position: absolute;\n z-index: 1;\n height: 16px;\n width: auto;\n background-color: var(--theme-pill-outline--background);\n border: 1px solid var(--theme-tab-pill--border-color);\n border-radius: 100px;\n bottom: 6px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding-left: $tiny-space;\n padding-right: $tiny-space;\n font-size: 12px;\n line-height: 14px;\n color: var(--theme-pill-outline--color);\n cursor: pointer;\n\n &.selected {\n border-color: var(--theme-tab-pill--border-color--selected);\n }\n\n &.disabled {\n border-color: var(--theme-tab-pill--border-color--disabled);\n }\n }\n\n .hidden {\n display: none;\n }\n}\n\n:host(.circle) {\n height: 72px;\n}\n\n:host(.top) {\n &::after {\n top: 0;\n }\n}\n\n:host(.bottom) {\n &::after {\n bottom: 0;\n }\n}\n\n:host(.stretched) {\n flex-basis: 100%;\n width: 100%;\n @include ellipsis;\n}\n\n:host(:hover:not(.circle)) {\n background-color: var(--theme-tab--background--hover);\n color: var(--theme-tab-color-hover);\n cursor: pointer;\n\n &::after {\n background-color: var(--theme-tab-indicator--background--hover);\n }\n}\n\n:host(:active:not(.circle)) {\n background-color: var(--theme-tab--background--active);\n color: var(--theme-tab-color--active);\n\n &::after {\n background-color: var(--theme-tab-indicator--background--active);\n }\n}\n\n:host(:focus-visible) {\n outline: 0px solid var(--focus--border-color);\n\n .circle {\n outline: 1px solid var(--focus--border-color);\n }\n}\n\n:host(:focus-visible:not(.circle)) {\n outline: 1px solid var(--focus--border-color);\n}\n\n:host(.disabled) {\n pointer-events: none;\n color: var(--theme-tab--color--disabled);\n background-color: var(--theme-tab--background--disabled);\n\n &::after {\n background-color: var(--theme-tab-indicator--background--disabled);\n }\n}\n\n:host(.selected:not(.disabled)) {\n background-color: var(--theme-tab--background--selected);\n color: var(--theme-tab--color--selected);\n\n &::after {\n background-color: var(--theme-tab-indicator--background--selected);\n }\n}\n\n:host(.icon) {\n padding: $large-space $small-space;\n}\n\n:host(.small-tab) {\n height: 32px;\n padding: $default-space;\n}\n\n:host(.small-tab.icon) {\n padding: $default-space $tiny-space;\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, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\n\nexport type TabClickDetail = {\n nativeEvent: MouseEvent;\n};\n\n@Component({\n tag: 'ix-tab-item',\n styleUrl: 'tab-item.scss',\n shadow: true,\n})\nexport class TabItem {\n /**\n * Set selected tab\n */\n @Prop() selected = false;\n\n /**\n * Set disabled tab\n */\n @Prop() disabled = false;\n\n /**\n * Set small size tab\n */\n @Prop() small = false;\n\n /**\n * Set icon only tab\n */\n @Prop() icon = false;\n\n /**\n * Set rounded tab\n */\n @Prop() rounded = false;\n\n /**\n * Set counter value\n */\n @Prop() counter?: number;\n\n /**\n * Set layout width style\n */\n @Prop() layout: 'auto' | 'stretched' = 'auto';\n\n /**\n * Set selected placement\n */\n @Prop() placement: 'bottom' | 'top' = 'bottom';\n\n /**\n * Emitted when the tab is clicked.\n *\n * @since 2.0.0\n */\n @Event() tabClick!: EventEmitter<TabClickDetail>;\n\n private tabItemClasses(props: {\n selected: boolean;\n disabled: boolean;\n small: boolean;\n icon: boolean;\n circle: boolean;\n layout: 'auto' | 'stretched';\n placement: 'bottom' | 'top';\n }) {\n return {\n selected: props.selected,\n disabled: props.disabled,\n 'small-tab': props.small,\n icon: props.small,\n stretched: props.layout === 'stretched',\n bottom: props.placement === 'bottom',\n top: props.placement === 'top',\n circle: props.circle,\n };\n }\n\n render() {\n return (\n <Host\n class={this.tabItemClasses({\n selected: this.selected,\n disabled: this.disabled,\n small: this.small,\n icon: this.icon,\n layout: this.layout,\n placement: this.placement,\n circle: this.rounded,\n })}\n tabIndex={0}\n onClick={(event: MouseEvent) => {\n const clientEvent = this.tabClick.emit({\n nativeEvent: event,\n });\n\n if (clientEvent.defaultPrevented) {\n event.stopPropagation();\n }\n }}\n >\n <div\n class={{\n circle: this.rounded,\n text: !this.rounded,\n selected: this.selected,\n disabled: this.disabled,\n }}\n >\n <slot></slot>\n </div>\n <div\n class={{\n counter: true,\n selected: this.selected,\n hidden: !(this.rounded && this.counter !== undefined),\n disabled: this.disabled,\n }}\n >\n {this.counter}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
package/components/tabs.js
CHANGED
|
@@ -47,12 +47,8 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
47
47
|
this.currentScrollAmount = 0;
|
|
48
48
|
this.scrollAmount = 100;
|
|
49
49
|
this.scrollActionAmount = 0;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return this.hostElement.shadowRoot.querySelector('[data-arrow-left]');
|
|
53
|
-
}
|
|
54
|
-
get arrowRightElement() {
|
|
55
|
-
return this.hostElement.shadowRoot.querySelector('[data-arrow-right]');
|
|
50
|
+
this.showArrowPrevious = false;
|
|
51
|
+
this.showArrowNext = false;
|
|
56
52
|
}
|
|
57
53
|
onWindowResize() {
|
|
58
54
|
this.totalItems = 0;
|
|
@@ -69,13 +65,24 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
69
65
|
return this.getTabs()[tabIndex];
|
|
70
66
|
}
|
|
71
67
|
getTabsWrapper() {
|
|
72
|
-
|
|
68
|
+
var _a;
|
|
69
|
+
return (_a = this.hostElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.items-content');
|
|
70
|
+
}
|
|
71
|
+
initResizeObserver() {
|
|
72
|
+
const parentElement = this.hostElement.parentElement;
|
|
73
|
+
if (!parentElement)
|
|
74
|
+
return;
|
|
75
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
76
|
+
this.renderArrows();
|
|
77
|
+
});
|
|
78
|
+
this.resizeObserver.observe(parentElement);
|
|
73
79
|
}
|
|
74
80
|
showArrows() {
|
|
75
81
|
try {
|
|
76
82
|
const tabWrapper = this.getTabsWrapper();
|
|
77
|
-
return (tabWrapper
|
|
78
|
-
|
|
83
|
+
return (tabWrapper &&
|
|
84
|
+
tabWrapper.scrollWidth >
|
|
85
|
+
Math.ceil(tabWrapper.getBoundingClientRect().width) &&
|
|
79
86
|
this.layout === 'auto');
|
|
80
87
|
}
|
|
81
88
|
catch (error) {
|
|
@@ -84,7 +91,7 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
84
91
|
}
|
|
85
92
|
showPreviousArrow() {
|
|
86
93
|
try {
|
|
87
|
-
return this.showArrows() && this.scrollActionAmount < 0;
|
|
94
|
+
return this.showArrows() === true && this.scrollActionAmount < 0;
|
|
88
95
|
}
|
|
89
96
|
catch (error) {
|
|
90
97
|
return false;
|
|
@@ -93,8 +100,11 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
93
100
|
showNextArrow() {
|
|
94
101
|
try {
|
|
95
102
|
const tabWrapper = this.getTabsWrapper();
|
|
103
|
+
if (!tabWrapper) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
96
106
|
const tabWrapperRect = tabWrapper.getBoundingClientRect();
|
|
97
|
-
return (this.showArrows() &&
|
|
107
|
+
return (this.showArrows() === true &&
|
|
98
108
|
this.scrollActionAmount >
|
|
99
109
|
(tabWrapper.scrollWidth - tabWrapperRect.width) * -1);
|
|
100
110
|
}
|
|
@@ -102,39 +112,47 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
102
112
|
return false;
|
|
103
113
|
}
|
|
104
114
|
}
|
|
105
|
-
getArrowStyle(condition) {
|
|
106
|
-
return {
|
|
107
|
-
opacity: condition ? '1' : '0',
|
|
108
|
-
zIndex: condition ? '1' : '-1',
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
115
|
move(amount, click = false) {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
const tabsWrapper = this.getTabsWrapper();
|
|
117
|
+
if (!tabsWrapper) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const tabsWrapperVisibleWidth = tabsWrapper.getBoundingClientRect().width;
|
|
121
|
+
const maxScrollWidth = -this.currentScrollAmount +
|
|
122
|
+
tabsWrapperVisibleWidth -
|
|
123
|
+
tabsWrapper.scrollWidth;
|
|
124
|
+
amount = amount < maxScrollWidth ? maxScrollWidth : amount;
|
|
125
|
+
amount += this.currentScrollAmount;
|
|
126
|
+
amount = Math.min(amount, 0);
|
|
116
127
|
const styles = [
|
|
117
128
|
`transform: translateX(${amount}px);`,
|
|
118
129
|
click ? 'transition: all ease-in-out 400ms;' : '',
|
|
119
130
|
].join('');
|
|
120
|
-
|
|
131
|
+
tabsWrapper.setAttribute('style', styles);
|
|
121
132
|
if (click)
|
|
122
133
|
this.currentScrollAmount = this.scrollActionAmount = amount;
|
|
123
134
|
else
|
|
124
135
|
this.scrollActionAmount = amount;
|
|
125
136
|
}
|
|
126
|
-
|
|
137
|
+
onSelectedChange(newValue) {
|
|
138
|
+
var _a;
|
|
127
139
|
if (!this.showArrows())
|
|
128
140
|
return;
|
|
129
|
-
const
|
|
130
|
-
const
|
|
131
|
-
|
|
141
|
+
const tabRect = this.getTab(newValue).getBoundingClientRect();
|
|
142
|
+
const wrapperWidth = (_a = this.getTabsWrapper()) === null || _a === void 0 ? void 0 : _a.clientWidth;
|
|
143
|
+
const arrowWidth = 32;
|
|
144
|
+
if (tabRect.left < arrowWidth) {
|
|
145
|
+
this.move(-tabRect.left + arrowWidth, true);
|
|
146
|
+
}
|
|
147
|
+
else if (wrapperWidth && tabRect.right > wrapperWidth - arrowWidth) {
|
|
148
|
+
this.move(wrapperWidth - tabRect.right - arrowWidth, true);
|
|
149
|
+
}
|
|
132
150
|
}
|
|
133
151
|
setSelected(index) {
|
|
134
152
|
this.selected = index;
|
|
135
153
|
}
|
|
136
154
|
clickTab(index) {
|
|
137
|
-
if (this.dragStop()) {
|
|
155
|
+
if (!this.clickAction.isClick || this.dragStop()) {
|
|
138
156
|
return;
|
|
139
157
|
}
|
|
140
158
|
const { defaultPrevented } = this.selectedChange.emit(index);
|
|
@@ -142,7 +160,6 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
142
160
|
return;
|
|
143
161
|
}
|
|
144
162
|
this.setSelected(index);
|
|
145
|
-
this.moveTabToView(index);
|
|
146
163
|
}
|
|
147
164
|
dragStart(element, event) {
|
|
148
165
|
if (!this.showArrows())
|
|
@@ -156,18 +173,22 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
156
173
|
const tabPositionX = parseFloat(window.getComputedStyle(element).left);
|
|
157
174
|
const mousedownPositionX = event.clientX;
|
|
158
175
|
const move = (event) => this.dragMove(event, tabPositionX, mousedownPositionX);
|
|
159
|
-
|
|
176
|
+
const windowClick = () => {
|
|
160
177
|
window.removeEventListener('mousemove', move, false);
|
|
178
|
+
window.removeEventListener('click', windowClick, false);
|
|
161
179
|
this.dragStop();
|
|
162
|
-
}
|
|
180
|
+
};
|
|
181
|
+
window.addEventListener('click', windowClick);
|
|
163
182
|
window.addEventListener('mousemove', move, false);
|
|
164
183
|
}
|
|
165
184
|
dragMove(event, tabX, mousedownX) {
|
|
166
185
|
this.move(event.clientX + tabX - mousedownX);
|
|
167
186
|
}
|
|
168
187
|
dragStop() {
|
|
169
|
-
|
|
170
|
-
|
|
188
|
+
if (this.clickAction.timeout) {
|
|
189
|
+
clearTimeout(this.clickAction.timeout);
|
|
190
|
+
this.clickAction.timeout = null;
|
|
191
|
+
}
|
|
171
192
|
if (this.clickAction.isClick)
|
|
172
193
|
return false;
|
|
173
194
|
this.currentScrollAmount = this.scrollActionAmount;
|
|
@@ -185,6 +206,7 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
185
206
|
element.setAttribute('selected', index === this.selected ? 'true' : 'false');
|
|
186
207
|
element.setAttribute('placement', this.placement);
|
|
187
208
|
});
|
|
209
|
+
this.initResizeObserver();
|
|
188
210
|
}
|
|
189
211
|
componentDidRender() {
|
|
190
212
|
const tabs = this.getTabs();
|
|
@@ -194,11 +216,12 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
194
216
|
});
|
|
195
217
|
}
|
|
196
218
|
componentWillRender() {
|
|
219
|
+
this.renderArrows();
|
|
220
|
+
}
|
|
221
|
+
renderArrows() {
|
|
197
222
|
requestAnimationFrameNoNgZone(() => {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
Object.assign(this.arrowLeftElement.style, this.getArrowStyle(previousArrow));
|
|
201
|
-
Object.assign(this.arrowRightElement.style, this.getArrowStyle(showNextArrow));
|
|
223
|
+
this.showArrowNext = this.showNextArrow();
|
|
224
|
+
this.showArrowPrevious = this.showPreviousArrow();
|
|
202
225
|
});
|
|
203
226
|
}
|
|
204
227
|
componentDidLoad() {
|
|
@@ -207,6 +230,10 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
207
230
|
element.addEventListener('mousedown', (event) => this.dragStart(element, event));
|
|
208
231
|
});
|
|
209
232
|
}
|
|
233
|
+
disconnectedCallback() {
|
|
234
|
+
var _a;
|
|
235
|
+
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
236
|
+
}
|
|
210
237
|
onTabClick(event) {
|
|
211
238
|
if (event.defaultPrevented) {
|
|
212
239
|
return;
|
|
@@ -220,15 +247,18 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
220
247
|
});
|
|
221
248
|
}
|
|
222
249
|
render() {
|
|
223
|
-
return (h(Host, { key: '
|
|
250
|
+
return (h(Host, { key: '014b3afcc4165f3c3aa0800ea6f12c15d138b48b' }, this.showArrowPrevious && (h("div", { key: '6c98e2c2957c96970d42d5abdf959f325e1c05b8', class: "arrow", onClick: () => this.move(this.scrollAmount, true) }, h("ix-icon", { key: '55f46b38e62a863415fa5d51da48a1be19303b78', name: 'chevron-left-small' }))), h("div", { key: 'c0528e9e703746cc1acc63c1b68c4d9ee3a01a04', class: {
|
|
224
251
|
'tab-items': true,
|
|
225
252
|
'overflow-shadow': true,
|
|
226
|
-
'shadow-left': this.
|
|
227
|
-
'shadow-right': this.
|
|
228
|
-
'shadow-both': this.
|
|
229
|
-
} }, h("div", { key: '
|
|
253
|
+
'shadow-left': this.showArrowPrevious,
|
|
254
|
+
'shadow-right': this.showArrowNext,
|
|
255
|
+
'shadow-both': this.showArrowNext && this.showArrowPrevious,
|
|
256
|
+
} }, h("div", { key: 'bb6174f8e9a9543ee928a70de23500edbedaeb04', class: "items-content" }, h("slot", { key: 'ba881f7c4784685ebdb1f0a2581c4691f2a8f1b9' }))), this.showArrowNext && (h("div", { key: '743123a5b14ed6a473c21b742f54cbf4ae4405da', class: "arrow right", onClick: () => this.move(-this.scrollAmount, true) }, h("ix-icon", { key: 'd67ab90bf1b620791ca9e84f7ace8b7a04a7a772', name: 'chevron-right-small' })))));
|
|
230
257
|
}
|
|
231
258
|
get hostElement() { return this; }
|
|
259
|
+
static get watchers() { return {
|
|
260
|
+
"selected": ["onSelectedChange"]
|
|
261
|
+
}; }
|
|
232
262
|
static get style() { return IxTabsStyle0; }
|
|
233
263
|
}, [1, "ix-tabs", {
|
|
234
264
|
"small": [4],
|
|
@@ -239,8 +269,12 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
|
|
|
239
269
|
"totalItems": [32],
|
|
240
270
|
"currentScrollAmount": [32],
|
|
241
271
|
"scrollAmount": [32],
|
|
242
|
-
"scrollActionAmount": [32]
|
|
243
|
-
|
|
272
|
+
"scrollActionAmount": [32],
|
|
273
|
+
"showArrowPrevious": [32],
|
|
274
|
+
"showArrowNext": [32]
|
|
275
|
+
}, [[9, "resize", "onWindowResize"], [0, "tabClick", "onTabClick"]], {
|
|
276
|
+
"selected": ["onSelectedChange"]
|
|
277
|
+
}]);
|
|
244
278
|
function defineCustomElement() {
|
|
245
279
|
if (typeof customElements === "undefined") {
|
|
246
280
|
return;
|