@proximus/lavender-tag 2.0.0-alpha.152 → 2.0.0-alpha.154

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/Tag.d.ts CHANGED
@@ -2,6 +2,7 @@ import { PxElement } from '@proximus/lavender-common';
2
2
  import { type ButtonIcon } from '@proximus/lavender-button-icon';
3
3
  import '@proximus/lavender-button-icon';
4
4
  export declare const tagSizeValues: string[];
5
+ export declare const tagStateValues: string[];
5
6
  export declare class Tag extends PxElement<HTMLDivElement> {
6
7
  static nativeName: string;
7
8
  private template;
@@ -9,12 +10,26 @@ export declare class Tag extends PxElement<HTMLDivElement> {
9
10
  connectedCallback(): void;
10
11
  static get observedAttributes(): string[];
11
12
  attributeChangedCallback(attrName: string, oldValue: string, newValue: string): void;
12
- get $iconSlot(): HTMLSlotElement;
13
- get $btnIcon(): ButtonIcon;
13
+ updateStateStyles(oldValue: string, newValue: string, attributeValues: string[]): void;
14
+ getStateIcon(state: string): "" | "checkmark_fill" | "minus_fill" | "exclamation_mark_fill";
15
+ updateStateIconLabel(newValue: string): void;
16
+ updateStateIconFrom(newValue: string): void;
17
+ styleBeforeIcon(): void;
18
+ styleAfterBtnIcon(): void;
19
+ get $slottedBeforeIcon(): HTMLSlotElement;
20
+ get $slotBefore(): HTMLSlotElement;
21
+ get $slottedAfterBtnIcon(): ButtonIcon;
22
+ get $slotAfter(): HTMLSlotElement;
14
23
  get size(): string;
15
24
  set size(value: string);
25
+ get state(): string;
26
+ set state(value: string);
16
27
  get dismissible(): boolean;
17
28
  set dismissible(value: boolean);
18
29
  get inverted(): boolean;
19
30
  set inverted(value: boolean);
31
+ get stateIconAriaLabel(): string;
32
+ set stateIconAriaLabel(value: string);
33
+ get stateIconFrom(): string;
34
+ set stateIconFrom(value: string);
20
35
  }
package/dist/index.es.js CHANGED
@@ -1,8 +1,8 @@
1
- import { PxElement as d } from "@proximus/lavender-common";
1
+ import { PxElement as n } from "@proximus/lavender-common";
2
2
  import "@proximus/lavender-button-icon";
3
- const n = ':host:has(.tag){display:inline-block}.tag{display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;font-family:var(--px-font-family);font-size:var(--px-text-size-label-m-mobile);line-height:var(--px-line-height-ratio-l);font-weight:var(--px-font-weight-body);gap:var(--px-spacing-xs-mobile);background-color:var(--px-color-background-container-default-default);color:var(--px-color-text-neutral-default);padding:var(--px-padding-2xs-mobile) var(--px-padding-xs-mobile);border:var(--px-size-border-s) solid transparent;border-radius:var(--px-radius-main)}.tag,.tag *{box-sizing:border-box}:host([disabled]) .tag{background-color:var(--px-color-background-state-disabled-default);color:var(--px-color-text-state-disabled-default)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-mobile) var(--px-padding-xs-mobile)}:host([size="m"]) .tag{padding:var(--px-padding-xs-mobile) var(--px-padding-s-mobile)}:host([inverted]) .tag{background-color:var(--px-color-background-container-default-inverted);color:var(--px-color-text-neutral-inverted)}:host([inverted]):host([disabled]) .tag{background-color:var(--px-color-background-state-disabled-inverted);color:var(--px-color-text-state-disabled-inverted)}@media screen and (min-width: 48rem){.tag{font-size:var(--px-text-size-label-m-tablet);gap:var(--px-spacing-xs-tablet);padding:var(--px-padding-2xs-tablet) var(--px-padding-xs-tablet)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-tablet) var(--px-padding-xs-tablet)}:host([size="m"]) .tag{padding:var(--px-padding-xs-tablet) var(--px-padding-s-tablet)}}@media screen and (min-width: 64.0625rem){.tag{font-size:var(--px-text-size-label-m-laptop);gap:var(--px-spacing-xs-laptop);padding:var(--px-padding-2xs-laptop) var(--px-padding-xs-laptop)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-laptop) var(--px-padding-xs-laptop)}:host([size="m"]) .tag{padding:var(--px-padding-xs-laptop) var(--px-padding-s-laptop)}}@media screen and (min-width: 90.0625rem){.tag{font-size:var(--px-text-size-label-m-desktop);gap:var(--px-spacing-xs-desktop);padding:var(--px-padding-2xs-desktop) var(--px-padding-xs-desktop)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-desktop) var(--px-padding-xs-desktop)}:host([size="m"]) .tag{padding:var(--px-padding-xs-desktop) var(--px-padding-s-desktop)}}', e = new CSSStyleSheet();
4
- e.replaceSync(n);
5
- const l = ["", "s", "m"], a = class a extends d {
3
+ const l = ':host:has(.tag){display:inline-block}.tag{display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;font-family:var(--px-font-family);font-size:var(--px-text-size-label-m-mobile);line-height:var(--px-line-height-ratio-l);font-weight:var(--px-font-weight-body);gap:var(--px-spacing-2xs-mobile);background-color:var(--px-color-background-container-default-default);color:var(--px-color-text-neutral-default);padding:var(--px-padding-2xs-mobile) var(--px-padding-xs-mobile);border:var(--px-size-border-s) solid transparent;border-radius:var(--px-radius-main)}.tag,.tag *{box-sizing:border-box}:host([disabled]:not([dismissible])) .tag{background-color:var(--px-color-background-state-disabled-default);color:var(--px-color-text-state-disabled-default)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-mobile) var(--px-padding-xs-mobile);gap:var(--px-spacing-2xs-mobile)}:host([size="m"]) .tag{padding:var(--px-padding-xs-mobile) var(--px-padding-s-mobile);gap:var(--px-spacing-xs-mobile)}:host([state="success"]) .tag{background-color:var(--px-color-background-purpose-success-default);color:var(--px-color-text-neutral-inverted)}:host([state="warning"]) .tag{background-color:var(--px-color-background-purpose-warning-default);color:var(--px-color-text-neutral-inverted)}:host([state="error"]) .tag{background-color:var(--px-color-background-purpose-error-default);color:var(--px-color-text-neutral-inverted)}:host([inverted]) .tag{background-color:var(--px-color-background-container-default-inverted);color:var(--px-color-text-neutral-inverted)}:host([inverted]):host([disabled]:not([dismissible])) .tag{background-color:var(--px-color-background-state-disabled-inverted);color:var(--px-color-text-state-disabled-inverted)}:host([inverted]):host([state="success"]) .tag{background-color:var(--px-color-background-purpose-success-inverted);color:var(--px-color-text-neutral-default)}:host([inverted]):host([state="warning"]) .tag{background-color:var(--px-color-background-purpose-warning-inverted);color:var(--px-color-text-neutral-default)}:host([inverted]):host([state="error"]) .tag{background-color:var(--px-color-background-purpose-error-inverted);color:var(--px-color-text-neutral-default)}@media screen and (min-width: 48rem){.tag{font-size:var(--px-text-size-label-m-tablet);gap:var(--px-spacing-2xs-tablet);padding:var(--px-padding-2xs-tablet) var(--px-padding-xs-tablet)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-tablet) var(--px-padding-xs-tablet);gap:var(--px-spacing-2xs-tablet)}:host([size="m"]) .tag{padding:var(--px-padding-xs-tablet) var(--px-padding-s-tablet);gap:var(--px-spacing-xs-tablet)}}@media screen and (min-width: 64.0625rem){.tag{font-size:var(--px-text-size-label-m-laptop);gap:var(--px-spacing-2xs-laptop);padding:var(--px-padding-2xs-laptop) var(--px-padding-xs-laptop)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-laptop) var(--px-padding-xs-laptop);gap:var(--px-spacing-2xs-laptop)}:host([size="m"]) .tag{padding:var(--px-padding-xs-laptop) var(--px-padding-s-laptop);gap:var(--px-spacing-xs-laptop)}}@media screen and (min-width: 90.0625rem){.tag{font-size:var(--px-text-size-label-m-desktop);gap:var(--px-spacing-2xs-desktop);padding:var(--px-padding-2xs-desktop) var(--px-padding-xs-desktop)}:host([size="s"]) .tag{padding:var(--px-padding-2xs-desktop) var(--px-padding-xs-desktop);gap:var(--px-spacing-2xs-desktop)}:host([size="m"]) .tag{padding:var(--px-padding-xs-desktop) var(--px-padding-s-desktop);gap:var(--px-spacing-xs-desktop)}}', r = new CSSStyleSheet();
4
+ r.replaceSync(l);
5
+ const g = ["", "s", "m"], d = ["", "success", "error", "warning"], o = class o extends n {
6
6
  template() {
7
7
  return `
8
8
  <div class="tag">
@@ -13,30 +13,101 @@ const l = ["", "s", "m"], a = class a extends d {
13
13
  `;
14
14
  }
15
15
  constructor() {
16
- super(e), this.shadowRoot.innerHTML = this.template(), this.shadowRoot.adoptedStyleSheets = [e];
16
+ super(r), this.shadowRoot.innerHTML = this.template(), this.shadowRoot.adoptedStyleSheets = [r];
17
17
  }
18
18
  connectedCallback() {
19
- this.$iconSlot && (this.$iconSlot.setAttribute("size", "xs"), this.$iconSlot.setAttribute("color", "inherit")), this.$btnIcon && (this.$btnIcon.getAttribute("variant") !== "secondary" && this.$btnIcon.setAttribute("variant", "secondary"), this.$btnIcon.getAttribute("size") !== "small" && this.$btnIcon.setAttribute("size", "small"));
19
+ var t, e;
20
+ this.styleBeforeIcon = this.styleBeforeIcon.bind(this), this.styleBeforeIcon(), (t = this.$slotBefore) == null || t.addEventListener("slotchange", this.styleBeforeIcon), this.styleAfterBtnIcon = this.styleAfterBtnIcon.bind(this), this.styleAfterBtnIcon(), (e = this.$slotAfter) == null || e.addEventListener("slotchange", this.styleAfterBtnIcon);
20
21
  }
21
22
  static get observedAttributes() {
22
- return ["dismissible", "inverted", "disabled", "size"];
23
+ return [
24
+ "dismissible",
25
+ "inverted",
26
+ "disabled",
27
+ "size",
28
+ "state",
29
+ "state-icon-aria-label",
30
+ "state-icon-from"
31
+ ];
23
32
  }
24
- attributeChangedCallback(t, s, r) {
25
- if (s !== r)
33
+ attributeChangedCallback(t, e, a) {
34
+ if (e !== a)
26
35
  switch (t) {
27
36
  case "inverted":
28
- this.hasAttribute("dismissible") && this.$btnIcon.toggleAttribute("inverted");
37
+ this.hasAttribute("dismissible") && this.$slottedAfterBtnIcon.toggleAttribute("inverted");
38
+ break;
39
+ case "state":
40
+ this.hasAttribute("dismissible") || this.updateStateStyles(e, a, d);
41
+ break;
42
+ case "state-icon-aria-label":
43
+ this.hasAttribute("dismissible") || this.updateStateIconLabel(a);
44
+ break;
45
+ case "state-icon-from":
46
+ this.hasAttribute("dismissible") || this.updateStateIconFrom(a);
29
47
  break;
30
48
  default:
31
- super.attributeChangedCallback(t, s, r);
49
+ super.attributeChangedCallback(t, e, a);
32
50
  break;
33
51
  }
34
52
  }
35
- get $iconSlot() {
53
+ updateStateStyles(t, e, a) {
54
+ if (!a.includes(t) && a.includes(e)) {
55
+ const s = document.createElement("px-icon");
56
+ s.setAttribute("size", "xs"), s.setAttribute("color", "inherit"), s.setAttribute(
57
+ "from",
58
+ this.stateIconFrom ? this.stateIconFrom : "lavender"
59
+ ), s.setAttribute("name", this.getStateIcon(e)), this.stateIconAriaLabel && (s.setAttribute("aria-label", this.stateIconAriaLabel), s.setAttribute("title", this.stateIconAriaLabel)), this.$el.insertAdjacentElement("afterbegin", s);
60
+ } else if (a.includes(t) && !a.includes(e)) {
61
+ const s = this.$el.querySelector("px-icon");
62
+ s && this.$el.removeChild(s);
63
+ } else if (a.includes(t) && a.includes(e)) {
64
+ const s = this.$el.querySelector("px-icon");
65
+ s && s.setAttribute("name", this.getStateIcon(e));
66
+ }
67
+ }
68
+ getStateIcon(t) {
69
+ switch (t) {
70
+ case "success":
71
+ return "checkmark_fill";
72
+ case "error":
73
+ return "minus_fill";
74
+ case "warning":
75
+ return "exclamation_mark_fill";
76
+ default:
77
+ return "";
78
+ }
79
+ }
80
+ updateStateIconLabel(t) {
81
+ const e = this.$el.querySelector("px-icon");
82
+ e && (t ? (e.setAttribute("aria-label", t), e.setAttribute("title", t)) : (e.removeAttribute("aria-label"), e.removeAttribute("title")));
83
+ }
84
+ updateStateIconFrom(t) {
85
+ const e = this.$el.querySelector("px-icon");
86
+ e && (t ? e.setAttribute("from", t) : e.setAttribute("from", "lavender"));
87
+ }
88
+ styleBeforeIcon() {
89
+ this.$slottedBeforeIcon && (this.$slottedBeforeIcon.setAttribute("size", "xs"), this.$slottedBeforeIcon.setAttribute("color", "inherit"));
90
+ }
91
+ styleAfterBtnIcon() {
92
+ this.$slottedAfterBtnIcon && (this.$slottedAfterBtnIcon.setAttribute("variant", "secondary"), this.$slottedAfterBtnIcon.setAttribute("size", "small"));
93
+ }
94
+ get $slottedBeforeIcon() {
36
95
  return this.querySelector('px-icon[slot="before"]');
37
96
  }
38
- get $btnIcon() {
39
- return this.querySelector("px-button-icon");
97
+ get $slotBefore() {
98
+ var t;
99
+ return (t = this.shadowRoot) == null ? void 0 : t.querySelector(
100
+ 'slot[name="before"]'
101
+ );
102
+ }
103
+ get $slottedAfterBtnIcon() {
104
+ return this.querySelector('px-button-icon[slot="after"]');
105
+ }
106
+ get $slotAfter() {
107
+ var t;
108
+ return (t = this.shadowRoot) == null ? void 0 : t.querySelector(
109
+ 'slot[name="after"]'
110
+ );
40
111
  }
41
112
  get size() {
42
113
  return this.getAttribute("size") || "";
@@ -44,6 +115,12 @@ const l = ["", "s", "m"], a = class a extends d {
44
115
  set size(t) {
45
116
  this.setAttribute("size", t);
46
117
  }
118
+ get state() {
119
+ return this.getAttribute("state") || "";
120
+ }
121
+ set state(t) {
122
+ this.setAttribute("state", t);
123
+ }
47
124
  get dismissible() {
48
125
  return this.hasAttribute("dismissible");
49
126
  }
@@ -56,11 +133,24 @@ const l = ["", "s", "m"], a = class a extends d {
56
133
  set inverted(t) {
57
134
  t ? this.setAttribute("inverted", "") : this.removeAttribute("inverted");
58
135
  }
136
+ get stateIconAriaLabel() {
137
+ return this.getAttribute("state-icon-aria-label") || "";
138
+ }
139
+ set stateIconAriaLabel(t) {
140
+ this.setAttribute("state-icon-aria-label", t);
141
+ }
142
+ get stateIconFrom() {
143
+ return this.getAttribute("state-icon-from") || "";
144
+ }
145
+ set stateIconFrom(t) {
146
+ this.setAttribute("state-icon-from", t);
147
+ }
59
148
  };
60
- a.nativeName = "div";
61
- let i = a;
149
+ o.nativeName = "div";
150
+ let i = o;
62
151
  customElements.get("px-tag") || customElements.define("px-tag", i);
63
152
  export {
64
153
  i as Tag,
65
- l as tagSizeValues
154
+ g as tagSizeValues,
155
+ d as tagStateValues
66
156
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proximus/lavender-tag",
3
- "version": "2.0.0-alpha.152",
3
+ "version": "2.0.0-alpha.154",
4
4
  "description": "",
5
5
  "main": "dist/index.es.js",
6
6
  "types": "dist/index.d.ts",