@scania/tegel 0.0.31 → 0.0.32
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/cjs/sdds-toast.cjs.entry.js +1 -1
- package/dist/cjs/sdds-toast.cjs.entry.js.map +1 -1
- package/dist/collection/components/toast/sdds-toast.js +2 -2
- package/dist/collection/components/toast/sdds-toast.js.map +1 -1
- package/dist/components/dropdown-option.js +103 -0
- package/dist/components/dropdown-option.js.map +1 -0
- package/dist/components/dropdown.js +306 -0
- package/dist/components/dropdown.js.map +1 -0
- package/dist/components/icon.js +61 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/index.d.ts +27 -0
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/popper.js +1801 -0
- package/dist/components/popper.js.map +1 -0
- package/dist/components/sdds-accordion-item.d.ts +11 -0
- package/dist/components/sdds-accordion-item.js +63 -0
- package/dist/components/sdds-accordion-item.js.map +1 -0
- package/dist/components/sdds-accordion.d.ts +11 -0
- package/dist/components/sdds-accordion.js +41 -0
- package/dist/components/sdds-accordion.js.map +1 -0
- package/dist/components/sdds-badges.d.ts +11 -0
- package/dist/components/sdds-badges.js +78 -0
- package/dist/components/sdds-badges.js.map +1 -0
- package/dist/components/sdds-banner.d.ts +11 -0
- package/dist/components/sdds-banner.js +122 -0
- package/dist/components/sdds-banner.js.map +1 -0
- package/dist/components/sdds-block.d.ts +11 -0
- package/dist/components/sdds-block.js +51 -0
- package/dist/components/sdds-block.js.map +1 -0
- package/dist/components/sdds-body-cell.d.ts +11 -0
- package/dist/components/sdds-body-cell.js +8 -0
- package/dist/components/sdds-body-cell.js.map +1 -0
- package/dist/components/sdds-breadcrumb-item.d.ts +11 -0
- package/dist/components/sdds-breadcrumb-item.js +46 -0
- package/dist/components/sdds-breadcrumb-item.js.map +1 -0
- package/dist/components/sdds-breadcrumb.d.ts +11 -0
- package/dist/components/sdds-breadcrumb.js +40 -0
- package/dist/components/sdds-breadcrumb.js.map +1 -0
- package/dist/components/sdds-button.d.ts +11 -0
- package/dist/components/sdds-button.js +62 -0
- package/dist/components/sdds-button.js.map +1 -0
- package/dist/components/sdds-card.d.ts +11 -0
- package/dist/components/sdds-card.js +87 -0
- package/dist/components/sdds-card.js.map +1 -0
- package/dist/components/sdds-checkbox.d.ts +11 -0
- package/dist/components/sdds-checkbox.js +79 -0
- package/dist/components/sdds-checkbox.js.map +1 -0
- package/dist/components/sdds-datetime.d.ts +11 -0
- package/dist/components/sdds-datetime.js +132 -0
- package/dist/components/sdds-datetime.js.map +1 -0
- package/dist/components/sdds-dropdown-filter.d.ts +11 -0
- package/dist/components/sdds-dropdown-filter.js +141 -0
- package/dist/components/sdds-dropdown-filter.js.map +1 -0
- package/dist/components/sdds-dropdown-option.d.ts +11 -0
- package/dist/components/sdds-dropdown-option.js +8 -0
- package/dist/components/sdds-dropdown-option.js.map +1 -0
- package/dist/components/sdds-dropdown.d.ts +11 -0
- package/dist/components/sdds-dropdown.js +8 -0
- package/dist/components/sdds-dropdown.js.map +1 -0
- package/dist/components/sdds-header-cell.d.ts +11 -0
- package/dist/components/sdds-header-cell.js +173 -0
- package/dist/components/sdds-header-cell.js.map +1 -0
- package/dist/components/sdds-icon.d.ts +11 -0
- package/dist/components/sdds-icon.js +8 -0
- package/dist/components/sdds-icon.js.map +1 -0
- package/dist/components/sdds-inline-tab.d.ts +11 -0
- package/dist/components/sdds-inline-tab.js +43 -0
- package/dist/components/sdds-inline-tab.js.map +1 -0
- package/dist/components/sdds-inline-tabs-fullbleed.d.ts +11 -0
- package/dist/components/sdds-inline-tabs-fullbleed.js +120 -0
- package/dist/components/sdds-inline-tabs-fullbleed.js.map +1 -0
- package/dist/components/sdds-inline-tabs.d.ts +11 -0
- package/dist/components/sdds-inline-tabs.js +248 -0
- package/dist/components/sdds-inline-tabs.js.map +1 -0
- package/dist/components/sdds-link.d.ts +11 -0
- package/dist/components/sdds-link.js +8 -0
- package/dist/components/sdds-link.js.map +1 -0
- package/dist/components/sdds-link2.js +47 -0
- package/dist/components/sdds-link2.js.map +1 -0
- package/dist/components/sdds-message.d.ts +11 -0
- package/dist/components/sdds-message.js +70 -0
- package/dist/components/sdds-message.js.map +1 -0
- package/dist/components/sdds-modal.d.ts +11 -0
- package/dist/components/sdds-modal.js +80 -0
- package/dist/components/sdds-modal.js.map +1 -0
- package/dist/components/sdds-navigation-tabs.d.ts +11 -0
- package/dist/components/sdds-navigation-tabs.js +120 -0
- package/dist/components/sdds-navigation-tabs.js.map +1 -0
- package/dist/components/sdds-popover-canvas.d.ts +11 -0
- package/dist/components/sdds-popover-canvas.js +111 -0
- package/dist/components/sdds-popover-canvas.js.map +1 -0
- package/dist/components/sdds-popover-menu.d.ts +11 -0
- package/dist/components/sdds-popover-menu.js +112 -0
- package/dist/components/sdds-popover-menu.js.map +1 -0
- package/dist/components/sdds-radio-button.d.ts +11 -0
- package/dist/components/sdds-radio-button.js +55 -0
- package/dist/components/sdds-radio-button.js.map +1 -0
- package/dist/components/sdds-slider.d.ts +11 -0
- package/dist/components/sdds-slider.js +397 -0
- package/dist/components/sdds-slider.js.map +1 -0
- package/dist/components/sdds-spinner.d.ts +11 -0
- package/dist/components/sdds-spinner.js +40 -0
- package/dist/components/sdds-spinner.js.map +1 -0
- package/dist/components/sdds-table-body-row-expandable.d.ts +11 -0
- package/dist/components/sdds-table-body-row-expandable.js +108 -0
- package/dist/components/sdds-table-body-row-expandable.js.map +1 -0
- package/dist/components/sdds-table-body-row.d.ts +11 -0
- package/dist/components/sdds-table-body-row.js +8 -0
- package/dist/components/sdds-table-body-row.js.map +1 -0
- package/dist/components/sdds-table-body.d.ts +11 -0
- package/dist/components/sdds-table-body.js +340 -0
- package/dist/components/sdds-table-body.js.map +1 -0
- package/dist/components/sdds-table-footer.d.ts +11 -0
- package/dist/components/sdds-table-footer.js +198 -0
- package/dist/components/sdds-table-footer.js.map +1 -0
- package/dist/components/sdds-table-header.d.ts +11 -0
- package/dist/components/sdds-table-header.js +127 -0
- package/dist/components/sdds-table-header.js.map +1 -0
- package/dist/components/sdds-table-toolbar.d.ts +11 -0
- package/dist/components/sdds-table-toolbar.js +90 -0
- package/dist/components/sdds-table-toolbar.js.map +1 -0
- package/dist/components/sdds-table.d.ts +11 -0
- package/dist/components/sdds-table.js +94 -0
- package/dist/components/sdds-table.js.map +1 -0
- package/dist/components/sdds-textarea.d.ts +11 -0
- package/dist/components/sdds-textarea.js +112 -0
- package/dist/components/sdds-textarea.js.map +1 -0
- package/dist/components/sdds-textfield.d.ts +11 -0
- package/dist/components/sdds-textfield.js +130 -0
- package/dist/components/sdds-textfield.js.map +1 -0
- package/dist/components/sdds-toast.d.ts +11 -0
- package/dist/components/sdds-toast.js +120 -0
- package/dist/components/sdds-toast.js.map +1 -0
- package/dist/components/sdds-toggle.d.ts +11 -0
- package/dist/components/sdds-toggle.js +72 -0
- package/dist/components/sdds-toggle.js.map +1 -0
- package/dist/components/sdds-tooltip.d.ts +11 -0
- package/dist/components/sdds-tooltip.js +130 -0
- package/dist/components/sdds-tooltip.js.map +1 -0
- package/dist/components/table-body-cell.js +104 -0
- package/dist/components/table-body-cell.js.map +1 -0
- package/dist/components/table-body-row.js +123 -0
- package/dist/components/table-body-row.js.map +1 -0
- package/dist/esm/sdds-toast.entry.js +1 -1
- package/dist/esm/sdds-toast.entry.js.map +1 -1
- package/dist/tegel/{p-46013562.entry.js → p-f51fe381.entry.js} +2 -2
- package/dist/tegel/p-f51fe381.entry.js.map +1 -0
- package/dist/tegel/tegel.esm.js +1 -1
- package/dist/types/components/toast/sdds-toast.d.ts +1 -1
- package/dist/types/components.d.ts +2 -2
- package/package.json +2 -2
- package/dist/tegel/p-46013562.entry.js.map +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const spinnerCss = ":root,html{--sdds-spinner-background:var(--sdds-blue-400);--sdds-spinner-background-inverted:var(--sdds-white);--sdds-spinner-speed:1.8s;--sdds-spinner-speed-lg:2s;--sdds-spinner-radius-xs:8px;--sdds-spinner-radius-sm:12px;--sdds-spinner-radius-md:26px;--sdds-spinner-radius-lg:42px;--sdds-spinner-radius:var(--sdds-spinner-radius-lg);--sdds-spinner-stroke-width-xs:3px;--sdds-spinner-stroke-width-sm:4px;--sdds-spinner-stroke-width-md:6px;--sdds-spinner-stroke-width-lg:8px;--sdds-spinner-stroke-width:var(--sdds-spinner-stroke-width-lg);--PI:3.14159265358979}:host{box-sizing:border-box;display:block}:host *{box-sizing:border-box}.sdds-spinner-svg{width:calc(var(--sdds-spinner-radius) * 2);height:calc(var(--sdds-spinner-radius) * 2);transform:scale(-1, 1) rotate(-90deg)}.sdds-spinner-svg-xs{--sdds-spinner-radius:var(--sdds-spinner-radius-xs);--sdds-spinner-stroke-width:var(--sdds-spinner-stroke-width-xs);--sdds-spinner-animation-speed:var(--sdds-spinner-speed)}.sdds-spinner-svg-sm{--sdds-spinner-radius:var(--sdds-spinner-radius-sm);--sdds-spinner-stroke-width:var(--sdds-spinner-stroke-width-sm);--sdds-spinner-animation-speed:var(--sdds-spinner-speed)}.sdds-spinner-svg-md{--sdds-spinner-radius:var(--sdds-spinner-radius-md);--sdds-spinner-stroke-width:var(--sdds-spinner-stroke-width-md);--sdds-spinner-animation-speed:var(--sdds-spinner-speed)}.sdds-spinner-svg-lg{--sdds-spinner-radius:var(--sdds-spinner-radius-lg);--sdds-spinner-stroke-width:var(--sdds-spinner-stroke-width-lg);--sdds-spinner-animation-speed:var(--sdds-spinner-speed-lg)}.sdds-spinner-circle{cx:var(--sdds-spinner-radius);cy:var(--sdds-spinner-radius);r:calc(var(--sdds-spinner-radius) - var(--sdds-spinner-stroke-width) / 2);stroke-width:var(--sdds-spinner-stroke-width);fill:none;--sdds-spinner-stroke-dash:calc((2 * var(--PI)) * var(--sdds-spinner-radius));stroke-dasharray:var(--sdds-spinner-stroke-dash);stroke-width:var(--sdds-spinner-stroke-width);animation:dash var(--sdds-spinner-animation-speed) cubic-bezier(0.55, 0.15, 0.45, 0.85) infinite}.sdds-spinner-circle-standard{stroke:var(--sdds-spinner-background)}.sdds-spinner-circle-inverted{stroke:var(--sdds-spinner-background-inverted)}@keyframes dash{from{stroke-dashoffset:calc(-1 * var(--sdds-spinner-stroke-dash))}to{stroke-dashoffset:var(--sdds-spinner-stroke-dash)}}";
|
|
4
|
+
|
|
5
|
+
const Spinner = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.__registerHost();
|
|
9
|
+
this.size = 'lg';
|
|
10
|
+
this.variant = 'standard';
|
|
11
|
+
}
|
|
12
|
+
render() {
|
|
13
|
+
return (h("div", { "aria-live": "assertive", role: "status", "aria-label": "loading" }, h("svg", { class: `sdds-spinner-svg sdds-spinner-svg-${this.size}`, "aria-hidden": "true" }, h("circle", { class: `sdds-spinner-circle sdds-spinner-circle-${this.variant}` }))));
|
|
14
|
+
}
|
|
15
|
+
static get style() { return spinnerCss; }
|
|
16
|
+
}, [0, "sdds-spinner", {
|
|
17
|
+
"size": [1],
|
|
18
|
+
"variant": [1]
|
|
19
|
+
}]);
|
|
20
|
+
function defineCustomElement$1() {
|
|
21
|
+
if (typeof customElements === "undefined") {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const components = ["sdds-spinner"];
|
|
25
|
+
components.forEach(tagName => { switch (tagName) {
|
|
26
|
+
case "sdds-spinner":
|
|
27
|
+
if (!customElements.get(tagName)) {
|
|
28
|
+
customElements.define(tagName, Spinner);
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
31
|
+
} });
|
|
32
|
+
}
|
|
33
|
+
defineCustomElement$1();
|
|
34
|
+
|
|
35
|
+
const SddsSpinner = Spinner;
|
|
36
|
+
const defineCustomElement = defineCustomElement$1;
|
|
37
|
+
|
|
38
|
+
export { SddsSpinner, defineCustomElement };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=sdds-spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-spinner.js","mappings":";;AAAA,MAAM,UAAU,GAAG,+wEAA+wE;;MCOrxE,OAAO;;;;gBAEwB,IAAI;mBAGH,UAAU;;EAErD,MAAM;IACJ,QACE,wBAAe,WAAW,EAAC,IAAI,EAAC,QAAQ,gBAAY,SAAS,IAC3D,WAAK,KAAK,EAAE,qCAAqC,IAAI,CAAC,IAAI,EAAE,iBAAc,MAAM,IAC9E,cAAQ,KAAK,EAAE,2CAA2C,IAAI,CAAC,OAAO,EAAE,GAAI,CACxE,CACF,EACN;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/spinner/spinner.scss?tag=sdds-spinner","./src/components/spinner/spinner.tsx"],"sourcesContent":["@import './spinner-theme-vars.scss';\n@import '../../mixins/box-sizing';\n\n:host {\n @include sdds-box-sizing;\n\n display: block;\n}\n\n.sdds-spinner-svg {\n width: calc(var(--sdds-spinner-radius) * 2);\n height: calc(var(--sdds-spinner-radius) * 2);\n transform: scale(-1, 1) rotate(-90deg);\n\n &-xs {\n --sdds-spinner-radius: var(--sdds-spinner-radius-xs);\n --sdds-spinner-stroke-width: var(--sdds-spinner-stroke-width-xs);\n --sdds-spinner-animation-speed: var(--sdds-spinner-speed);\n }\n\n &-sm {\n --sdds-spinner-radius: var(--sdds-spinner-radius-sm);\n --sdds-spinner-stroke-width: var(--sdds-spinner-stroke-width-sm);\n --sdds-spinner-animation-speed: var(--sdds-spinner-speed);\n }\n\n &-md {\n --sdds-spinner-radius: var(--sdds-spinner-radius-md);\n --sdds-spinner-stroke-width: var(--sdds-spinner-stroke-width-md);\n --sdds-spinner-animation-speed: var(--sdds-spinner-speed);\n }\n\n &-lg {\n --sdds-spinner-radius: var(--sdds-spinner-radius-lg);\n --sdds-spinner-stroke-width: var(--sdds-spinner-stroke-width-lg);\n --sdds-spinner-animation-speed: var(--sdds-spinner-speed-lg);\n }\n}\n\n.sdds-spinner-circle {\n cx: var(--sdds-spinner-radius);\n cy: var(--sdds-spinner-radius);\n r: calc(var(--sdds-spinner-radius) - (var(--sdds-spinner-stroke-width) / 2));\n stroke-width: var(--sdds-spinner-stroke-width);\n fill: none;\n\n //Calculation for lenght of dash\n --sdds-spinner-stroke-dash: calc((2 * var(--PI)) * var(--sdds-spinner-radius));\n\n stroke-dasharray: var(--sdds-spinner-stroke-dash);\n stroke-width: var(--sdds-spinner-stroke-width);\n animation: dash var(--sdds-spinner-animation-speed) cubic-bezier(0.55, 0.15, 0.45, 0.85) infinite;\n\n &-standard {\n stroke: var(--sdds-spinner-background);\n }\n\n &-inverted {\n stroke: var(--sdds-spinner-background-inverted);\n }\n}\n\n@keyframes dash {\n from {\n stroke-dashoffset: calc(-1 * var(--sdds-spinner-stroke-dash));\n }\n\n to {\n stroke-dashoffset: var(--sdds-spinner-stroke-dash);\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'sdds-spinner',\n styleUrl: 'spinner.scss',\n shadow: false,\n})\nexport class Spinner {\n /** Size of spinner */\n @Prop() size: 'xs' | 'sm' | 'md' | 'lg' = 'lg';\n\n /** Variant of spinner */\n @Prop() variant: 'standard' | 'inverted' = 'standard';\n\n render() {\n return (\n <div aria-live=\"assertive\" role=\"status\" aria-label=\"loading\">\n <svg class={`sdds-spinner-svg sdds-spinner-svg-${this.size}`} aria-hidden=\"true\">\n <circle class={`sdds-spinner-circle sdds-spinner-circle-${this.variant}`} />\n </svg>\n </div>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsTableBodyRowExpandable extends Components.SddsTableBodyRowExpandable, HTMLElement {}
|
|
4
|
+
export const SddsTableBodyRowExpandable: {
|
|
5
|
+
prototype: SddsTableBodyRowExpandable;
|
|
6
|
+
new (): SddsTableBodyRowExpandable;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const tableBodyRowExpandableCss = ":host{box-sizing:border-box;display:contents}:host *{box-sizing:border-box}:host .sdds-table__row,:host .sdds-table__row-extend{display:table-row;border-bottom:1px solid var(--sdds-data-table-divider);background-color:var(--sdds-data-table-body-row-background);transition:background-color 200ms ease;color:var(--sdds-data-table-color)}:host .sdds-table__row:hover,:host .sdds-table__row-extend:hover{background-color:var(--sdds-data-table-body-row-background-hover)}:host .sdds-table__expand-control-container{display:flex;justify-content:center;align-items:center;height:46px;cursor:pointer;padding:0 16px;position:relative}:host .sdds-table__expand-control-container .sdds-table__expand-input{all:unset;position:absolute;top:0;left:0;width:100%;height:100%;position:absolute;cursor:pointer}:host .sdds-table__expand-control-container .sdds-table__expand-input:focus{outline:2px solid var(--sdds-blue-400);outline-offset:-2px}:host .sdds-table__expand-control-container .sdds-expendable-row-icon{height:16px;width:16px;transition:transform 200ms ease;transform:rotate(0)}:host .sdds-table__row-expand{display:none;transition:background-color 200ms ease}:host .sdds-table__row-expand .sdds-table__cell-expand{padding:16px 16px 16px 66px;color:var(--sdds-data-table-color)}:host(.sdds-table__row-expand--active) .sdds-table__row{background-color:var(--sdds-data-table-body-row-background-selected)}:host(.sdds-table__row-expand--active) .sdds-table__expand-control-container .sdds-expendable-row-icon{transform:rotate(180deg)}:host(.sdds-table__row-expand--active) .sdds-table__row-expand{background-color:var(--sdds-data-table-body-row-background-selected);display:table-row}:host(.sdds-table__compact) .sdds-table__expand-control-container{height:30px}:host(.sdds-table__compact) .sdds-table__row-expand .sdds-table__cell-expand{padding:8px 16px 8px 66px}:host(.sdds-table--divider) .sdds-table__cell--expand{border-right:1px solid var(--sdds-data-table-divider)}";
|
|
4
|
+
|
|
5
|
+
const relevantTableProps = [
|
|
6
|
+
'verticalDividers',
|
|
7
|
+
'compactDesign',
|
|
8
|
+
'noMinWidth',
|
|
9
|
+
'modeVariant',
|
|
10
|
+
];
|
|
11
|
+
const TableBodyRowExpandable = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
this.__registerHost();
|
|
15
|
+
this.__attachShadow();
|
|
16
|
+
this.singleRowExpandedEvent = createEvent(this, "singleRowExpandedEvent", 7);
|
|
17
|
+
this.runPaginationEvent = createEvent(this, "runPaginationEvent", 7);
|
|
18
|
+
this.colSpan = null;
|
|
19
|
+
this.isExpanded = false;
|
|
20
|
+
this.tableId = '';
|
|
21
|
+
this.columnsNumber = null;
|
|
22
|
+
this.verticalDividers = false;
|
|
23
|
+
this.compactDesign = false;
|
|
24
|
+
this.noMinWidth = false;
|
|
25
|
+
this.modeVariant = null;
|
|
26
|
+
}
|
|
27
|
+
tablePropsChangedEventListener(event) {
|
|
28
|
+
if (this.tableId === event.detail.tableId) {
|
|
29
|
+
event.detail.changed
|
|
30
|
+
.filter((changedProp) => relevantTableProps.includes(changedProp))
|
|
31
|
+
.forEach((changedProp) => {
|
|
32
|
+
if (typeof this[changedProp] === 'undefined') {
|
|
33
|
+
throw new Error(`Table prop is not supported: ${changedProp}`);
|
|
34
|
+
}
|
|
35
|
+
this[changedProp] = event.detail[changedProp];
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
connectedCallback() {
|
|
40
|
+
this.tableEl = this.host.closest('sdds-table');
|
|
41
|
+
this.tableId = this.tableEl.tableId;
|
|
42
|
+
}
|
|
43
|
+
componentWillLoad() {
|
|
44
|
+
relevantTableProps.forEach((tablePropName) => {
|
|
45
|
+
this[tablePropName] = this.tableEl[tablePropName];
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
componentDidLoad() {
|
|
49
|
+
this.runPaginationEvent.emit(this.tableId);
|
|
50
|
+
}
|
|
51
|
+
componentWillRender() {
|
|
52
|
+
if (this.colSpan !== null) {
|
|
53
|
+
this.columnsNumber = this.colSpan;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.columnsNumber = this.tableEl.querySelector('sdds-table-header').childElementCount + 1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
sendValue() {
|
|
60
|
+
this.singleRowExpandedEvent.emit([this.tableId, this.isExpanded]);
|
|
61
|
+
}
|
|
62
|
+
onChangeHandler(event) {
|
|
63
|
+
this.isExpanded = event.currentTarget.checked === true;
|
|
64
|
+
this.sendValue();
|
|
65
|
+
}
|
|
66
|
+
render() {
|
|
67
|
+
return (h(Host, { class: {
|
|
68
|
+
'sdds-table__row': true,
|
|
69
|
+
'sdds-table__row-expand--active': this.isExpanded,
|
|
70
|
+
'sdds-table__compact': this.compactDesign,
|
|
71
|
+
'sdds-table--divider': this.verticalDividers,
|
|
72
|
+
'sdds-mode-variant-primary': this.modeVariant === 'primary',
|
|
73
|
+
'sdds-mode-variant-secondary': this.modeVariant === 'secondary',
|
|
74
|
+
} }, h("tr", { class: "sdds-table__row" }, h("td", { class: "sdds-table__cell sdds-table__cell--expand" }, h("label", { class: "sdds-table__expand-control-container" }, h("input", { class: "sdds-table__expand-input", type: "checkbox", onChange: (event) => this.onChangeHandler(event), checked: this.isExpanded }), h("span", { class: "sdds-expendable-row-icon" }, h("svg", { fill: "none", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32" }, h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M4.273 9.783a1 1 0 0 1 1.415 0l9.888 9.888a.6.6 0 0 0 .848 0l9.888-9.888a1 1 0 1 1 1.415 1.414l-9.889 9.889a2.6 2.6 0 0 1-3.677 0l-9.888-9.889a1 1 0 0 1 0-1.414Z", fill: "currentColor" }))))), h("slot", null)), h("tr", { class: "sdds-table__row-expand" }, h("td", { class: "sdds-table__cell-expand", colSpan: this.columnsNumber }, h("slot", { name: "expand-row" })))));
|
|
75
|
+
}
|
|
76
|
+
get host() { return this; }
|
|
77
|
+
static get style() { return tableBodyRowExpandableCss; }
|
|
78
|
+
}, [1, "sdds-table-body-row-expandable", {
|
|
79
|
+
"colSpan": [2, "col-span"],
|
|
80
|
+
"isExpanded": [32],
|
|
81
|
+
"tableId": [32],
|
|
82
|
+
"columnsNumber": [32],
|
|
83
|
+
"verticalDividers": [32],
|
|
84
|
+
"compactDesign": [32],
|
|
85
|
+
"noMinWidth": [32],
|
|
86
|
+
"modeVariant": [32]
|
|
87
|
+
}, [[16, "tablePropsChangedEvent", "tablePropsChangedEventListener"]]]);
|
|
88
|
+
function defineCustomElement$1() {
|
|
89
|
+
if (typeof customElements === "undefined") {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const components = ["sdds-table-body-row-expandable"];
|
|
93
|
+
components.forEach(tagName => { switch (tagName) {
|
|
94
|
+
case "sdds-table-body-row-expandable":
|
|
95
|
+
if (!customElements.get(tagName)) {
|
|
96
|
+
customElements.define(tagName, TableBodyRowExpandable);
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
} });
|
|
100
|
+
}
|
|
101
|
+
defineCustomElement$1();
|
|
102
|
+
|
|
103
|
+
const SddsTableBodyRowExpandable = TableBodyRowExpandable;
|
|
104
|
+
const defineCustomElement = defineCustomElement$1;
|
|
105
|
+
|
|
106
|
+
export { SddsTableBodyRowExpandable, defineCustomElement };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=sdds-table-body-row-expandable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-table-body-row-expandable.js","mappings":"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","names":[],"sources":["./src/components/data-table/table-body-row-expandable/table-body-row-expandable.scss?tag=sdds-table-body-row-expandable&encapsulation=shadow","./src/components/data-table/table-body-row-expandable/table-body-row-expandable.tsx"],"sourcesContent":["@import '../../../mixins/box-sizing';\n@import '../../../mixins/focus-state';\n\n:host {\n @include sdds-box-sizing;\n\n display: contents;\n\n .sdds-table__row,\n .sdds-table__row-extend {\n display: table-row;\n border-bottom: 1px solid var(--sdds-data-table-divider);\n background-color: var(--sdds-data-table-body-row-background);\n transition: background-color 200ms ease;\n color: var(--sdds-data-table-color);\n }\n\n .sdds-table__row:hover,\n .sdds-table__row-extend:hover {\n background-color: var(--sdds-data-table-body-row-background-hover);\n }\n\n .sdds-table__expand-control-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 46px;\n cursor: pointer;\n padding: 0 16px;\n position: relative;\n\n .sdds-table__expand-input {\n all: unset;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: absolute;\n cursor: pointer;\n\n &:focus {\n @include sdds-focus-state;\n }\n }\n\n .sdds-expendable-row-icon {\n height: 16px;\n width: 16px;\n transition: transform 200ms ease;\n transform: rotate(0);\n }\n }\n\n .sdds-table__row-expand {\n display: none;\n transition: background-color 200ms ease;\n\n .sdds-table__cell-expand {\n padding: 16px 16px 16px 66px;\n color: var(--sdds-data-table-color);\n }\n }\n}\n\n:host(.sdds-table__row-expand--active) {\n .sdds-table__row {\n background-color: var(--sdds-data-table-body-row-background-selected);\n }\n\n .sdds-table__expand-control-container {\n .sdds-expendable-row-icon {\n transform: rotate(180deg);\n }\n }\n\n .sdds-table__row-expand {\n background-color: var(--sdds-data-table-body-row-background-selected);\n display: table-row;\n }\n}\n\n// test\n:host(.sdds-table__compact) {\n .sdds-table__expand-control-container {\n height: 30px;\n }\n\n .sdds-table__row-expand {\n .sdds-table__cell-expand {\n padding: 8px 16px 8px 66px;\n }\n }\n}\n\n:host(.sdds-table--divider) {\n .sdds-table__cell--expand {\n border-right: 1px solid var(--sdds-data-table-divider);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n} from '@stencil/core';\nimport { TablePropsChangedEvent } from '../table/table';\n\nconst relevantTableProps: TablePropsChangedEvent['changed'] = [\n 'verticalDividers',\n 'compactDesign',\n 'noMinWidth',\n 'modeVariant',\n];\n@Component({\n tag: 'sdds-table-body-row-expandable',\n styleUrl: 'table-body-row-expandable.scss',\n shadow: true,\n})\nexport class TableBodyRowExpandable {\n /** In case that automatic count of columns does not work, user can manually set this one. Take in mind that expandable control is column too */\n @Prop() colSpan: number = null;\n\n @State() isExpanded: boolean = false;\n\n @State() tableId: string = '';\n\n @State() columnsNumber: number = null;\n\n @State() verticalDividers: boolean = false;\n\n @State() compactDesign: boolean = false;\n\n @State() noMinWidth: boolean = false;\n\n @State() modeVariant: 'primary' | 'secondary' = null;\n\n @Element() host: HTMLElement;\n\n tableEl: HTMLSddsTableElement;\n\n /** Sends out status of itw own expended status feature to table header component */\n @Event({\n eventName: 'singleRowExpandedEvent',\n bubbles: true,\n cancelable: true,\n composed: true,\n })\n singleRowExpandedEvent: EventEmitter<any>;\n\n /** Event that triggers pagination function. Needed as first rows have to be rendered in order for pagination to run */\n @Event({\n eventName: 'runPaginationEvent',\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n runPaginationEvent: EventEmitter<string>;\n\n @Listen('tablePropsChangedEvent', { target: 'body' })\n tablePropsChangedEventListener(event: CustomEvent<TablePropsChangedEvent>) {\n if (this.tableId === event.detail.tableId) {\n event.detail.changed\n .filter((changedProp) => relevantTableProps.includes(changedProp))\n .forEach((changedProp) => {\n if (typeof this[changedProp] === 'undefined') {\n throw new Error(`Table prop is not supported: ${changedProp}`);\n }\n this[changedProp] = event.detail[changedProp];\n });\n }\n }\n\n connectedCallback() {\n this.tableEl = this.host.closest('sdds-table');\n this.tableId = this.tableEl.tableId;\n }\n\n componentWillLoad() {\n relevantTableProps.forEach((tablePropName) => {\n this[tablePropName] = this.tableEl[tablePropName];\n });\n }\n\n componentDidLoad() {\n this.runPaginationEvent.emit(this.tableId);\n }\n\n componentWillRender() {\n if (this.colSpan !== null) {\n this.columnsNumber = this.colSpan;\n } else {\n this.columnsNumber = this.tableEl.querySelector('sdds-table-header').childElementCount + 1;\n }\n }\n\n sendValue() {\n this.singleRowExpandedEvent.emit([this.tableId, this.isExpanded]);\n }\n\n onChangeHandler(event) {\n this.isExpanded = event.currentTarget.checked === true;\n this.sendValue();\n }\n\n render() {\n return (\n <Host\n class={{\n 'sdds-table__row': true,\n 'sdds-table__row-expand--active': this.isExpanded,\n 'sdds-table__compact': this.compactDesign,\n 'sdds-table--divider': this.verticalDividers,\n 'sdds-mode-variant-primary': this.modeVariant === 'primary',\n 'sdds-mode-variant-secondary': this.modeVariant === 'secondary',\n }}\n >\n <tr class=\"sdds-table__row\">\n <td class=\"sdds-table__cell sdds-table__cell--expand\">\n <label class=\"sdds-table__expand-control-container\">\n <input\n class=\"sdds-table__expand-input\"\n type=\"checkbox\"\n onChange={(event) => this.onChangeHandler(event)}\n checked={this.isExpanded}\n />\n <span class=\"sdds-expendable-row-icon\">\n <svg fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.273 9.783a1 1 0 0 1 1.415 0l9.888 9.888a.6.6 0 0 0 .848 0l9.888-9.888a1 1 0 1 1 1.415 1.414l-9.889 9.889a2.6 2.6 0 0 1-3.677 0l-9.888-9.889a1 1 0 0 1 0-1.414Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n </label>\n </td>\n <slot />\n </tr>\n\n <tr class=\"sdds-table__row-expand\">\n <td class=\"sdds-table__cell-expand\" colSpan={this.columnsNumber}>\n <slot name=\"expand-row\" />\n </td>\n </tr>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsTableBodyRow extends Components.SddsTableBodyRow, HTMLElement {}
|
|
4
|
+
export const SddsTableBodyRow: {
|
|
5
|
+
prototype: SddsTableBodyRow;
|
|
6
|
+
new (): SddsTableBodyRow;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { T as TableBodyRow, d as defineCustomElement$1 } from './table-body-row.js';
|
|
2
|
+
|
|
3
|
+
const SddsTableBodyRow = TableBodyRow;
|
|
4
|
+
const defineCustomElement = defineCustomElement$1;
|
|
5
|
+
|
|
6
|
+
export { SddsTableBodyRow, defineCustomElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=sdds-table-body-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-table-body-row.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsTableBody extends Components.SddsTableBody, HTMLElement {}
|
|
4
|
+
export const SddsTableBody: {
|
|
5
|
+
prototype: SddsTableBody;
|
|
6
|
+
new (): SddsTableBody;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { d as defineCustomElement$3 } from './table-body-cell.js';
|
|
3
|
+
import { d as defineCustomElement$2 } from './table-body-row.js';
|
|
4
|
+
|
|
5
|
+
const dummyData = [
|
|
6
|
+
{
|
|
7
|
+
truck: "L-series",
|
|
8
|
+
driver: "Sonya Bruce",
|
|
9
|
+
country: "Brazil",
|
|
10
|
+
mileage: 123987
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
truck: "P-series",
|
|
14
|
+
driver: "Guerra Bowman",
|
|
15
|
+
country: "Sweden",
|
|
16
|
+
mileage: 2000852
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
truck: "G-series",
|
|
20
|
+
driver: "Ferrell Wallace",
|
|
21
|
+
country: "Germany",
|
|
22
|
+
mileage: 564
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
truck: "R-series",
|
|
26
|
+
driver: "Cox Burris",
|
|
27
|
+
country: "Spain",
|
|
28
|
+
mileage: 1789357
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
truck: "S-series",
|
|
32
|
+
driver: "Montgomery Cervantes",
|
|
33
|
+
country: "Croatia",
|
|
34
|
+
mileage: 65
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
truck: "L-series",
|
|
38
|
+
driver: "Sheryl Nielsen",
|
|
39
|
+
country: "Greece",
|
|
40
|
+
mileage: 365784
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
truck: "G-series",
|
|
44
|
+
driver: "Benton Gomez",
|
|
45
|
+
country: "France",
|
|
46
|
+
mileage: 80957
|
|
47
|
+
}
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
const tableBodyCss = ":host,sdds-table-body{box-sizing:border-box;display:table-row-group}:host *,sdds-table-body *{box-sizing:border-box}:host .sdds-table__info-message,sdds-table-body .sdds-table__info-message{font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);display:table-cell;box-sizing:border-box;color:var(--sdds-data-table-color);padding:var(--sdds-spacing-element-16);min-width:192px;vertical-align:top;background-color:transparent;transition:background-color 200ms ease}";
|
|
51
|
+
|
|
52
|
+
const relevantTableProps = [
|
|
53
|
+
'enableMultiselect',
|
|
54
|
+
'enableExpandableRows',
|
|
55
|
+
];
|
|
56
|
+
const TableBody = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
57
|
+
constructor() {
|
|
58
|
+
super();
|
|
59
|
+
this.__registerHost();
|
|
60
|
+
this.sortingSwitcherEvent = createEvent(this, "sortingSwitcherEvent", 7);
|
|
61
|
+
this.updateBodyCheckboxesEvent = createEvent(this, "updateBodyCheckboxesEvent", 7);
|
|
62
|
+
this.updateMainCheckboxEvent = createEvent(this, "updateMainCheckboxEvent", 7);
|
|
63
|
+
this.uncheckAll = () => {
|
|
64
|
+
this.mainCheckboxStatus = false;
|
|
65
|
+
this.updateMainCheckboxEvent.emit([this.tableId, this.mainCheckboxStatus]);
|
|
66
|
+
this.updateBodyCheckboxesEvent.emit([this.tableId, this.mainCheckboxStatus]);
|
|
67
|
+
};
|
|
68
|
+
this.selectedDataExporter = () => {
|
|
69
|
+
const selectedRows = this.host.getElementsByClassName('sdds-table__row--selected');
|
|
70
|
+
this.multiselectArray = [];
|
|
71
|
+
for (let j = 0; j < selectedRows.length; j++) {
|
|
72
|
+
const rowCells = selectedRows[j].getElementsByTagName('sdds-body-cell');
|
|
73
|
+
const selectedObject = {};
|
|
74
|
+
for (let i = 0; i < rowCells.length; i++) {
|
|
75
|
+
const currentCellKey = rowCells[i].getAttribute('cell-key');
|
|
76
|
+
const currentCellValue = rowCells[i].getAttribute('cell-value');
|
|
77
|
+
selectedObject[currentCellKey] = currentCellValue;
|
|
78
|
+
}
|
|
79
|
+
this.multiselectArray.push(selectedObject);
|
|
80
|
+
}
|
|
81
|
+
this.multiselectArrayJSON = JSON.stringify(this.multiselectArray);
|
|
82
|
+
};
|
|
83
|
+
this.bodyCheckBoxClicked = () => {
|
|
84
|
+
const numberOfRows = this.host.getElementsByClassName('sdds-table__row').length;
|
|
85
|
+
const numberOfRowsSelected = this.host.getElementsByClassName('sdds-table__row--selected').length;
|
|
86
|
+
this.mainCheckboxStatus = numberOfRows === numberOfRowsSelected;
|
|
87
|
+
this.updateMainCheckboxEvent.emit([this.tableId, this.mainCheckboxStatus]);
|
|
88
|
+
this.selectedDataExporter();
|
|
89
|
+
};
|
|
90
|
+
this.disableFilteringFunction = false;
|
|
91
|
+
this.disableSortingFunction = false;
|
|
92
|
+
this.bodyData = undefined;
|
|
93
|
+
this.enableDummyData = false;
|
|
94
|
+
this.dummyData = JSON.stringify(dummyData);
|
|
95
|
+
this.rowsPerPage = 1;
|
|
96
|
+
this.enableMultiselect = false;
|
|
97
|
+
this.enablePaginationTableBody = false;
|
|
98
|
+
this.enableExpandableRows = true;
|
|
99
|
+
this.innerBodyData = [];
|
|
100
|
+
this.bodyDataManipulated = [];
|
|
101
|
+
this.bodyDataOriginal = [];
|
|
102
|
+
this.multiselectArray = [];
|
|
103
|
+
this.multiselectArrayJSON = undefined;
|
|
104
|
+
this.mainCheckboxStatus = false;
|
|
105
|
+
this.columnsNumber = 0;
|
|
106
|
+
this.disableAllSorting = false;
|
|
107
|
+
this.numberOfPages = 0;
|
|
108
|
+
this.paginationValue = 1;
|
|
109
|
+
this.tempPaginationDisable = false;
|
|
110
|
+
this.showNoResultsMessage = false;
|
|
111
|
+
this.tableId = '';
|
|
112
|
+
}
|
|
113
|
+
arrayDataWatcher(newValue) {
|
|
114
|
+
if (typeof newValue === 'string') {
|
|
115
|
+
this.innerBodyData = JSON.parse(newValue);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.innerBodyData = newValue;
|
|
119
|
+
}
|
|
120
|
+
this.bodyDataManipulated = [...this.innerBodyData];
|
|
121
|
+
this.bodyDataOriginal = [...this.innerBodyData];
|
|
122
|
+
}
|
|
123
|
+
tablePropsChangedEventListener(event) {
|
|
124
|
+
if (this.tableId === event.detail.tableId) {
|
|
125
|
+
event.detail.changed
|
|
126
|
+
.filter((changedProp) => relevantTableProps.includes(changedProp))
|
|
127
|
+
.forEach((changedProp) => {
|
|
128
|
+
if (typeof this[changedProp] === 'undefined') {
|
|
129
|
+
throw new Error(`Table prop is not supported: ${changedProp}`);
|
|
130
|
+
}
|
|
131
|
+
this[changedProp] = event.detail[changedProp];
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
static compareValues(key, order = 'asc') {
|
|
136
|
+
return function innerSort(a, b) {
|
|
137
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
138
|
+
if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
|
|
139
|
+
// property doesn't exist on either object
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
const varA = typeof a[key] === 'string' ? a[key].toUpperCase() : a[key];
|
|
143
|
+
const varB = typeof b[key] === 'string' ? b[key].toUpperCase() : b[key];
|
|
144
|
+
let comparison = 0;
|
|
145
|
+
if (varA > varB) {
|
|
146
|
+
comparison = 1;
|
|
147
|
+
}
|
|
148
|
+
else if (varA < varB) {
|
|
149
|
+
comparison = -1;
|
|
150
|
+
}
|
|
151
|
+
return order === 'desc' ? comparison * -1 : comparison;
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
sortData(keyValue, sortingDirection) {
|
|
155
|
+
if (!this.disableSortingFunction) {
|
|
156
|
+
if (this.enableMultiselect) {
|
|
157
|
+
// Uncheck all checkboxes as state of checkbox is lost on sorting. Do it only in case multiSelect is True.
|
|
158
|
+
this.uncheckAll();
|
|
159
|
+
}
|
|
160
|
+
// use spread operator to make enable sorting and modifying array, same as using .slice()
|
|
161
|
+
this.bodyDataManipulated = [...this.bodyDataManipulated];
|
|
162
|
+
this.bodyDataManipulated.sort(TableBody.compareValues(keyValue, sortingDirection));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Listen to sortColumnData from data-table-header-element
|
|
166
|
+
updateOptionsContent(event) {
|
|
167
|
+
const [receivedID, receivedKeyValue, receivedSortingDirection] = event.detail;
|
|
168
|
+
if (this.tableId === receivedID) {
|
|
169
|
+
this.sortData(receivedKeyValue, receivedSortingDirection);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
headCheckboxListener(event) {
|
|
173
|
+
if (this.tableId === event.detail[0]) {
|
|
174
|
+
[, this.mainCheckboxStatus] = event.detail;
|
|
175
|
+
this.selectedDataExporter();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// No need to read the value, event is here just to trigger another function
|
|
179
|
+
bodyCheckboxListener() {
|
|
180
|
+
this.bodyCheckBoxClicked();
|
|
181
|
+
}
|
|
182
|
+
searchFunction(searchTerm) {
|
|
183
|
+
if (!this.disableFilteringFunction) {
|
|
184
|
+
/*
|
|
185
|
+
// Logic for filtering JSON data on all columns
|
|
186
|
+
// Really nice solution, do not delete, might be needed in future
|
|
187
|
+
// Reason to go with upper one is not to lose selected state on checkboxes
|
|
188
|
+
if (searchTerm.length > 0) {
|
|
189
|
+
this.bodyDataManipulated = this.bodyDataOriginal.filter((option) =>
|
|
190
|
+
Object.keys(option).some(
|
|
191
|
+
(key) =>
|
|
192
|
+
String(option[key] ?? '')
|
|
193
|
+
.toLowerCase()
|
|
194
|
+
.indexOf(searchTerm) >= 0
|
|
195
|
+
)
|
|
196
|
+
);
|
|
197
|
+
} else {
|
|
198
|
+
this.bodyDataManipulated = this.bodyDataOriginal;
|
|
199
|
+
}
|
|
200
|
+
*/
|
|
201
|
+
// grab all rows in body
|
|
202
|
+
const dataRowsFiltering = this.host.querySelectorAll('sdds-table-body-row');
|
|
203
|
+
if (searchTerm.length > 0) {
|
|
204
|
+
if (this.enablePaginationTableBody) {
|
|
205
|
+
this.tempPaginationDisable = true;
|
|
206
|
+
}
|
|
207
|
+
dataRowsFiltering.forEach((item) => {
|
|
208
|
+
const cells = item.querySelectorAll('sdds-body-cell');
|
|
209
|
+
const cellValuesArray = [];
|
|
210
|
+
// go through cells and save cell-values in array
|
|
211
|
+
cells.forEach((cellItem) => {
|
|
212
|
+
const cellValue = cellItem.getAttribute('cell-value').toLowerCase();
|
|
213
|
+
cellValuesArray.push(cellValue);
|
|
214
|
+
});
|
|
215
|
+
// iterate over array of values and see if one matches search string
|
|
216
|
+
const matchCounter = cellValuesArray.find((element) => element.includes(searchTerm));
|
|
217
|
+
// if matches, show parent row, otherwise hide the row
|
|
218
|
+
if (matchCounter) {
|
|
219
|
+
item.classList.remove('sdds-table__row--hidden');
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
item.classList.add('sdds-table__row--hidden');
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
this.disableAllSorting = true;
|
|
226
|
+
this.sortingSwitcherEvent.emit([this.tableId, this.disableAllSorting]);
|
|
227
|
+
const dataRowsHidden = this.host.querySelectorAll('.sdds-table__row--hidden');
|
|
228
|
+
// If same, info message will be shown
|
|
229
|
+
this.showNoResultsMessage = dataRowsHidden.length === dataRowsFiltering.length;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
if (this.enablePaginationTableBody) {
|
|
233
|
+
this.tempPaginationDisable = false;
|
|
234
|
+
}
|
|
235
|
+
// Check if pagination is ON in order to prevent showing all rows
|
|
236
|
+
if (this.enablePaginationTableBody) ;
|
|
237
|
+
else {
|
|
238
|
+
dataRowsFiltering.forEach((item) => {
|
|
239
|
+
item.classList.remove('sdds-table__row--hidden');
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
this.disableAllSorting = false;
|
|
243
|
+
this.sortingSwitcherEvent.emit([this.tableId, this.disableAllSorting]);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Listen to tableFilteringTerm from tableToolbar component
|
|
248
|
+
tableFilteringTermListener(event) {
|
|
249
|
+
if (this.tableId === event.detail[0]) {
|
|
250
|
+
this.searchFunction(event.detail[1]);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
connectedCallback() {
|
|
254
|
+
this.tableEl = this.host.closest('sdds-table');
|
|
255
|
+
this.tableId = this.tableEl.tableId;
|
|
256
|
+
}
|
|
257
|
+
componentWillLoad() {
|
|
258
|
+
relevantTableProps.forEach((tablePropName) => {
|
|
259
|
+
this[tablePropName] = this.tableEl[tablePropName];
|
|
260
|
+
});
|
|
261
|
+
if (this.enableDummyData) {
|
|
262
|
+
this.bodyData = this.dummyData;
|
|
263
|
+
}
|
|
264
|
+
else if (this.bodyData) {
|
|
265
|
+
this.arrayDataWatcher(this.bodyData);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
componentWillRender() {
|
|
269
|
+
const headerColumnsNo = this.host.parentElement.querySelector('sdds-table-header').children.length;
|
|
270
|
+
// multiselect and expended features requires one extra column for controls...
|
|
271
|
+
if (this.enableMultiselect || this.enableExpandableRows) {
|
|
272
|
+
this.columnsNumber = headerColumnsNo + 1;
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
this.columnsNumber = headerColumnsNo;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
render() {
|
|
279
|
+
return (h(Host, { "data-selected-rows": this.multiselectArrayJSON }, this.bodyDataManipulated.map((row) => (h("sdds-table-body-row", null, Object.keys(row).map((cellData) => (h("sdds-body-cell", { "cell-key": cellData, "cell-value": row[cellData] })))))), this.showNoResultsMessage && (h("tr", null, h("td", { class: "sdds-table__info-message", colSpan: this.columnsNumber }, "Unfortunately, no data matches your search term \uD83D\uDE15"))), h("slot", null)));
|
|
280
|
+
}
|
|
281
|
+
get host() { return this; }
|
|
282
|
+
static get watchers() { return {
|
|
283
|
+
"bodyData": ["arrayDataWatcher"]
|
|
284
|
+
}; }
|
|
285
|
+
static get style() { return tableBodyCss; }
|
|
286
|
+
}, [4, "sdds-table-body", {
|
|
287
|
+
"disableFilteringFunction": [4, "disable-filtering-function"],
|
|
288
|
+
"disableSortingFunction": [4, "disable-sorting-function"],
|
|
289
|
+
"bodyData": [8, "body-data"],
|
|
290
|
+
"enableDummyData": [4, "enable-dummy-data"],
|
|
291
|
+
"dummyData": [32],
|
|
292
|
+
"rowsPerPage": [32],
|
|
293
|
+
"enableMultiselect": [32],
|
|
294
|
+
"enablePaginationTableBody": [32],
|
|
295
|
+
"enableExpandableRows": [32],
|
|
296
|
+
"innerBodyData": [32],
|
|
297
|
+
"bodyDataManipulated": [32],
|
|
298
|
+
"bodyDataOriginal": [32],
|
|
299
|
+
"multiselectArray": [32],
|
|
300
|
+
"multiselectArrayJSON": [32],
|
|
301
|
+
"mainCheckboxStatus": [32],
|
|
302
|
+
"columnsNumber": [32],
|
|
303
|
+
"disableAllSorting": [32],
|
|
304
|
+
"numberOfPages": [32],
|
|
305
|
+
"paginationValue": [32],
|
|
306
|
+
"tempPaginationDisable": [32],
|
|
307
|
+
"showNoResultsMessage": [32],
|
|
308
|
+
"tableId": [32]
|
|
309
|
+
}, [[16, "tablePropsChangedEvent", "tablePropsChangedEventListener"], [16, "sortColumnDataEvent", "updateOptionsContent"], [16, "mainCheckboxSelectedEvent", "headCheckboxListener"], [16, "bodyRowToTable", "bodyCheckboxListener"], [16, "tableFilteringTerm", "tableFilteringTermListener"]]]);
|
|
310
|
+
function defineCustomElement$1() {
|
|
311
|
+
if (typeof customElements === "undefined") {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const components = ["sdds-table-body", "sdds-body-cell", "sdds-table-body-row"];
|
|
315
|
+
components.forEach(tagName => { switch (tagName) {
|
|
316
|
+
case "sdds-table-body":
|
|
317
|
+
if (!customElements.get(tagName)) {
|
|
318
|
+
customElements.define(tagName, TableBody);
|
|
319
|
+
}
|
|
320
|
+
break;
|
|
321
|
+
case "sdds-body-cell":
|
|
322
|
+
if (!customElements.get(tagName)) {
|
|
323
|
+
defineCustomElement$3();
|
|
324
|
+
}
|
|
325
|
+
break;
|
|
326
|
+
case "sdds-table-body-row":
|
|
327
|
+
if (!customElements.get(tagName)) {
|
|
328
|
+
defineCustomElement$2();
|
|
329
|
+
}
|
|
330
|
+
break;
|
|
331
|
+
} });
|
|
332
|
+
}
|
|
333
|
+
defineCustomElement$1();
|
|
334
|
+
|
|
335
|
+
const SddsTableBody = TableBody;
|
|
336
|
+
const defineCustomElement = defineCustomElement$1;
|
|
337
|
+
|
|
338
|
+
export { SddsTableBody, defineCustomElement };
|
|
339
|
+
|
|
340
|
+
//# sourceMappingURL=sdds-table-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"sdds-table-body.js","mappings":"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","names":[],"sources":["./src/components/data-table/table-body/table-body.scss?tag=sdds-table-body","./src/components/data-table/table-body/table-body.tsx"],"sourcesContent":["@import '../../../mixins/box-sizing';\n\n:host,\nsdds-table-body {\n @include sdds-box-sizing;\n\n display: table-row-group;\n\n .sdds-table__info-message {\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n display: table-cell;\n box-sizing: border-box;\n color: var(--sdds-data-table-color);\n padding: var(--sdds-spacing-element-16);\n min-width: 192px;\n vertical-align: top;\n background-color: transparent;\n transition: background-color 200ms ease;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport dummyData from './dummy-data.json';\nimport { TablePropsChangedEvent } from '../table/table';\n\nconst relevantTableProps: TablePropsChangedEvent['changed'] = [\n 'enableMultiselect',\n 'enableExpandableRows',\n];\n\n@Component({\n tag: 'sdds-table-body',\n styleUrl: 'table-body.scss',\n shadow: false,\n})\nexport class TableBody {\n /** Disables inbuilt filtering logic, leaving user an option to create own filter functionality while listening to events from sdds-table-toolbar component for search term */\n @Prop() disableFilteringFunction: boolean = false;\n\n /** Disables inbuilt sorting logic, leaving user an option to create own sorting functionality while listening to events from sdds-header-cell component for sorting */\n @Prop() disableSortingFunction: boolean = false;\n\n /** Prop to pass JSON string which enables automatic rendering of table rows and cells */\n @Prop() bodyData: any;\n\n /** Prop for showcase of rendering JSON in body-data, just for presentation purposes */\n @Prop() enableDummyData: boolean = false;\n\n @State() dummyData: any = JSON.stringify(dummyData);\n\n @Element() host: HTMLElement;\n\n @State() rowsPerPage: number = 1;\n\n @State() enableMultiselect: boolean = false;\n\n @State() enablePaginationTableBody: boolean = false;\n\n @State() enableExpandableRows: boolean = true;\n\n @State() innerBodyData = [];\n\n @State() bodyDataManipulated = [];\n\n @State() bodyDataOriginal = [];\n\n @State() multiselectArray = [];\n\n @State() multiselectArrayJSON: string;\n\n @State() mainCheckboxStatus: boolean = false;\n\n @State() columnsNumber: number = 0;\n\n @State() disableAllSorting: boolean = false;\n\n @State() numberOfPages: number = 0;\n\n @State() paginationValue: number = 1;\n\n @State() tempPaginationDisable: boolean = false;\n\n @State() showNoResultsMessage: boolean = false;\n\n @State() tableId: string = '';\n\n tableEl: HTMLSddsTableElement;\n\n @Watch('bodyData')\n arrayDataWatcher(newValue: string) {\n if (typeof newValue === 'string') {\n this.innerBodyData = JSON.parse(newValue);\n } else {\n this.innerBodyData = newValue;\n }\n this.bodyDataManipulated = [...this.innerBodyData];\n this.bodyDataOriginal = [...this.innerBodyData];\n }\n\n /** Event that sends unique table identifier and enable/disable status for sorting functionality */\n @Event({\n eventName: 'sortingSwitcherEvent',\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n sortingSwitcherEvent: EventEmitter<any>;\n\n /** Sends unique table identifier and mainCheckbox status to all rows when multiselect feature is enabled */\n @Event({\n eventName: 'updateBodyCheckboxesEvent',\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n updateBodyCheckboxesEvent: EventEmitter<any>;\n\n /** Sends unique table identifier and status if mainCheckbox should change its state based on selection status of single rows when multiselect feature is used */\n @Event({\n eventName: 'updateMainCheckboxEvent',\n composed: true,\n cancelable: true,\n bubbles: true,\n })\n updateMainCheckboxEvent: EventEmitter<any>;\n\n @Listen('tablePropsChangedEvent', { target: 'body' })\n tablePropsChangedEventListener(event: CustomEvent<TablePropsChangedEvent>) {\n if (this.tableId === event.detail.tableId) {\n event.detail.changed\n .filter((changedProp) => relevantTableProps.includes(changedProp))\n .forEach((changedProp) => {\n if (typeof this[changedProp] === 'undefined') {\n throw new Error(`Table prop is not supported: ${changedProp}`);\n }\n this[changedProp] = event.detail[changedProp];\n });\n }\n }\n\n static compareValues(key, order = 'asc') {\n return function innerSort(a, b) {\n // eslint-disable-next-line no-prototype-builtins\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\n // property doesn't exist on either object\n return 0;\n }\n\n const varA = typeof a[key] === 'string' ? a[key].toUpperCase() : a[key];\n const varB = typeof b[key] === 'string' ? b[key].toUpperCase() : b[key];\n\n let comparison = 0;\n if (varA > varB) {\n comparison = 1;\n } else if (varA < varB) {\n comparison = -1;\n }\n return order === 'desc' ? comparison * -1 : comparison;\n };\n }\n\n uncheckAll = () => {\n this.mainCheckboxStatus = false;\n this.updateMainCheckboxEvent.emit([this.tableId, this.mainCheckboxStatus]);\n this.updateBodyCheckboxesEvent.emit([this.tableId, this.mainCheckboxStatus]);\n };\n\n sortData(keyValue, sortingDirection) {\n if (!this.disableSortingFunction) {\n if (this.enableMultiselect) {\n // Uncheck all checkboxes as state of checkbox is lost on sorting. Do it only in case multiSelect is True.\n this.uncheckAll();\n }\n\n // use spread operator to make enable sorting and modifying array, same as using .slice()\n this.bodyDataManipulated = [...this.bodyDataManipulated];\n this.bodyDataManipulated.sort(TableBody.compareValues(keyValue, sortingDirection));\n }\n }\n\n // Listen to sortColumnData from data-table-header-element\n @Listen('sortColumnDataEvent', { target: 'body' })\n updateOptionsContent(event: CustomEvent<any>) {\n const [receivedID, receivedKeyValue, receivedSortingDirection] = event.detail;\n if (this.tableId === receivedID) {\n this.sortData(receivedKeyValue, receivedSortingDirection);\n }\n }\n\n selectedDataExporter = () => {\n const selectedRows = this.host.getElementsByClassName('sdds-table__row--selected');\n\n this.multiselectArray = [];\n for (let j = 0; j < selectedRows.length; j++) {\n const rowCells = selectedRows[j].getElementsByTagName('sdds-body-cell');\n const selectedObject = {};\n for (let i = 0; i < rowCells.length; i++) {\n const currentCellKey = rowCells[i].getAttribute('cell-key');\n const currentCellValue = rowCells[i].getAttribute('cell-value');\n selectedObject[currentCellKey] = currentCellValue;\n }\n this.multiselectArray.push(selectedObject);\n }\n this.multiselectArrayJSON = JSON.stringify(this.multiselectArray);\n };\n\n @Listen('mainCheckboxSelectedEvent', { target: 'body' })\n headCheckboxListener(event: CustomEvent<any>) {\n if (this.tableId === event.detail[0]) {\n [, this.mainCheckboxStatus] = event.detail;\n this.selectedDataExporter();\n }\n }\n\n bodyCheckBoxClicked = () => {\n const numberOfRows = this.host.getElementsByClassName('sdds-table__row').length;\n\n const numberOfRowsSelected = this.host.getElementsByClassName(\n 'sdds-table__row--selected',\n ).length;\n\n this.mainCheckboxStatus = numberOfRows === numberOfRowsSelected;\n\n this.updateMainCheckboxEvent.emit([this.tableId, this.mainCheckboxStatus]);\n\n this.selectedDataExporter();\n };\n\n // No need to read the value, event is here just to trigger another function\n @Listen('bodyRowToTable', { target: 'body' })\n bodyCheckboxListener() {\n this.bodyCheckBoxClicked();\n }\n\n searchFunction(searchTerm) {\n if (!this.disableFilteringFunction) {\n /*\n // Logic for filtering JSON data on all columns\n // Really nice solution, do not delete, might be needed in future\n // Reason to go with upper one is not to lose selected state on checkboxes\n if (searchTerm.length > 0) {\n this.bodyDataManipulated = this.bodyDataOriginal.filter((option) =>\n Object.keys(option).some(\n (key) =>\n String(option[key] ?? '')\n .toLowerCase()\n .indexOf(searchTerm) >= 0\n )\n );\n } else {\n this.bodyDataManipulated = this.bodyDataOriginal;\n }\n */\n\n // grab all rows in body\n const dataRowsFiltering = this.host.querySelectorAll('sdds-table-body-row');\n\n if (searchTerm.length > 0) {\n if (this.enablePaginationTableBody) {\n this.tempPaginationDisable = true;\n }\n\n dataRowsFiltering.forEach((item) => {\n const cells = item.querySelectorAll('sdds-body-cell');\n const cellValuesArray = [];\n\n // go through cells and save cell-values in array\n cells.forEach((cellItem) => {\n const cellValue = cellItem.getAttribute('cell-value').toLowerCase();\n cellValuesArray.push(cellValue);\n });\n\n // iterate over array of values and see if one matches search string\n const matchCounter = cellValuesArray.find((element) => element.includes(searchTerm));\n\n // if matches, show parent row, otherwise hide the row\n if (matchCounter) {\n item.classList.remove('sdds-table__row--hidden');\n } else {\n item.classList.add('sdds-table__row--hidden');\n }\n });\n\n this.disableAllSorting = true;\n this.sortingSwitcherEvent.emit([this.tableId, this.disableAllSorting]);\n\n const dataRowsHidden = this.host.querySelectorAll('.sdds-table__row--hidden');\n\n // If same, info message will be shown\n this.showNoResultsMessage = dataRowsHidden.length === dataRowsFiltering.length;\n } else {\n if (this.enablePaginationTableBody) {\n this.tempPaginationDisable = false;\n }\n\n // Check if pagination is ON in order to prevent showing all rows\n if (this.enablePaginationTableBody) {\n // TODO: EMIT PAGINATION\n } else {\n dataRowsFiltering.forEach((item) => {\n item.classList.remove('sdds-table__row--hidden');\n });\n }\n\n this.disableAllSorting = false;\n this.sortingSwitcherEvent.emit([this.tableId, this.disableAllSorting]);\n }\n }\n }\n\n // Listen to tableFilteringTerm from tableToolbar component\n @Listen('tableFilteringTerm', { target: 'body' })\n tableFilteringTermListener(event: CustomEvent<any>) {\n if (this.tableId === event.detail[0]) {\n this.searchFunction(event.detail[1]);\n }\n }\n\n connectedCallback() {\n this.tableEl = this.host.closest('sdds-table');\n this.tableId = this.tableEl.tableId;\n }\n\n componentWillLoad() {\n relevantTableProps.forEach((tablePropName) => {\n this[tablePropName] = this.tableEl[tablePropName];\n });\n\n if (this.enableDummyData) {\n this.bodyData = this.dummyData;\n } else if (this.bodyData) {\n this.arrayDataWatcher(this.bodyData);\n }\n }\n\n componentWillRender() {\n const headerColumnsNo =\n this.host.parentElement.querySelector('sdds-table-header').children.length;\n\n // multiselect and expended features requires one extra column for controls...\n if (this.enableMultiselect || this.enableExpandableRows) {\n this.columnsNumber = headerColumnsNo + 1;\n } else {\n this.columnsNumber = headerColumnsNo;\n }\n }\n\n render() {\n return (\n <Host data-selected-rows={this.multiselectArrayJSON}>\n {this.bodyDataManipulated.map((row) => (\n <sdds-table-body-row>\n {Object.keys(row).map((cellData) => (\n <sdds-body-cell cell-key={cellData} cell-value={row[cellData]}></sdds-body-cell>\n ))}\n </sdds-table-body-row>\n ))}\n {this.showNoResultsMessage && (\n <tr>\n <td class=\"sdds-table__info-message\" colSpan={this.columnsNumber}>\n Unfortunately, no data matches your search term 😕\n </td>\n </tr>\n )}\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SddsTableFooter extends Components.SddsTableFooter, HTMLElement {}
|
|
4
|
+
export const SddsTableFooter: {
|
|
5
|
+
prototype: SddsTableFooter;
|
|
6
|
+
new (): SddsTableFooter;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|