@public-ui/hydrate 2.2.16-rc.2 → 2.2.17-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +58 -29
- package/dist/index.mjs +58 -29
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -15677,6 +15677,11 @@ class KolSingleSelect {
|
|
|
15677
15677
|
}
|
|
15678
15678
|
selectOption(option) {
|
|
15679
15679
|
var _a, _b;
|
|
15680
|
+
if (option.value === this._value) {
|
|
15681
|
+
this._inputValue = option.label;
|
|
15682
|
+
this._filteredOptions = [...this.state._options];
|
|
15683
|
+
return;
|
|
15684
|
+
}
|
|
15680
15685
|
this._value = option.value;
|
|
15681
15686
|
this._inputValue = option.label;
|
|
15682
15687
|
const inputEvent = this.createEventWithTarget('input', {
|
|
@@ -15749,17 +15754,17 @@ class KolSingleSelect {
|
|
|
15749
15754
|
var _a;
|
|
15750
15755
|
const hasExpertSlot = showExpertSlot(this.state._label);
|
|
15751
15756
|
const { ariaDescribedBy } = getRenderStates(this.state);
|
|
15752
|
-
return (hAsync(Host, { key: '
|
|
15757
|
+
return (hAsync(Host, { key: '282afbddf18c466d9ff57a69eeee01f2347b0edd', class: "kol-single-select" }, hAsync("div", { key: 'ed4d8589974c5364a624d79c55bbf9f82e991895', class: `single-select ${this.state._disabled === true ? 'disabled' : ''} ` }, hAsync(KolInputTag, { key: 'a4439114f29704df1e021349780db796a5d91f84', _accessKey: this.state._accessKey, _alert: this.showAsAlert(), _disabled: this.state._disabled, _hideError: this.state._hideError, _hideLabel: this.state._hideLabel, _hint: this.state._hint, _icons: this.state._icons, _id: this.state._id, _label: this.state._label, _msg: this.state._msg, _required: this.state._required, _shortKey: this.state._shortKey, _tooltipAlign: this._tooltipAlign, _touched: this.state._touched, role: `presentation` }, hAsync("span", { key: 'db7f763555dad0c9984863153fb3f5b04b07fa0c', slot: "label" }, hasExpertSlot ? (hAsync("slot", { name: "expert" })) : typeof this.state._accessKey === 'string' || typeof this.state._shortKey === 'string' ? (hAsync(Fragment, null, hAsync(InternalUnderlinedBadgeText, { badgeText: buildBadgeTextString(this.state._accessKey || this.state._shortKey), label: this.state._label }), ' ', hAsync("kbd", { class: "badge-text-hint", "aria-hidden": "true" }, buildBadgeTextString(this.state._accessKey || this.state._shortKey)))) : (hAsync("span", null, this.state._label))), hAsync("div", { key: 'f0fe71f1beafe9a7a11058d0df257e650f378cc7', slot: "input" }, hAsync("div", { key: '32e017a76ab2d68dde52f361fb250757010f83b0', class: "single-select__group" }, hAsync("input", Object.assign({ key: 'ec6fe2ea1d86abd79af13f071399f93b2c3d116f', ref: this.catchRef, class: "single-select__input", "data-testid": "single-select-input", type: "text", "aria-autocomplete": "both", "aria-controls": "listbox", value: this._inputValue, accessKey: this.state._accessKey, "aria-keyshortcuts": this.state._shortKey, "aria-describedby": ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined, "aria-label": this.state._hideLabel && typeof this.state._label === 'string' ? this.state._label : undefined, "aria-activedescendant": this._isOpen && this._focusedOptionIndex >= 0 ? `option-${this._focusedOptionIndex}` : undefined, autoCapitalize: "off", autoComplete: "off", autoCorrect: "off", disabled: this.state._disabled, name: this.state._name, required: this.state._required }, this.controller.onFacade, { onInput: this.onInput.bind(this), onChange: this.onChange.bind(this), onClick: this.toggleListbox.bind(this), onFocus: (event) => {
|
|
15753
15758
|
this.controller.onFacade.onFocus(event);
|
|
15754
15759
|
this.inputHasFocus = true;
|
|
15755
15760
|
}, onBlur: (event) => {
|
|
15756
15761
|
this.controller.onFacade.onBlur(event);
|
|
15757
15762
|
this.inputHasFocus = false;
|
|
15758
|
-
}, placeholder: this.state._placeholder })), this._inputValue && !this.state._hideClearButton && (hAsync(KolIconTag, { key: '
|
|
15763
|
+
}, placeholder: this.state._placeholder })), this._inputValue && !this.state._hideClearButton && (hAsync(KolIconTag, { key: 'e1732b2b161044cb3deaa5b6d0dc9037697b2bd3', _icons: "codicon codicon-close", _label: translate('kol-delete-selection'), onClick: () => {
|
|
15759
15764
|
var _a;
|
|
15760
15765
|
this.clearSelection();
|
|
15761
15766
|
(_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
|
|
15762
|
-
}, class: "single-select__delete" })), hAsync("button", { key: '
|
|
15767
|
+
}, class: "single-select__delete" })), hAsync("button", { key: '0bec77ab0fd58230427710b5f2700c555e0ab433', tabindex: "-1", class: "single-select__button", onClick: this.toggleListbox.bind(this), disabled: this.state._disabled }, hAsync(KolIconTag, { key: '714b277576bd52bc07051fc0073450752cd2f994', _icons: "codicon codicon-triangle-down", _label: translate('kol-dropdown') }))), this._isOpen && !(this.state._disabled === true) && (hAsync("ul", { key: '7738666d477873fa8127e9010933164c80cd6987', role: "listbox", class: clsx('single-select__listbox', this.blockSuggestionMouseOver && 'single-select__listbox--cursor-hidden'), style: { '--visible-options': `${(_a = this._rows) !== null && _a !== void 0 ? _a : 5}` }, onKeyDown: this.handleKeyDownDropdown.bind(this) }, Array.isArray(this._filteredOptions) && this._filteredOptions.length > 0 ? (this._filteredOptions.map((option, index) => (hAsync("li", { id: `option-${index}`, key: `-${index}`, ref: (el) => {
|
|
15763
15768
|
if (el)
|
|
15764
15769
|
this.refOptions[index] = el;
|
|
15765
15770
|
}, tabIndex: -1, role: "option", "aria-selected": this._value === option.value ? 'true' : undefined, onClick: (event) => {
|
|
@@ -24857,7 +24862,7 @@ var KeyboardKey;
|
|
|
24857
24862
|
KeyboardKey["Space"] = " ";
|
|
24858
24863
|
})(KeyboardKey || (KeyboardKey = {}));
|
|
24859
24864
|
|
|
24860
|
-
const defaultStyleCss$8 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n div.pagination {\n display: grid;\n place-items: center;\n }\n div.pagination .kol-pagination {\n display: flex;\n flex-wrap: wrap;\n }\n div.pagination > div:last-child {\n display: grid;\n place-items: center;\n }\n @media (max-width: 1024px) {\n div.pagination .kol-pagination {\n flex-direction: column;\n }\n }\n @media (min-width: 1024px) {\n div.pagination,\n div.pagination > div:last-child {\n grid-auto-flow: column;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n
|
|
24865
|
+
const defaultStyleCss$8 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n div.pagination {\n display: grid;\n place-items: center;\n }\n div.pagination .kol-pagination {\n display: flex;\n flex-wrap: wrap;\n }\n div.pagination > div:last-child {\n display: grid;\n place-items: center;\n }\n @media (max-width: 1024px) {\n div.pagination .kol-pagination {\n flex-direction: column;\n }\n }\n @media (min-width: 1024px) {\n div.pagination,\n div.pagination > div:last-child {\n grid-auto-flow: column;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n .table__header-cell--align-left {\n text-align: left;\n }\n tbody th .table-sort-button .button-inner,\n .table__header-cell--align-left .table-sort-button .button-inner {\n justify-items: start;\n }\n .table__header-cell--align-center {\n text-align: center;\n }\n .table__header-cell--align-center .table-sort-button .button-inner {\n justify-items: center;\n }\n .table__header-cell--align-right {\n text-align: right;\n }\n .table__header-cell--align-right .table-sort-button .button-inner {\n justify-items: end;\n }\n tr.foot-spacer,\n tr.head-spacer {\n display: none;\n }\n .selection-header-cell {\n width: 0;\n }\n .selection-cell {\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n white-space: nowrap;\n }\n .input label {\n display: flex;\n position: relative;\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n .input .icon {\n display: block;\n position: absolute;\n inset: auto;\n z-index: 1;\n }\n .input input {\n border-style: solid;\n margin: 0;\n appearance: none;\n cursor: pointer;\n }\n .input input:before {\n content: \"\";\n }\n .input input[type=checkbox] {\n background-color: rgb(255, 255, 255);\n display: flex;\n position: relative;\n width: calc(var(--a11y-min-size) / 2);\n height: calc(var(--a11y-min-size) / 2);\n border-width: 2px;\n align-items: center;\n justify-content: center;\n line-height: 1.5;\n transition: all 0.5s ease 0s;\n }\n .input input[type=radio] {\n border-radius: 100%;\n display: flex;\n width: 1.5em;\n min-width: 1.5em;\n height: 1.5em;\n min-height: 1.5em;\n padding: 0;\n border-width: 2px;\n }\n .input input[type=radio]:before {\n border-radius: 100%;\n width: 0.75em;\n height: 0.75em;\n margin: auto;\n }\n .input input[type=radio]:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .input input[type=radio]:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n}";
|
|
24861
24866
|
var KolTableStatefulDefaultStyle0 = defaultStyleCss$8;
|
|
24862
24867
|
|
|
24863
24868
|
const PAGINATION_OPTIONS = [10, 20, 50, 100];
|
|
@@ -25276,7 +25281,7 @@ class KolTableStateful {
|
|
|
25276
25281
|
}; }
|
|
25277
25282
|
}
|
|
25278
25283
|
|
|
25279
|
-
const defaultStyleCss$7 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n
|
|
25284
|
+
const defaultStyleCss$7 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n .table__header-cell--align-left {\n text-align: left;\n }\n tbody th .table-sort-button .button-inner,\n .table__header-cell--align-left .table-sort-button .button-inner {\n justify-items: start;\n }\n .table__header-cell--align-center {\n text-align: center;\n }\n .table__header-cell--align-center .table-sort-button .button-inner {\n justify-items: center;\n }\n .table__header-cell--align-right {\n text-align: right;\n }\n .table__header-cell--align-right .table-sort-button .button-inner {\n justify-items: end;\n }\n tr.foot-spacer,\n tr.head-spacer {\n display: none;\n }\n .selection-header-cell {\n width: 0;\n }\n .selection-cell {\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n white-space: nowrap;\n }\n .input label {\n display: flex;\n position: relative;\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n .input .icon {\n display: block;\n position: absolute;\n inset: auto;\n z-index: 1;\n }\n .input input {\n border-style: solid;\n margin: 0;\n appearance: none;\n cursor: pointer;\n }\n .input input:before {\n content: \"\";\n }\n .input input[type=checkbox] {\n background-color: rgb(255, 255, 255);\n display: flex;\n position: relative;\n width: calc(var(--a11y-min-size) / 2);\n height: calc(var(--a11y-min-size) / 2);\n border-width: 2px;\n align-items: center;\n justify-content: center;\n line-height: 1.5;\n transition: all 0.5s ease 0s;\n }\n .input input[type=radio] {\n border-radius: 100%;\n display: flex;\n width: 1.5em;\n min-width: 1.5em;\n height: 1.5em;\n min-height: 1.5em;\n padding: 0;\n border-width: 2px;\n }\n .input input[type=radio]:before {\n border-radius: 100%;\n width: 0.75em;\n height: 0.75em;\n margin: auto;\n }\n .input input[type=radio]:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .input input[type=radio]:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n}";
|
|
25280
25285
|
var KolTableStatelessDefaultStyle0 = defaultStyleCss$7;
|
|
25281
25286
|
|
|
25282
25287
|
class KolTableStateless$1 {
|
|
@@ -25660,10 +25665,11 @@ class KolTableStateless {
|
|
|
25660
25665
|
renderHeadingSelectionCell() {
|
|
25661
25666
|
var _a, _b;
|
|
25662
25667
|
const selection = this.state._selection;
|
|
25663
|
-
if (
|
|
25664
|
-
return hAsync("
|
|
25665
|
-
|
|
25666
|
-
const
|
|
25668
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.multiple) === false) {
|
|
25669
|
+
return hAsync("td", { key: `thead-0-selection`, class: "table__header-cell table__header-cell--horizontal selection-cell" });
|
|
25670
|
+
}
|
|
25671
|
+
const keyPropertyName = (_a = selection === null || selection === void 0 ? void 0 : selection.keyPropertyName) !== null && _a !== void 0 ? _a : 'id';
|
|
25672
|
+
const selectedKeyLength = (_b = selection === null || selection === void 0 ? void 0 : selection.selectedKeys) === null || _b === void 0 ? void 0 : _b.length;
|
|
25667
25673
|
const dataLength = this.state._data.length;
|
|
25668
25674
|
const isChecked = selectedKeyLength === dataLength;
|
|
25669
25675
|
const indeterminate = selectedKeyLength !== 0 && !isChecked;
|
|
@@ -25675,7 +25681,7 @@ class KolTableStateless {
|
|
|
25675
25681
|
translationKey = 'kol-table-selection-all';
|
|
25676
25682
|
}
|
|
25677
25683
|
const label = translate(translationKey);
|
|
25678
|
-
return (hAsync("th", { key: `thead-0-selection`, class: "selection-cell selection-control" }, hAsync("div", { class: `input ${indeterminate ? 'indeterminate' : isChecked ? 'checked' : ''}` }, hAsync("label", { class: "checkbox-container" }, hAsync(KolIconTag, { class: "icon", _icons: `codicon ${indeterminate ? 'codicon-remove' : isChecked ? 'codicon-check' : ''}`, _label: "" }), hAsync("input", { ref: (el) => el && this.checkboxRefs.push(el), name: "selection", checked: isChecked && !indeterminate, "aria-label": label, type: "checkbox", onInput: (event) => {
|
|
25684
|
+
return (hAsync("th", { key: `thead-0-selection`, class: "table__header-cell table__header-cell--horizontal selection-cell selection-control" }, hAsync("div", { class: `input ${indeterminate ? 'indeterminate' : isChecked ? 'checked' : ''}` }, hAsync("label", { class: "checkbox-container" }, hAsync(KolIconTag, { class: "icon", _icons: `codicon ${indeterminate ? 'codicon-remove' : isChecked ? 'codicon-check' : ''}`, _label: "" }), hAsync("input", { ref: (el) => el && this.checkboxRefs.push(el), name: "selection", checked: isChecked && !indeterminate, "aria-label": label, type: "checkbox", onInput: (event) => {
|
|
25679
25685
|
var _a;
|
|
25680
25686
|
const selections = !isChecked ? this.state._data.map((el) => el === null || el === void 0 ? void 0 : el[keyPropertyName]) : [];
|
|
25681
25687
|
tryToDispatchKoliBriEvent('selection-change', this.host, selections);
|
|
@@ -25709,7 +25715,11 @@ class KolTableStateless {
|
|
|
25709
25715
|
}
|
|
25710
25716
|
}
|
|
25711
25717
|
const scope = isVertical ? 'row' : typeof cell.colSpan === 'number' && cell.colSpan > 1 ? 'colgroup' : 'col';
|
|
25712
|
-
|
|
25718
|
+
const classNames = ['table__header-cell', isVertical ? 'table__header-cell--vertical' : 'table__header-cell--horizontal'];
|
|
25719
|
+
if (typeof cell.textAlign === 'string' && cell.textAlign.length > 0) {
|
|
25720
|
+
classNames.push(`table__header-cell--align-${cell.textAlign}`, `align-${cell.textAlign}`);
|
|
25721
|
+
}
|
|
25722
|
+
return (hAsync("th", { key: `${rowIndex}-${colIndex}-${cell.label}`, class: classNames.join(' '), scope: scope, colSpan: cell.colSpan, rowSpan: cell.rowSpan, style: {
|
|
25713
25723
|
width: cell.width,
|
|
25714
25724
|
}, "aria-sort": ariaSort, "data-sort": `sort-${cell.sortDirection}` }, cell.sortDirection ? (hAsync(KolButtonWcTag, { class: "table-sort-button", exportparts: "icon", _icons: { right: sortButtonIcon }, _label: cell.label, _ariaDescription: this.translateSort, _on: {
|
|
25715
25725
|
onClick: (event) => {
|
|
@@ -25743,15 +25753,21 @@ class KolTableStateless {
|
|
|
25743
25753
|
render() {
|
|
25744
25754
|
const dataField = this.createDataField(this.state._data, this.state._headerCells);
|
|
25745
25755
|
this.checkboxRefs = [];
|
|
25746
|
-
return (hAsync(Host, { key: '
|
|
25756
|
+
return (hAsync(Host, { key: '4d6fe0efc4d9f16bb25a48d6997602b0ef2f0772', class: "kol-table-stateless-wc" }, hAsync("div", { key: '840cd66be02833ab35e9bac2d378c0b5773f0309', ref: (element) => (this.tableDivElement = element), class: "table", tabindex: this.tableDivElementHasScrollbar ? '-1' : undefined }, hAsync("table", { key: '0b6e7e5d36b6931905d8e4cc546584c98f521731', style: {
|
|
25747
25757
|
minWidth: this.state._deprecatedMinWidth || this.state._minWidth,
|
|
25748
|
-
} }, hAsync("caption", { key: '
|
|
25758
|
+
} }, hAsync("caption", { key: 'b2fcb6e72d6382e4dd2161d34f428bd7efa41bf8', id: "caption", tabindex: this.tableDivElementHasScrollbar ? '0' : undefined }, this.state._label), Array.isArray(this.state._headerCells.horizontal) && (hAsync("thead", { key: '3741376cfbbf63daa12b4f416efe1de63c96183b' }, [
|
|
25749
25759
|
this.state._headerCells.horizontal.map((cols, rowIndex) => (hAsync("tr", { key: `thead-${rowIndex}` }, this.state._selection && this.renderHeadingSelectionCell(), rowIndex === 0 && this.renderHeaderTdCell(), Array.isArray(cols) &&
|
|
25750
25760
|
cols.map((cell, colIndex) => {
|
|
25751
25761
|
if (cell.asTd === true) {
|
|
25752
|
-
return (hAsync("td", { key: `thead-${rowIndex}-${colIndex}-${cell.label}`, class:
|
|
25753
|
-
|
|
25754
|
-
|
|
25762
|
+
return (hAsync("td", { key: `thead-${rowIndex}-${colIndex}-${cell.label}`, class: [
|
|
25763
|
+
'table__header-cell',
|
|
25764
|
+
'table__header-cell--horizontal',
|
|
25765
|
+
typeof cell.textAlign === 'string' && cell.textAlign.length > 0 ? `table__header-cell--align-${cell.textAlign}` : undefined,
|
|
25766
|
+
typeof cell.textAlign === 'string' && cell.textAlign.length > 0 ? `align-${cell.textAlign}` : undefined,
|
|
25767
|
+
typeof cell.textAlign === 'string' && cell.textAlign.length > 0 ? cell.textAlign : undefined,
|
|
25768
|
+
]
|
|
25769
|
+
.filter(Boolean)
|
|
25770
|
+
.join(' '), colSpan: cell.colSpan, rowSpan: cell.rowSpan, style: {
|
|
25755
25771
|
textAlign: cell.textAlign,
|
|
25756
25772
|
width: cell.width,
|
|
25757
25773
|
}, ref: typeof cell.render === 'function'
|
|
@@ -25765,7 +25781,7 @@ class KolTableStateless {
|
|
|
25765
25781
|
}
|
|
25766
25782
|
})))),
|
|
25767
25783
|
this.renderSpacer('head', this.state._headerCells.horizontal),
|
|
25768
|
-
])), hAsync("tbody", { key: '
|
|
25784
|
+
])), hAsync("tbody", { key: '467d467a86357a34d08aa8ac0cc7870e99009a58' }, dataField.map((row, rowIndex) => this.renderTableRow(row, rowIndex, true))), this.renderFoot()))));
|
|
25769
25785
|
}
|
|
25770
25786
|
get host() { return getElement(this); }
|
|
25771
25787
|
static get watchers() { return {
|
|
@@ -26576,15 +26592,17 @@ class KolToolbar {
|
|
|
26576
26592
|
constructor(hostRef) {
|
|
26577
26593
|
registerInstance(this, hostRef);
|
|
26578
26594
|
this.indexToElement = new Map();
|
|
26579
|
-
this.renderItem = (
|
|
26595
|
+
this.renderItem = (raw, index) => {
|
|
26596
|
+
const element = this.normalizeItem(raw);
|
|
26580
26597
|
const tabIndex = index === this.currentIndex && !(element === null || element === void 0 ? void 0 : element._disabled) ? 0 : -1;
|
|
26581
26598
|
const props = {
|
|
26582
26599
|
key: index,
|
|
26583
26600
|
_tabIndex: tabIndex,
|
|
26584
26601
|
class: `button normal ${TOOLBAR_ITEM_TAG_NAME} `,
|
|
26585
26602
|
};
|
|
26586
|
-
const catchRef = (
|
|
26587
|
-
|
|
26603
|
+
const catchRef = (el) => {
|
|
26604
|
+
if (el)
|
|
26605
|
+
this.indexToElement.set(index, el);
|
|
26588
26606
|
};
|
|
26589
26607
|
return '_href' in element ? (hAsync(KolLinkWcTag, Object.assign({}, element, props, { ref: catchRef }))) : (hAsync(KolButtonWcTag, Object.assign({}, element, props, { ref: catchRef })));
|
|
26590
26608
|
};
|
|
@@ -26596,14 +26614,20 @@ class KolToolbar {
|
|
|
26596
26614
|
this._label = undefined;
|
|
26597
26615
|
this._items = undefined;
|
|
26598
26616
|
}
|
|
26617
|
+
normalizeItem(item) {
|
|
26618
|
+
const { _icons, _disabled } = item, rest = __rest(item, ["_icons", "_disabled"]);
|
|
26619
|
+
return Object.assign(Object.assign({}, rest), { _icons, _disabled });
|
|
26620
|
+
}
|
|
26599
26621
|
render() {
|
|
26600
|
-
return (hAsync(Host, { key: '
|
|
26622
|
+
return (hAsync(Host, { key: '6e9122a7972b7e620875d9bb19147145e274c020', class: "kol-toolbar" }, hAsync("div", { key: '621a2f2015a6e4d3f67fc9d9ab8fa0e324bb39c7', class: "toolbar", role: "toolbar", "aria-label": this.state._label }, this.state._items.map(this.renderItem))));
|
|
26601
26623
|
}
|
|
26602
26624
|
validateLabel(value) {
|
|
26603
26625
|
validateLabel(this, value);
|
|
26604
26626
|
}
|
|
26605
26627
|
validateItems(value) {
|
|
26606
26628
|
validateToolbarItems(this, value);
|
|
26629
|
+
this.indexToElement.clear();
|
|
26630
|
+
this.setFirstEnabledItemIndex();
|
|
26607
26631
|
}
|
|
26608
26632
|
getCurrentToolbarItem(index) {
|
|
26609
26633
|
return typeof index === 'number' ? this.indexToElement.get(index) : undefined;
|
|
@@ -26613,27 +26637,32 @@ class KolToolbar {
|
|
|
26613
26637
|
this.currentIndex = (_a = this.state._items) === null || _a === void 0 ? void 0 : _a.findIndex((item) => !item._disabled);
|
|
26614
26638
|
}
|
|
26615
26639
|
handleKeyDown(event) {
|
|
26616
|
-
var _a, _b;
|
|
26617
|
-
const isArrowKey = event.code === 'ArrowRight' || event.code === 'ArrowLeft';
|
|
26640
|
+
var _a, _b, _c, _d, _e;
|
|
26641
|
+
const isArrowKey = event.code === 'ArrowRight' || event.code === 'ArrowLeft' || event.code === 'ArrowUp' || event.code === 'ArrowDown';
|
|
26618
26642
|
if (!isArrowKey)
|
|
26619
26643
|
return;
|
|
26620
26644
|
event.preventDefault();
|
|
26621
|
-
const lastItemIndex = ((_a = this._items) === null || _a === void 0 ? void 0 : _a.length) - 1;
|
|
26645
|
+
const lastItemIndex = ((_b = (_a = this._items) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - 1;
|
|
26646
|
+
if (lastItemIndex < 0)
|
|
26647
|
+
return;
|
|
26622
26648
|
const currentIndex = this.currentIndex;
|
|
26623
|
-
let nextIndex =
|
|
26649
|
+
let nextIndex = currentIndex;
|
|
26624
26650
|
switch (event.code) {
|
|
26651
|
+
case 'ArrowUp':
|
|
26625
26652
|
case 'ArrowLeft':
|
|
26626
|
-
nextIndex = currentIndex
|
|
26653
|
+
nextIndex = currentIndex > 0 ? currentIndex - 1 : lastItemIndex;
|
|
26627
26654
|
break;
|
|
26655
|
+
case 'ArrowDown':
|
|
26628
26656
|
case 'ArrowRight':
|
|
26629
|
-
|
|
26630
|
-
nextIndex = currentIndex + 1;
|
|
26657
|
+
nextIndex = currentIndex < lastItemIndex ? currentIndex + 1 : 0;
|
|
26631
26658
|
break;
|
|
26632
26659
|
}
|
|
26633
26660
|
if (currentIndex === nextIndex)
|
|
26634
26661
|
return;
|
|
26662
|
+
if ((_d = (_c = this.state._items) === null || _c === void 0 ? void 0 : _c[nextIndex]) === null || _d === void 0 ? void 0 : _d._disabled)
|
|
26663
|
+
return;
|
|
26635
26664
|
this.currentIndex = nextIndex;
|
|
26636
|
-
void ((
|
|
26665
|
+
void ((_e = this.getCurrentToolbarItem(nextIndex)) === null || _e === void 0 ? void 0 : _e.kolFocus());
|
|
26637
26666
|
}
|
|
26638
26667
|
handleBlur(event) {
|
|
26639
26668
|
if (event.target === this.host)
|
package/dist/index.mjs
CHANGED
|
@@ -15673,6 +15673,11 @@ class KolSingleSelect {
|
|
|
15673
15673
|
}
|
|
15674
15674
|
selectOption(option) {
|
|
15675
15675
|
var _a, _b;
|
|
15676
|
+
if (option.value === this._value) {
|
|
15677
|
+
this._inputValue = option.label;
|
|
15678
|
+
this._filteredOptions = [...this.state._options];
|
|
15679
|
+
return;
|
|
15680
|
+
}
|
|
15676
15681
|
this._value = option.value;
|
|
15677
15682
|
this._inputValue = option.label;
|
|
15678
15683
|
const inputEvent = this.createEventWithTarget('input', {
|
|
@@ -15745,17 +15750,17 @@ class KolSingleSelect {
|
|
|
15745
15750
|
var _a;
|
|
15746
15751
|
const hasExpertSlot = showExpertSlot(this.state._label);
|
|
15747
15752
|
const { ariaDescribedBy } = getRenderStates(this.state);
|
|
15748
|
-
return (hAsync(Host, { key: '
|
|
15753
|
+
return (hAsync(Host, { key: '282afbddf18c466d9ff57a69eeee01f2347b0edd', class: "kol-single-select" }, hAsync("div", { key: 'ed4d8589974c5364a624d79c55bbf9f82e991895', class: `single-select ${this.state._disabled === true ? 'disabled' : ''} ` }, hAsync(KolInputTag, { key: 'a4439114f29704df1e021349780db796a5d91f84', _accessKey: this.state._accessKey, _alert: this.showAsAlert(), _disabled: this.state._disabled, _hideError: this.state._hideError, _hideLabel: this.state._hideLabel, _hint: this.state._hint, _icons: this.state._icons, _id: this.state._id, _label: this.state._label, _msg: this.state._msg, _required: this.state._required, _shortKey: this.state._shortKey, _tooltipAlign: this._tooltipAlign, _touched: this.state._touched, role: `presentation` }, hAsync("span", { key: 'db7f763555dad0c9984863153fb3f5b04b07fa0c', slot: "label" }, hasExpertSlot ? (hAsync("slot", { name: "expert" })) : typeof this.state._accessKey === 'string' || typeof this.state._shortKey === 'string' ? (hAsync(Fragment, null, hAsync(InternalUnderlinedBadgeText, { badgeText: buildBadgeTextString(this.state._accessKey || this.state._shortKey), label: this.state._label }), ' ', hAsync("kbd", { class: "badge-text-hint", "aria-hidden": "true" }, buildBadgeTextString(this.state._accessKey || this.state._shortKey)))) : (hAsync("span", null, this.state._label))), hAsync("div", { key: 'f0fe71f1beafe9a7a11058d0df257e650f378cc7', slot: "input" }, hAsync("div", { key: '32e017a76ab2d68dde52f361fb250757010f83b0', class: "single-select__group" }, hAsync("input", Object.assign({ key: 'ec6fe2ea1d86abd79af13f071399f93b2c3d116f', ref: this.catchRef, class: "single-select__input", "data-testid": "single-select-input", type: "text", "aria-autocomplete": "both", "aria-controls": "listbox", value: this._inputValue, accessKey: this.state._accessKey, "aria-keyshortcuts": this.state._shortKey, "aria-describedby": ariaDescribedBy.length > 0 ? ariaDescribedBy.join(' ') : undefined, "aria-label": this.state._hideLabel && typeof this.state._label === 'string' ? this.state._label : undefined, "aria-activedescendant": this._isOpen && this._focusedOptionIndex >= 0 ? `option-${this._focusedOptionIndex}` : undefined, autoCapitalize: "off", autoComplete: "off", autoCorrect: "off", disabled: this.state._disabled, name: this.state._name, required: this.state._required }, this.controller.onFacade, { onInput: this.onInput.bind(this), onChange: this.onChange.bind(this), onClick: this.toggleListbox.bind(this), onFocus: (event) => {
|
|
15749
15754
|
this.controller.onFacade.onFocus(event);
|
|
15750
15755
|
this.inputHasFocus = true;
|
|
15751
15756
|
}, onBlur: (event) => {
|
|
15752
15757
|
this.controller.onFacade.onBlur(event);
|
|
15753
15758
|
this.inputHasFocus = false;
|
|
15754
|
-
}, placeholder: this.state._placeholder })), this._inputValue && !this.state._hideClearButton && (hAsync(KolIconTag, { key: '
|
|
15759
|
+
}, placeholder: this.state._placeholder })), this._inputValue && !this.state._hideClearButton && (hAsync(KolIconTag, { key: 'e1732b2b161044cb3deaa5b6d0dc9037697b2bd3', _icons: "codicon codicon-close", _label: translate('kol-delete-selection'), onClick: () => {
|
|
15755
15760
|
var _a;
|
|
15756
15761
|
this.clearSelection();
|
|
15757
15762
|
(_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
|
|
15758
|
-
}, class: "single-select__delete" })), hAsync("button", { key: '
|
|
15763
|
+
}, class: "single-select__delete" })), hAsync("button", { key: '0bec77ab0fd58230427710b5f2700c555e0ab433', tabindex: "-1", class: "single-select__button", onClick: this.toggleListbox.bind(this), disabled: this.state._disabled }, hAsync(KolIconTag, { key: '714b277576bd52bc07051fc0073450752cd2f994', _icons: "codicon codicon-triangle-down", _label: translate('kol-dropdown') }))), this._isOpen && !(this.state._disabled === true) && (hAsync("ul", { key: '7738666d477873fa8127e9010933164c80cd6987', role: "listbox", class: clsx('single-select__listbox', this.blockSuggestionMouseOver && 'single-select__listbox--cursor-hidden'), style: { '--visible-options': `${(_a = this._rows) !== null && _a !== void 0 ? _a : 5}` }, onKeyDown: this.handleKeyDownDropdown.bind(this) }, Array.isArray(this._filteredOptions) && this._filteredOptions.length > 0 ? (this._filteredOptions.map((option, index) => (hAsync("li", { id: `option-${index}`, key: `-${index}`, ref: (el) => {
|
|
15759
15764
|
if (el)
|
|
15760
15765
|
this.refOptions[index] = el;
|
|
15761
15766
|
}, tabIndex: -1, role: "option", "aria-selected": this._value === option.value ? 'true' : undefined, onClick: (event) => {
|
|
@@ -24853,7 +24858,7 @@ var KeyboardKey;
|
|
|
24853
24858
|
KeyboardKey["Space"] = " ";
|
|
24854
24859
|
})(KeyboardKey || (KeyboardKey = {}));
|
|
24855
24860
|
|
|
24856
|
-
const defaultStyleCss$8 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n div.pagination {\n display: grid;\n place-items: center;\n }\n div.pagination .kol-pagination {\n display: flex;\n flex-wrap: wrap;\n }\n div.pagination > div:last-child {\n display: grid;\n place-items: center;\n }\n @media (max-width: 1024px) {\n div.pagination .kol-pagination {\n flex-direction: column;\n }\n }\n @media (min-width: 1024px) {\n div.pagination,\n div.pagination > div:last-child {\n grid-auto-flow: column;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n
|
|
24861
|
+
const defaultStyleCss$8 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n div.pagination {\n display: grid;\n place-items: center;\n }\n div.pagination .kol-pagination {\n display: flex;\n flex-wrap: wrap;\n }\n div.pagination > div:last-child {\n display: grid;\n place-items: center;\n }\n @media (max-width: 1024px) {\n div.pagination .kol-pagination {\n flex-direction: column;\n }\n }\n @media (min-width: 1024px) {\n div.pagination,\n div.pagination > div:last-child {\n grid-auto-flow: column;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n .table__header-cell--align-left {\n text-align: left;\n }\n tbody th .table-sort-button .button-inner,\n .table__header-cell--align-left .table-sort-button .button-inner {\n justify-items: start;\n }\n .table__header-cell--align-center {\n text-align: center;\n }\n .table__header-cell--align-center .table-sort-button .button-inner {\n justify-items: center;\n }\n .table__header-cell--align-right {\n text-align: right;\n }\n .table__header-cell--align-right .table-sort-button .button-inner {\n justify-items: end;\n }\n tr.foot-spacer,\n tr.head-spacer {\n display: none;\n }\n .selection-header-cell {\n width: 0;\n }\n .selection-cell {\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n white-space: nowrap;\n }\n .input label {\n display: flex;\n position: relative;\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n .input .icon {\n display: block;\n position: absolute;\n inset: auto;\n z-index: 1;\n }\n .input input {\n border-style: solid;\n margin: 0;\n appearance: none;\n cursor: pointer;\n }\n .input input:before {\n content: \"\";\n }\n .input input[type=checkbox] {\n background-color: rgb(255, 255, 255);\n display: flex;\n position: relative;\n width: calc(var(--a11y-min-size) / 2);\n height: calc(var(--a11y-min-size) / 2);\n border-width: 2px;\n align-items: center;\n justify-content: center;\n line-height: 1.5;\n transition: all 0.5s ease 0s;\n }\n .input input[type=radio] {\n border-radius: 100%;\n display: flex;\n width: 1.5em;\n min-width: 1.5em;\n height: 1.5em;\n min-height: 1.5em;\n padding: 0;\n border-width: 2px;\n }\n .input input[type=radio]:before {\n border-radius: 100%;\n width: 0.75em;\n height: 0.75em;\n margin: auto;\n }\n .input input[type=radio]:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .input input[type=radio]:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n}";
|
|
24857
24862
|
var KolTableStatefulDefaultStyle0 = defaultStyleCss$8;
|
|
24858
24863
|
|
|
24859
24864
|
const PAGINATION_OPTIONS = [10, 20, 50, 100];
|
|
@@ -25272,7 +25277,7 @@ class KolTableStateful {
|
|
|
25272
25277
|
}; }
|
|
25273
25278
|
}
|
|
25274
25279
|
|
|
25275
|
-
const defaultStyleCss$7 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n
|
|
25280
|
+
const defaultStyleCss$7 = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n contain: layout;\n }\n .kol-tooltip-wc .tooltip-floating {\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n max-width: 90vw;\n max-height: 90vh;\n visibility: hidden;\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host,\n .kol-table-stateless-wc {\n display: block;\n }\n .table {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n table {\n width: 100%;\n }\n caption {\n text-align: start;\n }\n .focus-element:focus {\n outline: 0 !important;\n }\n .table:has(.focus-element:focus) {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .table-sort-button .button {\n color: inherit;\n }\n tbody th,\n .table__header-cell--align-left {\n text-align: left;\n }\n tbody th .table-sort-button .button-inner,\n .table__header-cell--align-left .table-sort-button .button-inner {\n justify-items: start;\n }\n .table__header-cell--align-center {\n text-align: center;\n }\n .table__header-cell--align-center .table-sort-button .button-inner {\n justify-items: center;\n }\n .table__header-cell--align-right {\n text-align: right;\n }\n .table__header-cell--align-right .table-sort-button .button-inner {\n justify-items: end;\n }\n tr.foot-spacer,\n tr.head-spacer {\n display: none;\n }\n .selection-header-cell {\n width: 0;\n }\n .selection-cell {\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n white-space: nowrap;\n }\n .input label {\n display: flex;\n position: relative;\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n .input .icon {\n display: block;\n position: absolute;\n inset: auto;\n z-index: 1;\n }\n .input input {\n border-style: solid;\n margin: 0;\n appearance: none;\n cursor: pointer;\n }\n .input input:before {\n content: \"\";\n }\n .input input[type=checkbox] {\n background-color: rgb(255, 255, 255);\n display: flex;\n position: relative;\n width: calc(var(--a11y-min-size) / 2);\n height: calc(var(--a11y-min-size) / 2);\n border-width: 2px;\n align-items: center;\n justify-content: center;\n line-height: 1.5;\n transition: all 0.5s ease 0s;\n }\n .input input[type=radio] {\n border-radius: 100%;\n display: flex;\n width: 1.5em;\n min-width: 1.5em;\n height: 1.5em;\n min-height: 1.5em;\n padding: 0;\n border-width: 2px;\n }\n .input input[type=radio]:before {\n border-radius: 100%;\n width: 0.75em;\n height: 0.75em;\n margin: auto;\n }\n .input input[type=radio]:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .input input[type=radio]:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n}";
|
|
25276
25281
|
var KolTableStatelessDefaultStyle0 = defaultStyleCss$7;
|
|
25277
25282
|
|
|
25278
25283
|
class KolTableStateless$1 {
|
|
@@ -25656,10 +25661,11 @@ class KolTableStateless {
|
|
|
25656
25661
|
renderHeadingSelectionCell() {
|
|
25657
25662
|
var _a, _b;
|
|
25658
25663
|
const selection = this.state._selection;
|
|
25659
|
-
if (
|
|
25660
|
-
return hAsync("
|
|
25661
|
-
|
|
25662
|
-
const
|
|
25664
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.multiple) === false) {
|
|
25665
|
+
return hAsync("td", { key: `thead-0-selection`, class: "table__header-cell table__header-cell--horizontal selection-cell" });
|
|
25666
|
+
}
|
|
25667
|
+
const keyPropertyName = (_a = selection === null || selection === void 0 ? void 0 : selection.keyPropertyName) !== null && _a !== void 0 ? _a : 'id';
|
|
25668
|
+
const selectedKeyLength = (_b = selection === null || selection === void 0 ? void 0 : selection.selectedKeys) === null || _b === void 0 ? void 0 : _b.length;
|
|
25663
25669
|
const dataLength = this.state._data.length;
|
|
25664
25670
|
const isChecked = selectedKeyLength === dataLength;
|
|
25665
25671
|
const indeterminate = selectedKeyLength !== 0 && !isChecked;
|
|
@@ -25671,7 +25677,7 @@ class KolTableStateless {
|
|
|
25671
25677
|
translationKey = 'kol-table-selection-all';
|
|
25672
25678
|
}
|
|
25673
25679
|
const label = translate(translationKey);
|
|
25674
|
-
return (hAsync("th", { key: `thead-0-selection`, class: "selection-cell selection-control" }, hAsync("div", { class: `input ${indeterminate ? 'indeterminate' : isChecked ? 'checked' : ''}` }, hAsync("label", { class: "checkbox-container" }, hAsync(KolIconTag, { class: "icon", _icons: `codicon ${indeterminate ? 'codicon-remove' : isChecked ? 'codicon-check' : ''}`, _label: "" }), hAsync("input", { ref: (el) => el && this.checkboxRefs.push(el), name: "selection", checked: isChecked && !indeterminate, "aria-label": label, type: "checkbox", onInput: (event) => {
|
|
25680
|
+
return (hAsync("th", { key: `thead-0-selection`, class: "table__header-cell table__header-cell--horizontal selection-cell selection-control" }, hAsync("div", { class: `input ${indeterminate ? 'indeterminate' : isChecked ? 'checked' : ''}` }, hAsync("label", { class: "checkbox-container" }, hAsync(KolIconTag, { class: "icon", _icons: `codicon ${indeterminate ? 'codicon-remove' : isChecked ? 'codicon-check' : ''}`, _label: "" }), hAsync("input", { ref: (el) => el && this.checkboxRefs.push(el), name: "selection", checked: isChecked && !indeterminate, "aria-label": label, type: "checkbox", onInput: (event) => {
|
|
25675
25681
|
var _a;
|
|
25676
25682
|
const selections = !isChecked ? this.state._data.map((el) => el === null || el === void 0 ? void 0 : el[keyPropertyName]) : [];
|
|
25677
25683
|
tryToDispatchKoliBriEvent('selection-change', this.host, selections);
|
|
@@ -25705,7 +25711,11 @@ class KolTableStateless {
|
|
|
25705
25711
|
}
|
|
25706
25712
|
}
|
|
25707
25713
|
const scope = isVertical ? 'row' : typeof cell.colSpan === 'number' && cell.colSpan > 1 ? 'colgroup' : 'col';
|
|
25708
|
-
|
|
25714
|
+
const classNames = ['table__header-cell', isVertical ? 'table__header-cell--vertical' : 'table__header-cell--horizontal'];
|
|
25715
|
+
if (typeof cell.textAlign === 'string' && cell.textAlign.length > 0) {
|
|
25716
|
+
classNames.push(`table__header-cell--align-${cell.textAlign}`, `align-${cell.textAlign}`);
|
|
25717
|
+
}
|
|
25718
|
+
return (hAsync("th", { key: `${rowIndex}-${colIndex}-${cell.label}`, class: classNames.join(' '), scope: scope, colSpan: cell.colSpan, rowSpan: cell.rowSpan, style: {
|
|
25709
25719
|
width: cell.width,
|
|
25710
25720
|
}, "aria-sort": ariaSort, "data-sort": `sort-${cell.sortDirection}` }, cell.sortDirection ? (hAsync(KolButtonWcTag, { class: "table-sort-button", exportparts: "icon", _icons: { right: sortButtonIcon }, _label: cell.label, _ariaDescription: this.translateSort, _on: {
|
|
25711
25721
|
onClick: (event) => {
|
|
@@ -25739,15 +25749,21 @@ class KolTableStateless {
|
|
|
25739
25749
|
render() {
|
|
25740
25750
|
const dataField = this.createDataField(this.state._data, this.state._headerCells);
|
|
25741
25751
|
this.checkboxRefs = [];
|
|
25742
|
-
return (hAsync(Host, { key: '
|
|
25752
|
+
return (hAsync(Host, { key: '4d6fe0efc4d9f16bb25a48d6997602b0ef2f0772', class: "kol-table-stateless-wc" }, hAsync("div", { key: '840cd66be02833ab35e9bac2d378c0b5773f0309', ref: (element) => (this.tableDivElement = element), class: "table", tabindex: this.tableDivElementHasScrollbar ? '-1' : undefined }, hAsync("table", { key: '0b6e7e5d36b6931905d8e4cc546584c98f521731', style: {
|
|
25743
25753
|
minWidth: this.state._deprecatedMinWidth || this.state._minWidth,
|
|
25744
|
-
} }, hAsync("caption", { key: '
|
|
25754
|
+
} }, hAsync("caption", { key: 'b2fcb6e72d6382e4dd2161d34f428bd7efa41bf8', id: "caption", tabindex: this.tableDivElementHasScrollbar ? '0' : undefined }, this.state._label), Array.isArray(this.state._headerCells.horizontal) && (hAsync("thead", { key: '3741376cfbbf63daa12b4f416efe1de63c96183b' }, [
|
|
25745
25755
|
this.state._headerCells.horizontal.map((cols, rowIndex) => (hAsync("tr", { key: `thead-${rowIndex}` }, this.state._selection && this.renderHeadingSelectionCell(), rowIndex === 0 && this.renderHeaderTdCell(), Array.isArray(cols) &&
|
|
25746
25756
|
cols.map((cell, colIndex) => {
|
|
25747
25757
|
if (cell.asTd === true) {
|
|
25748
|
-
return (hAsync("td", { key: `thead-${rowIndex}-${colIndex}-${cell.label}`, class:
|
|
25749
|
-
|
|
25750
|
-
|
|
25758
|
+
return (hAsync("td", { key: `thead-${rowIndex}-${colIndex}-${cell.label}`, class: [
|
|
25759
|
+
'table__header-cell',
|
|
25760
|
+
'table__header-cell--horizontal',
|
|
25761
|
+
typeof cell.textAlign === 'string' && cell.textAlign.length > 0 ? `table__header-cell--align-${cell.textAlign}` : undefined,
|
|
25762
|
+
typeof cell.textAlign === 'string' && cell.textAlign.length > 0 ? `align-${cell.textAlign}` : undefined,
|
|
25763
|
+
typeof cell.textAlign === 'string' && cell.textAlign.length > 0 ? cell.textAlign : undefined,
|
|
25764
|
+
]
|
|
25765
|
+
.filter(Boolean)
|
|
25766
|
+
.join(' '), colSpan: cell.colSpan, rowSpan: cell.rowSpan, style: {
|
|
25751
25767
|
textAlign: cell.textAlign,
|
|
25752
25768
|
width: cell.width,
|
|
25753
25769
|
}, ref: typeof cell.render === 'function'
|
|
@@ -25761,7 +25777,7 @@ class KolTableStateless {
|
|
|
25761
25777
|
}
|
|
25762
25778
|
})))),
|
|
25763
25779
|
this.renderSpacer('head', this.state._headerCells.horizontal),
|
|
25764
|
-
])), hAsync("tbody", { key: '
|
|
25780
|
+
])), hAsync("tbody", { key: '467d467a86357a34d08aa8ac0cc7870e99009a58' }, dataField.map((row, rowIndex) => this.renderTableRow(row, rowIndex, true))), this.renderFoot()))));
|
|
25765
25781
|
}
|
|
25766
25782
|
get host() { return getElement(this); }
|
|
25767
25783
|
static get watchers() { return {
|
|
@@ -26572,15 +26588,17 @@ class KolToolbar {
|
|
|
26572
26588
|
constructor(hostRef) {
|
|
26573
26589
|
registerInstance(this, hostRef);
|
|
26574
26590
|
this.indexToElement = new Map();
|
|
26575
|
-
this.renderItem = (
|
|
26591
|
+
this.renderItem = (raw, index) => {
|
|
26592
|
+
const element = this.normalizeItem(raw);
|
|
26576
26593
|
const tabIndex = index === this.currentIndex && !(element === null || element === void 0 ? void 0 : element._disabled) ? 0 : -1;
|
|
26577
26594
|
const props = {
|
|
26578
26595
|
key: index,
|
|
26579
26596
|
_tabIndex: tabIndex,
|
|
26580
26597
|
class: `button normal ${TOOLBAR_ITEM_TAG_NAME} `,
|
|
26581
26598
|
};
|
|
26582
|
-
const catchRef = (
|
|
26583
|
-
|
|
26599
|
+
const catchRef = (el) => {
|
|
26600
|
+
if (el)
|
|
26601
|
+
this.indexToElement.set(index, el);
|
|
26584
26602
|
};
|
|
26585
26603
|
return '_href' in element ? (hAsync(KolLinkWcTag, Object.assign({}, element, props, { ref: catchRef }))) : (hAsync(KolButtonWcTag, Object.assign({}, element, props, { ref: catchRef })));
|
|
26586
26604
|
};
|
|
@@ -26592,14 +26610,20 @@ class KolToolbar {
|
|
|
26592
26610
|
this._label = undefined;
|
|
26593
26611
|
this._items = undefined;
|
|
26594
26612
|
}
|
|
26613
|
+
normalizeItem(item) {
|
|
26614
|
+
const { _icons, _disabled } = item, rest = __rest(item, ["_icons", "_disabled"]);
|
|
26615
|
+
return Object.assign(Object.assign({}, rest), { _icons, _disabled });
|
|
26616
|
+
}
|
|
26595
26617
|
render() {
|
|
26596
|
-
return (hAsync(Host, { key: '
|
|
26618
|
+
return (hAsync(Host, { key: '6e9122a7972b7e620875d9bb19147145e274c020', class: "kol-toolbar" }, hAsync("div", { key: '621a2f2015a6e4d3f67fc9d9ab8fa0e324bb39c7', class: "toolbar", role: "toolbar", "aria-label": this.state._label }, this.state._items.map(this.renderItem))));
|
|
26597
26619
|
}
|
|
26598
26620
|
validateLabel(value) {
|
|
26599
26621
|
validateLabel(this, value);
|
|
26600
26622
|
}
|
|
26601
26623
|
validateItems(value) {
|
|
26602
26624
|
validateToolbarItems(this, value);
|
|
26625
|
+
this.indexToElement.clear();
|
|
26626
|
+
this.setFirstEnabledItemIndex();
|
|
26603
26627
|
}
|
|
26604
26628
|
getCurrentToolbarItem(index) {
|
|
26605
26629
|
return typeof index === 'number' ? this.indexToElement.get(index) : undefined;
|
|
@@ -26609,27 +26633,32 @@ class KolToolbar {
|
|
|
26609
26633
|
this.currentIndex = (_a = this.state._items) === null || _a === void 0 ? void 0 : _a.findIndex((item) => !item._disabled);
|
|
26610
26634
|
}
|
|
26611
26635
|
handleKeyDown(event) {
|
|
26612
|
-
var _a, _b;
|
|
26613
|
-
const isArrowKey = event.code === 'ArrowRight' || event.code === 'ArrowLeft';
|
|
26636
|
+
var _a, _b, _c, _d, _e;
|
|
26637
|
+
const isArrowKey = event.code === 'ArrowRight' || event.code === 'ArrowLeft' || event.code === 'ArrowUp' || event.code === 'ArrowDown';
|
|
26614
26638
|
if (!isArrowKey)
|
|
26615
26639
|
return;
|
|
26616
26640
|
event.preventDefault();
|
|
26617
|
-
const lastItemIndex = ((_a = this._items) === null || _a === void 0 ? void 0 : _a.length) - 1;
|
|
26641
|
+
const lastItemIndex = ((_b = (_a = this._items) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - 1;
|
|
26642
|
+
if (lastItemIndex < 0)
|
|
26643
|
+
return;
|
|
26618
26644
|
const currentIndex = this.currentIndex;
|
|
26619
|
-
let nextIndex =
|
|
26645
|
+
let nextIndex = currentIndex;
|
|
26620
26646
|
switch (event.code) {
|
|
26647
|
+
case 'ArrowUp':
|
|
26621
26648
|
case 'ArrowLeft':
|
|
26622
|
-
nextIndex = currentIndex
|
|
26649
|
+
nextIndex = currentIndex > 0 ? currentIndex - 1 : lastItemIndex;
|
|
26623
26650
|
break;
|
|
26651
|
+
case 'ArrowDown':
|
|
26624
26652
|
case 'ArrowRight':
|
|
26625
|
-
|
|
26626
|
-
nextIndex = currentIndex + 1;
|
|
26653
|
+
nextIndex = currentIndex < lastItemIndex ? currentIndex + 1 : 0;
|
|
26627
26654
|
break;
|
|
26628
26655
|
}
|
|
26629
26656
|
if (currentIndex === nextIndex)
|
|
26630
26657
|
return;
|
|
26658
|
+
if ((_d = (_c = this.state._items) === null || _c === void 0 ? void 0 : _c[nextIndex]) === null || _d === void 0 ? void 0 : _d._disabled)
|
|
26659
|
+
return;
|
|
26631
26660
|
this.currentIndex = nextIndex;
|
|
26632
|
-
void ((
|
|
26661
|
+
void ((_e = this.getCurrentToolbarItem(nextIndex)) === null || _e === void 0 ? void 0 : _e.kolFocus());
|
|
26633
26662
|
}
|
|
26634
26663
|
handleBlur(event) {
|
|
26635
26664
|
if (event.target === this.host)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@public-ui/hydrate",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.17-rc.0",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"homepage": "https://public-ui.github.io",
|
|
6
6
|
"repository": {
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
],
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"rimraf": "6.0.1",
|
|
49
|
-
"@public-ui/components": "2.2.
|
|
49
|
+
"@public-ui/components": "2.2.17-rc.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@public-ui/components": "2.2.
|
|
52
|
+
"@public-ui/components": "2.2.17-rc.0"
|
|
53
53
|
},
|
|
54
54
|
"sideEffects": false,
|
|
55
55
|
"type": "commonjs",
|