@statistikzh/leu 0.21.0 → 0.22.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.
Files changed (83) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +14 -0
  3. package/dist/Accordion.js +1 -1
  4. package/dist/Button.js +1 -1
  5. package/dist/ButtonGroup.js +1 -1
  6. package/dist/ChartWrapper.js +1 -1
  7. package/dist/Checkbox.js +1 -1
  8. package/dist/CheckboxGroup.js +1 -1
  9. package/dist/Chip.js +1 -1
  10. package/dist/ChipGroup.js +1 -1
  11. package/dist/ChipLink.js +1 -1
  12. package/dist/ChipRemovable.js +1 -1
  13. package/dist/ChipSelectable.js +1 -1
  14. package/dist/Dialog.js +1 -1
  15. package/dist/Dropdown.d.ts +4 -0
  16. package/dist/Dropdown.js +4 -1
  17. package/dist/FileInput.js +2 -2
  18. package/dist/Icon.js +1 -1
  19. package/dist/Input.js +1 -1
  20. package/dist/{LeuElement-BFljD2fO.js → LeuElement-BooZrClI.js} +1 -1
  21. package/dist/Menu.js +1 -1
  22. package/dist/MenuItem.js +1 -1
  23. package/dist/Message.js +1 -1
  24. package/dist/Pagination.js +1 -1
  25. package/dist/Placeholder.js +1 -1
  26. package/dist/Popup.js +1 -1
  27. package/dist/ProgressBar.js +1 -1
  28. package/dist/Radio.js +1 -1
  29. package/dist/RadioGroup.js +1 -1
  30. package/dist/Range.js +1 -1
  31. package/dist/ScrollTop.js +1 -1
  32. package/dist/Select.js +1 -1
  33. package/dist/Spinner.js +1 -1
  34. package/dist/Table.js +97 -3
  35. package/dist/Tag.js +1 -1
  36. package/dist/VisuallyHidden.js +1 -1
  37. package/dist/components/dropdown/Dropdown.d.ts +4 -0
  38. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  39. package/dist/components/dropdown/stories/dropdown.stories.d.ts.map +1 -1
  40. package/dist/components/table/Table.d.ts.map +1 -1
  41. package/dist/index.js +2 -2
  42. package/dist/leu-accordion.js +1 -1
  43. package/dist/leu-button-group.js +1 -1
  44. package/dist/leu-button.js +1 -1
  45. package/dist/leu-chart-wrapper.js +1 -1
  46. package/dist/leu-checkbox-group.js +1 -1
  47. package/dist/leu-checkbox.js +1 -1
  48. package/dist/leu-chip-group.js +1 -1
  49. package/dist/leu-chip-link.js +1 -1
  50. package/dist/leu-chip-removable.js +1 -1
  51. package/dist/leu-chip-selectable.js +1 -1
  52. package/dist/leu-dialog.js +1 -1
  53. package/dist/leu-dropdown.js +1 -1
  54. package/dist/leu-file-input.js +2 -2
  55. package/dist/leu-icon.js +1 -1
  56. package/dist/leu-input.js +1 -1
  57. package/dist/leu-menu-item.js +1 -1
  58. package/dist/leu-menu.js +1 -1
  59. package/dist/leu-message.js +1 -1
  60. package/dist/leu-pagination.js +1 -1
  61. package/dist/leu-placeholder.js +1 -1
  62. package/dist/leu-popup.js +1 -1
  63. package/dist/leu-progress-bar.js +1 -1
  64. package/dist/leu-radio-group.js +1 -1
  65. package/dist/leu-radio.js +1 -1
  66. package/dist/leu-range.js +1 -1
  67. package/dist/leu-scroll-top.js +1 -1
  68. package/dist/leu-select.js +1 -1
  69. package/dist/leu-spinner.js +1 -1
  70. package/dist/leu-table.js +2 -2
  71. package/dist/leu-tag.js +1 -1
  72. package/dist/leu-visually-hidden.js +1 -1
  73. package/dist/lib/styleMap.d.ts +61 -0
  74. package/dist/lib/styleMap.d.ts.map +1 -0
  75. package/dist/vscode.html-custom-data.json +13 -12
  76. package/dist/vue/index.d.ts +22 -20
  77. package/dist/web-types.json +33 -28
  78. package/package.json +1 -1
  79. package/src/components/dropdown/Dropdown.ts +3 -0
  80. package/src/components/dropdown/stories/dropdown.stories.ts +6 -2
  81. package/src/components/dropdown/test/dropdown.test.ts +14 -2
  82. package/src/components/table/Table.ts +1 -1
  83. package/src/lib/styleMap.ts +139 -0
@@ -1,7 +1,7 @@
1
1
  import { LeuChipSelectable } from './ChipSelectable.js';
2
2
  import 'lit';
3
3
  import './Chip.js';
4
- import './LeuElement-BFljD2fO.js';
4
+ import './LeuElement-BooZrClI.js';
5
5
 
6
6
  LeuChipSelectable.define("leu-chip-selectable");
7
7
 
@@ -2,7 +2,7 @@ import { LeuDialog } from './Dialog.js';
2
2
  import 'lit';
3
3
  import 'lit/directives/ref.js';
4
4
  import 'lit/directives/class-map.js';
5
- import './LeuElement-BFljD2fO.js';
5
+ import './LeuElement-BooZrClI.js';
6
6
  import './hasSlotController-Bm2tipvG.js';
7
7
  import './Icon.js';
8
8
  import './_tslib-CNEFicEt.js';
@@ -1,7 +1,7 @@
1
1
  import { LeuDropdown } from './Dropdown.js';
2
2
  import 'lit';
3
3
  import 'lit/directives/ref.js';
4
- import './LeuElement-BFljD2fO.js';
4
+ import './LeuElement-BooZrClI.js';
5
5
  import './hasSlotController-Bm2tipvG.js';
6
6
  import './Button.js';
7
7
  import './_tslib-CNEFicEt.js';
@@ -4,7 +4,7 @@ import 'lit';
4
4
  import 'lit/decorators.js';
5
5
  import 'lit/directives/if-defined.js';
6
6
  import 'lit/directives/class-map.js';
7
- import './LeuElement-BFljD2fO.js';
7
+ import './LeuElement-BooZrClI.js';
8
8
  import './Accordion.js';
9
9
  import 'lit/static-html.js';
10
10
  import './Button.js';
@@ -34,7 +34,7 @@ import './Radio.js';
34
34
  import './RadioGroup.js';
35
35
  import './Select.js';
36
36
  import './Table.js';
37
- import 'lit/directives/style-map.js';
37
+ import 'lit/directive.js';
38
38
  import './leu-icon.js';
39
39
 
40
40
  LeuFileInput.define("leu-file-input");
package/dist/leu-icon.js CHANGED
@@ -2,7 +2,7 @@ import { LeuIcon } from './Icon.js';
2
2
  import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/decorators.js';
5
- import './LeuElement-BFljD2fO.js';
5
+ import './LeuElement-BooZrClI.js';
6
6
 
7
7
  LeuIcon.define("leu-icon");
8
8
 
package/dist/leu-input.js CHANGED
@@ -4,7 +4,7 @@ import 'lit/directives/class-map.js';
4
4
  import 'lit/directives/if-defined.js';
5
5
  import 'lit/directives/live.js';
6
6
  import 'lit/directives/ref.js';
7
- import './LeuElement-BFljD2fO.js';
7
+ import './LeuElement-BooZrClI.js';
8
8
  import './Icon.js';
9
9
  import './_tslib-CNEFicEt.js';
10
10
  import 'lit/decorators.js';
@@ -1,7 +1,7 @@
1
1
  import { LeuMenuItem } from './MenuItem.js';
2
2
  import 'lit';
3
3
  import 'lit/directives/if-defined.js';
4
- import './LeuElement-BFljD2fO.js';
4
+ import './LeuElement-BooZrClI.js';
5
5
  import './Icon.js';
6
6
  import './_tslib-CNEFicEt.js';
7
7
  import 'lit/decorators.js';
package/dist/leu-menu.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { LeuMenu } from './Menu.js';
2
2
  import 'lit';
3
- import './LeuElement-BFljD2fO.js';
3
+ import './LeuElement-BooZrClI.js';
4
4
  import './MenuItem.js';
5
5
  import 'lit/directives/if-defined.js';
6
6
  import './Icon.js';
@@ -3,7 +3,7 @@ import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/decorators.js';
5
5
  import 'lit/directives/class-map.js';
6
- import './LeuElement-BFljD2fO.js';
6
+ import './LeuElement-BooZrClI.js';
7
7
  import './Icon.js';
8
8
  import './hasSlotController-Bm2tipvG.js';
9
9
 
@@ -3,7 +3,7 @@ import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/directives/live.js';
5
5
  import 'lit/decorators.js';
6
- import './LeuElement-BFljD2fO.js';
6
+ import './LeuElement-BooZrClI.js';
7
7
  import './Button.js';
8
8
  import 'lit/directives/class-map.js';
9
9
  import 'lit/directives/if-defined.js';
@@ -1,6 +1,6 @@
1
1
  import { LeuPlaceholder } from './Placeholder.js';
2
2
  import 'lit';
3
- import './LeuElement-BFljD2fO.js';
3
+ import './LeuElement-BooZrClI.js';
4
4
 
5
5
  LeuPlaceholder.define("leu-placeholder");
6
6
 
package/dist/leu-popup.js CHANGED
@@ -3,7 +3,7 @@ import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/decorators.js';
5
5
  import '@floating-ui/dom';
6
- import './LeuElement-BFljD2fO.js';
6
+ import './LeuElement-BooZrClI.js';
7
7
 
8
8
  LeuPopup.define("leu-popup");
9
9
 
@@ -3,7 +3,7 @@ import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/directives/if-defined.js';
5
5
  import 'lit/decorators.js';
6
- import './LeuElement-BFljD2fO.js';
6
+ import './LeuElement-BooZrClI.js';
7
7
 
8
8
  LeuProgressBar.define("leu-progress-bar");
9
9
 
@@ -3,7 +3,7 @@ import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/directives/class-map.js';
5
5
  import 'lit/decorators.js';
6
- import './LeuElement-BFljD2fO.js';
6
+ import './LeuElement-BooZrClI.js';
7
7
  import './Radio.js';
8
8
 
9
9
  LeuRadioGroup.define("leu-radio-group");
package/dist/leu-radio.js CHANGED
@@ -2,7 +2,7 @@ import { LeuRadio } from './Radio.js';
2
2
  import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/decorators.js';
5
- import './LeuElement-BFljD2fO.js';
5
+ import './LeuElement-BooZrClI.js';
6
6
 
7
7
  LeuRadio.define("leu-radio");
8
8
 
package/dist/leu-range.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { LeuRange } from './Range.js';
2
2
  import 'lit';
3
- import './LeuElement-BFljD2fO.js';
3
+ import './LeuElement-BooZrClI.js';
4
4
 
5
5
  LeuRange.define("leu-range");
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { LeuScrollTop } from './ScrollTop.js';
2
2
  import 'lit';
3
3
  import 'lit/directives/class-map.js';
4
- import './LeuElement-BFljD2fO.js';
4
+ import './LeuElement-BooZrClI.js';
5
5
  import './Button.js';
6
6
  import './_tslib-CNEFicEt.js';
7
7
  import 'lit/directives/if-defined.js';
@@ -3,7 +3,7 @@ import 'lit';
3
3
  import 'lit/directives/class-map.js';
4
4
  import 'lit/directives/ref.js';
5
5
  import 'lit/directives/if-defined.js';
6
- import './LeuElement-BFljD2fO.js';
6
+ import './LeuElement-BooZrClI.js';
7
7
  import './hasSlotController-Bm2tipvG.js';
8
8
  import './Button.js';
9
9
  import './_tslib-CNEFicEt.js';
@@ -1,6 +1,6 @@
1
1
  import { LeuSpinner } from './Spinner.js';
2
2
  import 'lit';
3
- import './LeuElement-BFljD2fO.js';
3
+ import './LeuElement-BooZrClI.js';
4
4
 
5
5
  LeuSpinner.define("leu-spinner");
6
6
 
package/dist/leu-table.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { LeuTable } from './Table.js';
2
2
  import 'lit';
3
3
  import 'lit/directives/class-map.js';
4
- import 'lit/directives/style-map.js';
5
4
  import 'lit/directives/ref.js';
6
- import './LeuElement-BFljD2fO.js';
5
+ import './LeuElement-BooZrClI.js';
6
+ import 'lit/directive.js';
7
7
  import './Icon.js';
8
8
  import './_tslib-CNEFicEt.js';
9
9
  import 'lit/decorators.js';
package/dist/leu-tag.js CHANGED
@@ -2,7 +2,7 @@ import { LeuTag } from './Tag.js';
2
2
  import './_tslib-CNEFicEt.js';
3
3
  import 'lit';
4
4
  import 'lit/decorators.js';
5
- import './LeuElement-BFljD2fO.js';
5
+ import './LeuElement-BooZrClI.js';
6
6
 
7
7
  LeuTag.define("leu-tag");
8
8
 
@@ -1,6 +1,6 @@
1
1
  import { LeuVisuallyHidden } from './VisuallyHidden.js';
2
2
  import 'lit';
3
- import './LeuElement-BFljD2fO.js';
3
+ import './LeuElement-BooZrClI.js';
4
4
 
5
5
  LeuVisuallyHidden.define("leu-visually-hidden");
6
6
 
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The original lit styleMap directive is not compatible with a strict style-src content security policy.
3
+ * There is an an open issue about this in the lit repository:
4
+ * https://github.com/lit/lit/issues/4719
5
+ *
6
+ * This file contains a custom implementation of the styleMap directive that bypasses
7
+ * the render method and directly updates the styles using the .style.setProperty and
8
+ * .style.removeProperty methods.
9
+ *
10
+ * In the original implementation, the render method returns a string that is set as the
11
+ * value of the style attribute. This approach is blocked by strict CSPs that disallow
12
+ * inline styles.
13
+ *
14
+ * As we don't support SSR in this library, we can safely skip the render method.
15
+ */
16
+ import { AttributePart } from "lit";
17
+ import { Directive, DirectiveParameters, PartInfo } from "lit/directive.js";
18
+ /**
19
+ * A key-value set of CSS properties and values.
20
+ *
21
+ * The key should be either a valid CSS property name string, like
22
+ * `'background-color'`, or a valid JavaScript camel case property name
23
+ * for CSSStyleDeclaration like `backgroundColor`.
24
+ */
25
+ export interface StyleInfo {
26
+ [name: string]: string | number | undefined | null;
27
+ }
28
+ declare class StyleMapDirective extends Directive {
29
+ private _previousStyleProperties?;
30
+ constructor(partInfo: PartInfo);
31
+ render(_styleInfo: Readonly<StyleInfo>): symbol;
32
+ update(part: AttributePart, [styleInfo]: DirectiveParameters<this>): symbol;
33
+ }
34
+ /**
35
+ * !A custom implementation of lit's `styleMap` directive!
36
+ * A directive that applies CSS properties to an element.
37
+ *
38
+ * `styleMap` can only be used in the `style` attribute and must be the only
39
+ * expression in the attribute. It takes the property names in the
40
+ * {@link StyleInfo styleInfo} object and adds the properties to the inline
41
+ * style of the element.
42
+ *
43
+ * Property names with dashes (`-`) are assumed to be valid CSS
44
+ * property names and set on the element's style object using `setProperty()`.
45
+ * Names without dashes are assumed to be camelCased JavaScript property names
46
+ * and set on the element's style object using property assignment, allowing the
47
+ * style object to translate JavaScript-style names to CSS property names.
48
+ *
49
+ * For example `styleMap({backgroundColor: 'red', 'border-top': '5px', '--size':
50
+ * '0'})` sets the `background-color`, `border-top` and `--size` properties.
51
+ *
52
+ * @param styleInfo
53
+ * @see {@link https://lit.dev/docs/templates/directives/#stylemap styleMap code samples on Lit.dev}
54
+ */
55
+ export declare const styleMap: (_styleInfo: Readonly<StyleInfo>) => import("lit-html/directive.js").DirectiveResult<typeof StyleMapDirective>;
56
+ /**
57
+ * The type of the class that powers this directive. Necessary for naming the
58
+ * directive's return type.
59
+ */
60
+ export type { StyleMapDirective };
61
+ //# sourceMappingURL=styleMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleMap.d.ts","sourceRoot":"","sources":["../../src/lib/styleMap.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAqB,MAAM,KAAK,CAAA;AACtD,OAAO,EAEL,SAAS,EACT,mBAAmB,EACnB,QAAQ,EAET,MAAM,kBAAkB,CAAA;AAEzB;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CACnD;AAQD,cAAM,iBAAkB,SAAQ,SAAS;IACvC,OAAO,CAAC,wBAAwB,CAAC,CAAa;gBAElC,QAAQ,EAAE,QAAQ;IAc9B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC;IAI7B,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC;CA4C5E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,QAAQ,gHAA+B,CAAA;AAEpD;;;GAGG;AACH,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
@@ -34,6 +34,17 @@
34
34
  }
35
35
  ]
36
36
  },
37
+ {
38
+ "name": "leu-button-group",
39
+ "description": "A radio input-like button group component.\nIt allows only one button to be active at a time.\n---\n\n\n### **Events:**\n - **input** - When the value of the group changes by clicking a button\n\n### **Slots:**\n - _default_ - Slot for the buttons",
40
+ "attributes": [],
41
+ "references": [
42
+ {
43
+ "name": "Documentation",
44
+ "url": "https://statistikzh.github.io/leu/?path=/story/button-group"
45
+ }
46
+ ]
47
+ },
37
48
  {
38
49
  "name": "leu-button",
39
50
  "description": "\n---\n\n\n### **Slots:**\n - **before** - The icon to display before the label\n- **after** - The icon to display after the label\n- _default_ - The label of the button or the icon if no label is set",
@@ -109,17 +120,6 @@
109
120
  }
110
121
  ]
111
122
  },
112
- {
113
- "name": "leu-button-group",
114
- "description": "A radio input-like button group component.\nIt allows only one button to be active at a time.\n---\n\n\n### **Events:**\n - **input** - When the value of the group changes by clicking a button\n\n### **Slots:**\n - _default_ - Slot for the buttons",
115
- "attributes": [],
116
- "references": [
117
- {
118
- "name": "Documentation",
119
- "url": "https://statistikzh.github.io/leu/?path=/story/button-group"
120
- }
121
- ]
122
- },
123
123
  {
124
124
  "name": "leu-chart-wrapper",
125
125
  "description": "A wrapper element for charts.\n---\n\n\n### **Slots:**\n - **title** - The title of the chart. Use a heading tag (h2-4) depending on your context.\n- **description** - A description of the chart. Content is wrapped in a `<p>` tag by the component.\n- **chart** - The actual chart\n- **caption** - A caption for the chart, e.g. a source or explanation of the data.\n- **download** - A download button or dropdown to export the chart in different formats.",
@@ -288,7 +288,8 @@
288
288
  "description": "\n---\n",
289
289
  "attributes": [
290
290
  { "name": "label", "values": [] },
291
- { "name": "expanded", "values": [] }
291
+ { "name": "expanded", "values": [] },
292
+ { "name": "inverted", "values": [] }
292
293
  ],
293
294
  "references": [
294
295
  {
@@ -1,8 +1,8 @@
1
1
  import type { DefineComponent } from "vue";
2
2
 
3
3
  import type { LeuAccordion } from "../Accordion.js";
4
- import type { LeuButton } from "../Button.js";
5
4
  import type { LeuButtonGroup } from "../ButtonGroup.js";
5
+ import type { LeuButton } from "../Button.js";
6
6
  import type { LeuChartWrapper } from "../ChartWrapper.js";
7
7
  import type { LeuCheckbox } from "../Checkbox.js";
8
8
  import type { LeuCheckboxGroup } from "../CheckboxGroup.js";
@@ -43,6 +43,13 @@ type LeuAccordionProps = {
43
43
  label?: LeuAccordion["label"];
44
44
  };
45
45
 
46
+ type LeuButtonGroupProps = {
47
+ /** The value of the currently selected (active) button */
48
+ value?: LeuButtonGroup["value"];
49
+ /** When the value of the group changes by clicking a button */
50
+ oninput?: (e: CustomEvent<never>) => void;
51
+ };
52
+
46
53
  type LeuButtonProps = {
47
54
  /** `aria-label` of the underlying button elements.
48
55
  Use it to provide a label when only an icon is visible. */
@@ -74,13 +81,6 @@ If it is set, the icon will either show an expanded or collapsed state. */
74
81
  fluid?: LeuButton["fluid"];
75
82
  };
76
83
 
77
- type LeuButtonGroupProps = {
78
- /** The value of the currently selected (active) button */
79
- value?: LeuButtonGroup["value"];
80
- /** When the value of the group changes by clicking a button */
81
- oninput?: (e: CustomEvent<never>) => void;
82
- };
83
-
84
84
  type LeuChartWrapperProps = {
85
85
  /** Whether the chart is currently loading or not.
86
86
  When set to `true`, a spinner will be shown in the chart container. */
@@ -175,6 +175,8 @@ type LeuDropdownProps = {
175
175
  /** */
176
176
  expanded?: LeuDropdown["expanded"];
177
177
  /** */
178
+ inverted?: LeuDropdown["inverted"];
179
+ /** */
178
180
  hasSlotController?: LeuDropdown["hasSlotController"];
179
181
  /** */
180
182
  _documentClickHandler?: LeuDropdown["_documentClickHandler"];
@@ -500,18 +502,6 @@ export type CustomElements = {
500
502
  */
501
503
  "leu-accordion": DefineComponent<LeuAccordionProps>;
502
504
 
503
- /**
504
- *
505
- * ---
506
- *
507
- *
508
- * ### **Slots:**
509
- * - **before** - The icon to display before the label
510
- * - **after** - The icon to display after the label
511
- * - _default_ - The label of the button or the icon if no label is set
512
- */
513
- "leu-button": DefineComponent<LeuButtonProps>;
514
-
515
505
  /**
516
506
  * A radio input-like button group component.
517
507
  * It allows only one button to be active at a time.
@@ -526,6 +516,18 @@ export type CustomElements = {
526
516
  */
527
517
  "leu-button-group": DefineComponent<LeuButtonGroupProps>;
528
518
 
519
+ /**
520
+ *
521
+ * ---
522
+ *
523
+ *
524
+ * ### **Slots:**
525
+ * - **before** - The icon to display before the label
526
+ * - **after** - The icon to display after the label
527
+ * - _default_ - The label of the button or the icon if no label is set
528
+ */
529
+ "leu-button": DefineComponent<LeuButtonProps>;
530
+
529
531
  /**
530
532
  * A wrapper element for charts.
531
533
  * ---
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@statistikzh/leu",
4
- "version": "0.21.0",
4
+ "version": "0.22.0",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -65,6 +65,33 @@
65
65
  "events": []
66
66
  }
67
67
  },
68
+ {
69
+ "name": "leu-button-group",
70
+ "description": "A radio input-like button group component.\nIt allows only one button to be active at a time.\n---\n\n\n### **Events:**\n - **input** - When the value of the group changes by clicking a button\n\n### **Slots:**\n - _default_ - Slot for the buttons",
71
+ "doc-url": "",
72
+ "attributes": [],
73
+ "slots": [{ "name": "", "description": "Slot for the buttons" }],
74
+ "events": [
75
+ {
76
+ "name": "input",
77
+ "description": "When the value of the group changes by clicking a button"
78
+ }
79
+ ],
80
+ "js": {
81
+ "properties": [
82
+ {
83
+ "name": "value",
84
+ "description": "The value of the currently selected (active) button"
85
+ }
86
+ ],
87
+ "events": [
88
+ {
89
+ "name": "input",
90
+ "description": "When the value of the group changes by clicking a button"
91
+ }
92
+ ]
93
+ }
94
+ },
68
95
  {
69
96
  "name": "leu-button",
70
97
  "description": "\n---\n\n\n### **Slots:**\n - **before** - The icon to display before the label\n- **after** - The icon to display after the label\n- _default_ - The label of the button or the icon if no label is set",
@@ -211,33 +238,6 @@
211
238
  "events": []
212
239
  }
213
240
  },
214
- {
215
- "name": "leu-button-group",
216
- "description": "A radio input-like button group component.\nIt allows only one button to be active at a time.\n---\n\n\n### **Events:**\n - **input** - When the value of the group changes by clicking a button\n\n### **Slots:**\n - _default_ - Slot for the buttons",
217
- "doc-url": "",
218
- "attributes": [],
219
- "slots": [{ "name": "", "description": "Slot for the buttons" }],
220
- "events": [
221
- {
222
- "name": "input",
223
- "description": "When the value of the group changes by clicking a button"
224
- }
225
- ],
226
- "js": {
227
- "properties": [
228
- {
229
- "name": "value",
230
- "description": "The value of the currently selected (active) button"
231
- }
232
- ],
233
- "events": [
234
- {
235
- "name": "input",
236
- "description": "When the value of the group changes by clicking a button"
237
- }
238
- ]
239
- }
240
- },
241
241
  {
242
242
  "name": "leu-chart-wrapper",
243
243
  "description": "A wrapper element for charts.\n---\n\n\n### **Slots:**\n - **title** - The title of the chart. Use a heading tag (h2-4) depending on your context.\n- **description** - A description of the chart. Content is wrapped in a `<p>` tag by the component.\n- **chart** - The actual chart\n- **caption** - A caption for the chart, e.g. a source or explanation of the data.\n- **download** - A download button or dropdown to export the chart in different formats.",
@@ -576,6 +576,10 @@
576
576
  {
577
577
  "name": "expanded",
578
578
  "value": { "type": "boolean", "default": "false" }
579
+ },
580
+ {
581
+ "name": "inverted",
582
+ "value": { "type": "boolean", "default": "false" }
579
583
  }
580
584
  ],
581
585
  "events": [],
@@ -590,6 +594,7 @@
590
594
  },
591
595
  { "name": "label", "type": "string" },
592
596
  { "name": "expanded", "type": "boolean" },
597
+ { "name": "inverted", "type": "boolean" },
593
598
  { "name": "_toggleRef", "type": "Ref<HTMLButtonElement>" }
594
599
  ],
595
600
  "events": []
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "UI component library of the canton of zurich",
4
4
  "license": "MIT",
5
5
  "author": "statistikzh",
6
- "version": "0.21.0",
6
+ "version": "0.22.0",
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
9
9
  "module": "dist/index.js",
@@ -27,6 +27,7 @@ export class LeuDropdown extends LeuElement {
27
27
  static properties = {
28
28
  label: { type: String, reflect: true },
29
29
  expanded: { type: Boolean, reflect: true },
30
+ inverted: { type: Boolean, reflect: true },
30
31
  }
31
32
 
32
33
  hasSlotController = new HasSlotController(this, ["icon"])
@@ -36,6 +37,7 @@ export class LeuDropdown extends LeuElement {
36
37
 
37
38
  this.label = ""
38
39
  this.expanded = false
40
+ this.inverted = false
39
41
 
40
42
  /** @type {import("lit/directives/ref").Ref<HTMLButtonElement>} */
41
43
  this._toggleRef = createRef()
@@ -141,6 +143,7 @@ export class LeuDropdown extends LeuElement {
141
143
  variant="ghost"
142
144
  expanded=${this.expanded ? "true" : "false"}
143
145
  ?active=${this.expanded}
146
+ ?inverted=${this.inverted}
144
147
  @click=${this._handleToggleClick}
145
148
  @keydown=${this._keyDownToggleHandler}
146
149
  >
@@ -24,8 +24,12 @@ export default {
24
24
  },
25
25
  }
26
26
 
27
- function Template({ label, expanded, icon }) {
28
- return html` <leu-dropdown label=${label} ?expanded=${expanded}>
27
+ function Template({ label, expanded, icon, inverted }) {
28
+ return html` <leu-dropdown
29
+ label=${label}
30
+ ?expanded=${expanded}
31
+ ?inverted=${inverted}
32
+ >
29
33
  ${icon ? html`<leu-icon name=${icon} slot="icon"></leu-icon>` : nothing}
30
34
  <leu-menu>
31
35
  <leu-menu-item
@@ -3,9 +3,13 @@ import { fixture, expect, elementUpdated } from "@open-wc/testing"
3
3
 
4
4
  import "../leu-dropdown.js"
5
5
 
6
- async function defaultFixture(args = { expanded: false }) {
6
+ async function defaultFixture(args = { expanded: false, inverted: false }) {
7
7
  return fixture(
8
- html` <leu-dropdown label="Download" ?expanded=${args.expanded}>
8
+ html` <leu-dropdown
9
+ label="Download"
10
+ ?expanded=${args.expanded}
11
+ ?inverted=${args.inverted}
12
+ >
9
13
  <leu-menu>
10
14
  <leu-menu-item>Als CSV Tabelle</leu-menu-item>
11
15
  <leu-menu-item>Als XLS Tabelle</leu-menu-item>
@@ -44,4 +48,12 @@ describe("LeuDropdown", () => {
44
48
 
45
49
  expect(el.expanded).to.be.false
46
50
  })
51
+
52
+ it("reflects the inverted property to the internal button", async () => {
53
+ const el = await defaultFixture({ inverted: true })
54
+ await elementUpdated(el)
55
+
56
+ const toggleButton = el.shadowRoot.querySelector("leu-button")
57
+ expect(toggleButton.inverted).to.be.true
58
+ })
47
59
  })
@@ -1,9 +1,9 @@
1
1
  import { html, nothing } from "lit"
2
2
  import { classMap } from "lit/directives/class-map.js"
3
- import { styleMap } from "lit/directives/style-map.js"
4
3
  import { createRef, ref } from "lit/directives/ref.js"
5
4
 
6
5
  import { LeuElement } from "../../lib/LeuElement.js"
6
+ import { styleMap } from "../../lib/styleMap.js"
7
7
  import { LeuIcon } from "../icon/Icon.js"
8
8
  import { LeuPagination } from "../pagination/Pagination.js"
9
9