@supersoniks/concorde 1.1.11 → 1.1.12

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.
@@ -73,17 +73,16 @@ Alert.styles = [
73
73
  font-weight: var(--sc-alert-title-fw);
74
74
  }
75
75
 
76
- :host([status="warning"]) .alert {
76
+ :host([status="warning"]) {
77
77
  --sc-alert-color: var(--sc-warning);
78
78
  }
79
-
80
- :host([status="error"]) .alert {
79
+ :host([status="error"]) {
81
80
  --sc-alert-color: var(--sc-danger);
82
81
  }
83
- :host([status="info"]) .alert {
82
+ :host([status="info"]) {
84
83
  --sc-alert-color: var(--sc-info);
85
84
  }
86
- :host([status="success"]) .alert {
85
+ :host([status="success"]) {
87
86
  --sc-alert-color: var(--sc-success);
88
87
  }
89
88
 
@@ -121,12 +121,13 @@ export declare class Button extends Button_base {
121
121
  private _href;
122
122
  set href(value: string);
123
123
  get href(): string;
124
+ goBack: string | null;
124
125
  /**
125
126
  * Si présent on passe en mode pushstate
126
127
  */
127
128
  pushState: null;
128
129
  active: boolean;
129
- handlePushState(e: Event): void;
130
+ handleNavigation(e: Event): void;
130
131
  handleChange(e?: any): void;
131
132
  connectedCallback(): void;
132
133
  setCheckedValue(checked: true | null): void;
@@ -81,6 +81,7 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
81
81
  * L'url
82
82
  */
83
83
  this._href = "";
84
+ this.goBack = null;
84
85
  /**
85
86
  * Si présent on passe en mode pushstate
86
87
  */
@@ -101,13 +102,13 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
101
102
  get href() {
102
103
  return this._href;
103
104
  }
104
- handlePushState(e) {
105
+ handleNavigation(e) {
105
106
  e.preventDefault();
106
107
  LocationHandler.changeFromComponent(this);
107
108
  }
108
109
  handleChange(e) {
109
110
  super.handleChange(e);
110
- if (this.pushState) {
111
+ if (this.pushState || this.goBack !== null) {
111
112
  e.preventDefault();
112
113
  e.stopPropagation();
113
114
  LocationHandler.changeFromComponent(this);
@@ -155,7 +156,7 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
155
156
  </button>
156
157
  `;
157
158
  return this.href
158
- ? html `<a href="${this.href}" target=${ifDefined(this.target)} @click=${this.pushState ? this.handlePushState : null}>${btn}</a>`
159
+ ? html `<a href="${this.href}" target=${ifDefined(this.target)} @click=${this.pushState || this.goBack !== null ? this.handleNavigation : null}>${btn}</a>`
159
160
  : html `${btn}`;
160
161
  }
161
162
  onSlotChange() {
@@ -221,7 +222,7 @@ Button.styles = [
221
222
 
222
223
  cursor: pointer;
223
224
  text-align: center;
224
- line-height: 1.2;
225
+ line-height: 1.1;
225
226
  border-radius: var(--sc-item-rounded-tl) var(--sc-item-rounded-tr) var(--sc-item-rounded-br)
226
227
  var(--sc-item-rounded-bl);
227
228
 
@@ -399,6 +400,7 @@ Button.styles = [
399
400
  padding: 0;
400
401
  align-items: center;
401
402
  justify-content: 0;
403
+ text-align:center !important;
402
404
  }
403
405
 
404
406
  :host([shape="block"]),
@@ -549,6 +551,9 @@ __decorate([
549
551
  __decorate([
550
552
  property({ type: String })
551
553
  ], Button.prototype, "href", null);
554
+ __decorate([
555
+ property({ type: String })
556
+ ], Button.prototype, "goBack", void 0);
552
557
  __decorate([
553
558
  property({ type: Boolean })
554
559
  ], Button.prototype, "pushState", void 0);
@@ -1,17 +1,29 @@
1
- import { LitElement, nothing } from "lit";
1
+ import { LitElement } from "lit";
2
2
  /**
3
3
  * Afficher l'icone choisie parmis une liste prédéfinie dans icons.json
4
4
  * les tailles suivantes sont disponible via l'attribut *size* : 2xs,xs,sm,"",lg,xl,2xl
5
5
  */
6
6
  export declare class Icon extends LitElement {
7
7
  static styles: import("lit").CSSResult;
8
+ updateIcon(): Promise<void>;
9
+ iconText: any;
8
10
  /**
9
11
  * Nom identifiant l'icone ex : *info*
10
12
  */
11
- name: string;
13
+ private _name;
14
+ get name(): string;
15
+ set name(newName: string);
12
16
  /**
13
17
  * prefix de l'icone si nécessaire ex: *solid*. La valeur par défaut est "" qui est mappée sur *regular*
14
18
  */
15
- prefix: string;
16
- render(): import("lit-html").TemplateResult<1> | typeof nothing;
19
+ private _prefix;
20
+ get prefix(): string;
21
+ set prefix(newPrefix: string);
22
+ /**
23
+ * library de l'icone url vers un dossier en lign conenant des icônes
24
+ */
25
+ private _library;
26
+ get library(): string;
27
+ set library(newLibrary: string);
28
+ render(): any;
17
29
  }
@@ -4,7 +4,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { html, LitElement, css, nothing } from "lit";
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ import { LitElement, css, nothing } from "lit";
8
17
  import { customElement, property } from "lit/decorators.js";
9
18
  import Icons from "./icons";
10
19
  /**
@@ -14,14 +23,48 @@ import Icons from "./icons";
14
23
  let Icon = class Icon extends LitElement {
15
24
  constructor() {
16
25
  super(...arguments);
26
+ this.iconText = "";
17
27
  /**
18
28
  * Nom identifiant l'icone ex : *info*
19
29
  */
20
- this.name = "";
30
+ this._name = "";
21
31
  /**
22
32
  * prefix de l'icone si nécessaire ex: *solid*. La valeur par défaut est "" qui est mappée sur *regular*
23
33
  */
24
- this.prefix = "";
34
+ this._prefix = "";
35
+ /**
36
+ * library de l'icone url vers un dossier en lign conenant des icônes
37
+ */
38
+ this._library = "";
39
+ }
40
+ updateIcon() {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ if (!this.name)
43
+ return;
44
+ this.iconText = yield Icons.default.get({ name: this.name, prefix: this.prefix, library: this.library });
45
+ this.requestUpdate();
46
+ });
47
+ }
48
+ get name() {
49
+ return this._name;
50
+ }
51
+ set name(newName) {
52
+ this._name = newName;
53
+ this.updateIcon();
54
+ }
55
+ get prefix() {
56
+ return this._prefix;
57
+ }
58
+ set prefix(newPrefix) {
59
+ this._prefix = newPrefix;
60
+ this.updateIcon();
61
+ }
62
+ get library() {
63
+ return this._library;
64
+ }
65
+ set library(newLibrary) {
66
+ this._library = newLibrary;
67
+ this.updateIcon();
25
68
  }
26
69
  render() {
27
70
  if (!this.name) {
@@ -29,7 +72,7 @@ let Icon = class Icon extends LitElement {
29
72
  return nothing;
30
73
  }
31
74
  this.style.removeProperty("display");
32
- return html `${Icons.default.get({ name: this.name, prefix: this.prefix })}`;
75
+ return this.iconText;
33
76
  }
34
77
  };
35
78
  Icon.styles = css `
@@ -78,10 +121,13 @@ Icon.styles = css `
78
121
  `;
79
122
  __decorate([
80
123
  property({ type: String })
81
- ], Icon.prototype, "name", void 0);
124
+ ], Icon.prototype, "name", null);
125
+ __decorate([
126
+ property({ type: String })
127
+ ], Icon.prototype, "prefix", null);
82
128
  __decorate([
83
129
  property({ type: String })
84
- ], Icon.prototype, "prefix", void 0);
130
+ ], Icon.prototype, "library", null);
85
131
  Icon = __decorate([
86
132
  customElement("sonic-icon")
87
133
  ], Icon);
@@ -1,13 +1,14 @@
1
1
  export declare type IconConf = {
2
2
  name: string;
3
3
  prefix?: string;
4
+ library?: string;
4
5
  };
5
6
  export default class Icons {
6
7
  static fontAwesomeNext: {
7
- get: (params: IconConf) => import("lit-html/directive").DirectiveResult<typeof import("lit-html/directives/unsafe-html").UnsafeHTMLDirective>;
8
+ get: (params: IconConf) => Promise<import("lit-html/directive").DirectiveResult<typeof import("lit-html/directives/unsafe-html").UnsafeHTMLDirective>>;
8
9
  };
9
10
  static registerIcons(newIcons: Record<string, Record<string, string>>): void;
10
11
  static default: {
11
- get: (params: IconConf) => import("lit-html/directive").DirectiveResult<typeof import("lit-html/directives/unsafe-html").UnsafeHTMLDirective>;
12
+ get: (params: IconConf) => Promise<import("lit-html/directive").DirectiveResult<typeof import("lit-html/directives/unsafe-html").UnsafeHTMLDirective>>;
12
13
  };
13
14
  }
@@ -1,6 +1,32 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var _a;
1
11
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
2
12
  import icons from "./icons.json";
3
- ;
13
+ /**
14
+ * Ce tableau static permet de ne pas appeler plusieurs fois le même service lors d'appel concurrents en GET.
15
+ */
16
+ const loadingGetPromises = new Map();
17
+ /**
18
+ * Les librairies en ligne.
19
+ * Pour chaque identifiant de librairie a une template d'url de chargement
20
+ * Les propriétés name et prefix de sonic-icon servent à remplir le template.
21
+ * la propriété library de sonic-icon correspond à une clef de librairies.
22
+ */
23
+ const libraries = {
24
+ heroicons: "https://cdn.jsdelivr.net/npm/heroicons@2.0.4/24/$prefix/$name.svg",
25
+ iconoir: "https://cdnjs.cloudflare.com/ajax/libs/iconoir/5.1.4/icons/$name.svg",
26
+ feathers: "https://cdn.jsdelivr.net/npm/feather-icons@4.29.0/dist/icons/$name.svg",
27
+ material: "https://cdn.jsdelivr.net/npm/@material-icons/svg@1.0.5/svg/$name/$prefix.svg",
28
+ fontAwesome: "https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/svgs/$prefix/$name.svg",
29
+ };
4
30
  export default class Icons {
5
31
  static registerIcons(newIcons) {
6
32
  const record = icons;
@@ -14,12 +40,57 @@ export default class Icons {
14
40
  }
15
41
  }
16
42
  }
43
+ _a = Icons;
17
44
  Icons.fontAwesomeNext = {
18
- get: (params) => {
19
- var _a;
20
- let prefix = ((_a = params.prefix) === null || _a === void 0 ? void 0 : _a.replace("far", "regular").replace("fas", "solid")) || "regular";
21
- let record = icons;
22
- return unsafeHTML(record[prefix][params.name] || "");
23
- },
45
+ get: (params) => __awaiter(void 0, void 0, void 0, function* () {
46
+ var _b;
47
+ let prefix = ((_b = params.prefix) === null || _b === void 0 ? void 0 : _b.replace("far", "regular").replace("fas", "solid")) || "regular";
48
+ let library = params.library;
49
+ let name = params.name || "";
50
+ const iconsAsRecord = icons;
51
+ /**
52
+ * SVGS en ligne
53
+ */
54
+ if (library && libraries[library]) {
55
+ let libIcons = iconsAsRecord[library];
56
+ if (!libIcons)
57
+ libIcons = iconsAsRecord[library] = {};
58
+ /**
59
+ * Si l'icone a déjà été chargée on ne la recharge pas
60
+ */
61
+ if (libIcons[name])
62
+ return unsafeHTML(libIcons[name]);
63
+ let url = libraries[library].replace("$prefix", params.prefix).replace("$name", name);
64
+ /**
65
+ * on utilise une promise mutualisée pour ne pas faire plusieurs appels concurents d'une même icone
66
+ */
67
+ if (libIcons[name])
68
+ return unsafeHTML(libIcons[name]);
69
+ if (!loadingGetPromises.has(url)) {
70
+ let promise = new Promise((resolve) => __awaiter(void 0, void 0, void 0, function* () {
71
+ let result = yield fetch(url);
72
+ try {
73
+ let text = yield result.text();
74
+ resolve(text);
75
+ }
76
+ catch (e) {
77
+ resolve(null);
78
+ }
79
+ }));
80
+ loadingGetPromises.set(url, promise);
81
+ }
82
+ /**
83
+ * Chargement de l'icone.
84
+ */
85
+ let result = yield loadingGetPromises.get(url);
86
+ loadingGetPromises.delete(url);
87
+ libIcons[name] = result;
88
+ return unsafeHTML(result);
89
+ }
90
+ /**
91
+ * svgs "locaux"
92
+ */
93
+ return unsafeHTML(iconsAsRecord[prefix][params.name] || "");
94
+ }),
24
95
  };
25
96
  Icons.default = Icons.fontAwesomeNext;
@@ -1 +1 @@
1
- {"iconoir":{"cancel":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6.75827 17.2426L12.0009 12M17.2435 6.75736L12.0009 12M12.0009 12L6.75827 6.75736M12.0009 12L17.2435 17.2426\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","check-circled-outline":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7 12.5L10 15.5L17 8.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","check":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","emoji-think-left":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10 15H7M2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M8.5 9C8.22386 9 8 8.77614 8 8.5C8 8.22386 8.22386 8 8.5 8C8.77614 8 9 8.22386 9 8.5C9 8.77614 8.77614 9 8.5 9Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M15.5 9C15.2239 9 15 8.77614 15 8.5C15 8.22386 15.2239 8 15.5 8C15.7761 8 16 8.22386 16 8.5C16 8.77614 15.7761 9 15.5 9Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","info-empty":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 11.5V16.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 7.51L12.01 7.49889\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","loader":"","more-vert":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 12.5C12.2761 12.5 12.5 12.2761 12.5 12C12.5 11.7239 12.2761 11.5 12 11.5C11.7239 11.5 11.5 11.7239 11.5 12C11.5 12.2761 11.7239 12.5 12 12.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 18.5C12.2761 18.5 12.5 18.2761 12.5 18C12.5 17.7239 12.2761 17.5 12 17.5C11.7239 17.5 11.5 17.7239 11.5 18C11.5 18.2761 11.7239 18.5 12 18.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 6.5C12.2761 6.5 12.5 6.27614 12.5 6C12.5 5.72386 12.2761 5.5 12 5.5C11.7239 5.5 11.5 5.72386 11.5 6C11.5 6.27614 11.7239 6.5 12 6.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","nav-arrow-down":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","warning-circled-outline":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 7L12 13\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 17.01L12.01 16.9989\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n"}}
1
+ {"iconoir":{"cancel":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6.75827 17.2426L12.0009 12M17.2435 6.75736L12.0009 12M12.0009 12L6.75827 6.75736M12.0009 12L17.2435 17.2426\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","check-circled-outline":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7 12.5L10 15.5L17 8.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","check":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","emoji-think-left":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10 15H7M2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M8.5 9C8.22386 9 8 8.77614 8 8.5C8 8.22386 8.22386 8 8.5 8C8.77614 8 9 8.22386 9 8.5C9 8.77614 8.77614 9 8.5 9Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M15.5 9C15.2239 9 15 8.77614 15 8.5C15 8.22386 15.2239 8 15.5 8C15.7761 8 16 8.22386 16 8.5C16 8.77614 15.7761 9 15.5 9Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","info-empty":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 11.5V16.5\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 7.51L12.01 7.49889\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","loader":"","more-horiz":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18 12.5C18.2761 12.5 18.5 12.2761 18.5 12C18.5 11.7239 18.2761 11.5 18 11.5C17.7239 11.5 17.5 11.7239 17.5 12C17.5 12.2761 17.7239 12.5 18 12.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 12.5C12.2761 12.5 12.5 12.2761 12.5 12C12.5 11.7239 12.2761 11.5 12 11.5C11.7239 11.5 11.5 11.7239 11.5 12C11.5 12.2761 11.7239 12.5 12 12.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M6 12.5C6.27614 12.5 6.5 12.2761 6.5 12C6.5 11.7239 6.27614 11.5 6 11.5C5.72386 11.5 5.5 11.7239 5.5 12C5.5 12.2761 5.72386 12.5 6 12.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","more-vert":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 12.5C12.2761 12.5 12.5 12.2761 12.5 12C12.5 11.7239 12.2761 11.5 12 11.5C11.7239 11.5 11.5 11.7239 11.5 12C11.5 12.2761 11.7239 12.5 12 12.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 18.5C12.2761 18.5 12.5 18.2761 12.5 18C12.5 17.7239 12.2761 17.5 12 17.5C11.7239 17.5 11.5 17.7239 11.5 18C11.5 18.2761 11.7239 18.5 12 18.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 6.5C12.2761 6.5 12.5 6.27614 12.5 6C12.5 5.72386 12.2761 5.5 12 5.5C11.7239 5.5 11.5 5.72386 11.5 6C11.5 6.27614 11.7239 6.5 12 6.5Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","nav-arrow-down":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","warning-circled-outline":"<svg width=\"24\" height=\"24\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 7L12 13\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 17.01L12.01 16.9989\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n<path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n"}}
@@ -14,7 +14,9 @@ export declare class Link extends LitElement {
14
14
  autoActive: "strict" | "partial" | "disabled";
15
15
  connectedCallback(): void;
16
16
  disconnectedCallback(): void;
17
- target: null;
17
+ private _target;
18
+ set target(newTarget: string | null);
19
+ get target(): string | null;
18
20
  /**
19
21
  * Si présent on passe en mode pushstate
20
22
  */
@@ -8,6 +8,7 @@ import LocationHandler from "@supersoniks/concorde/core/utils/LocationHandler";
8
8
  import { html, LitElement, css } from "lit";
9
9
  import { customElement, property } from "lit/decorators.js";
10
10
  import { ifDefined } from "lit/directives/if-defined.js";
11
+ import Electron from "@supersoniks/concorde/core/utils/Electron";
11
12
  let Link = class Link extends LitElement {
12
13
  constructor() {
13
14
  super(...arguments);
@@ -20,7 +21,7 @@ let Link = class Link extends LitElement {
20
21
  * - disabled : aucune activation / désactivation
21
22
  */
22
23
  this.autoActive = "partial";
23
- this.target = null;
24
+ this._target = null;
24
25
  /**
25
26
  * Si présent on passe en mode pushstate
26
27
  */
@@ -44,6 +45,14 @@ let Link = class Link extends LitElement {
44
45
  LocationHandler.offChange(this);
45
46
  super.disconnectedCallback();
46
47
  }
48
+ set target(newTarget) {
49
+ this._target = newTarget;
50
+ Electron.fixBlankLink(this);
51
+ this.requestUpdate();
52
+ }
53
+ get target() {
54
+ return this._target;
55
+ }
47
56
  handlePushState(e) {
48
57
  e.preventDefault();
49
58
  LocationHandler.changeFromComponent(this);
@@ -75,7 +84,7 @@ __decorate([
75
84
  ], Link.prototype, "autoActive", void 0);
76
85
  __decorate([
77
86
  property({ type: String })
78
- ], Link.prototype, "target", void 0);
87
+ ], Link.prototype, "target", null);
79
88
  __decorate([
80
89
  property({ type: Boolean })
81
90
  ], Link.prototype, "pushState", void 0);
@@ -1,4 +1,5 @@
1
1
  import { LitElement, PropertyValues } from "lit";
2
+ import "./menu-item";
2
3
  export declare class MenuItems extends LitElement {
3
4
  static styles: import("lit").CSSResult[];
4
5
  /**
@@ -7,20 +8,25 @@ export declare class MenuItems extends LitElement {
7
8
  */
8
9
  size: "" | "xs" | "sm" | "lg";
9
10
  /**
10
- * Direction // todo
11
+ * Direction
11
12
  */
12
- direction: "" | "row" | "column";
13
+ direction: "row" | "column";
14
+ align: "center" | "left" | "right";
13
15
  /**
14
16
  * Ombre
15
17
  */
16
- shadow: "" | "none" | "sm" | "md";
18
+ shadow: "" | "none" | "sm" | "md" | 'lg' | "xl";
19
+ moreShape: "square" | "circle";
17
20
  /**
18
21
  * Propriété min-width du bouton
19
22
  */
20
23
  minWidth: string;
21
24
  menuChildren: Array<HTMLElement>;
22
- menuNodes: Array<Node>;
25
+ moreElements: Array<HTMLElement>;
26
+ hasMoreElements: boolean;
27
+ checkIfMore(): void;
23
28
  updated(_changedProperties: PropertyValues): void;
24
- _setChildrenSize(): void;
29
+ mainSlotChange(): void;
30
+ setChildrenSize(menuItems: Array<HTMLElement>): void;
25
31
  render(): import("lit-html").TemplateResult<1>;
26
32
  }
@@ -6,7 +6,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { html, LitElement, css } from "lit";
8
8
  import { styleMap } from "lit/directives/style-map.js";
9
- import { customElement, property, queryAssignedElements, queryAssignedNodes } from "lit/decorators.js";
9
+ import { customElement, property, queryAssignedElements, state } from "lit/decorators.js";
10
+ import "./menu-item";
10
11
  let MenuItems = class MenuItems extends LitElement {
11
12
  constructor() {
12
13
  super(...arguments);
@@ -16,50 +17,80 @@ let MenuItems = class MenuItems extends LitElement {
16
17
  */
17
18
  this.size = "";
18
19
  /**
19
- * Direction // todo
20
+ * Direction
20
21
  */
21
22
  this.direction = "column";
23
+ this.align = "left";
22
24
  /**
23
25
  * Ombre
24
26
  */
25
27
  this.shadow = "none";
28
+ this.moreShape = "circle";
26
29
  /**
27
30
  * Propriété min-width du bouton
28
31
  */
29
32
  this.minWidth = "0";
33
+ this.hasMoreElements = false;
30
34
  }
31
- // connectedCallback(): void {
32
- // super.connectedCallback();
33
- // }
34
- updated(_changedProperties) {
35
- super.updated(_changedProperties);
36
- this._setChildrenSize();
35
+ checkIfMore() {
36
+ var _a;
37
+ this.hasMoreElements = !!((_a = this.moreElements) === null || _a === void 0 ? void 0 : _a.length);
37
38
  }
38
- _setChildrenSize() {
39
- if (this.size) {
40
- const children = this.querySelectorAll("sonic-button, sonic-menu-item");
41
- children.forEach((elt) => {
42
- if (!elt.hasAttribute("size")) {
43
- elt.setAttribute("size", this.size);
44
- }
45
- });
39
+ updated(_changedProperties) {
40
+ const moreBtn = this.querySelector('.more-btn');
41
+ if (this.size && moreBtn) {
42
+ moreBtn.setAttribute("size", this.size);
46
43
  }
47
- const children = this.querySelectorAll("sonic-divider");
48
- children.forEach((elt) => {
44
+ const dividers = this.querySelectorAll("sonic-divider");
45
+ dividers.forEach((elt) => {
49
46
  if (!elt.hasAttribute("size")) {
50
47
  elt.setAttribute("size", "xs");
51
48
  }
52
49
  });
53
- // const isSmall = ["sm", "xs"].some((value) => {
54
- // return value === this.size;
55
- // });
56
- // console.log(isSmall);
50
+ super.updated(_changedProperties);
51
+ }
52
+ mainSlotChange() {
53
+ this.setChildrenSize(this.menuChildren);
54
+ }
55
+ setChildrenSize(menuItems) {
56
+ menuItems.forEach((elt) => {
57
+ if (this.size) {
58
+ elt.setAttribute("size", this.size);
59
+ }
60
+ if (this.align) {
61
+ elt.setAttribute("textAlign", this.align);
62
+ }
63
+ if (this.direction == "row") {
64
+ if (elt.getAttribute('shape') == "block") {
65
+ elt.setAttribute("shape", "default");
66
+ }
67
+ }
68
+ });
57
69
  }
58
70
  render() {
59
71
  const menuStyles = {
60
72
  minWidth: this.minWidth,
73
+ flexDirection: this.direction,
74
+ };
75
+ const isMenuRow = this.direction == "row";
76
+ const popStyles = {
77
+ display: 'block',
78
+ alignSelf: isMenuRow ? 'center' : 'flex-start',
79
+ justifySelf: 'center',
80
+ flexDirection: this.direction
61
81
  };
62
- return html `<menu part="menu" style=${styleMap(menuStyles)}> <slot></slot></menu>`;
82
+ const popBtnStyles = {
83
+ marginLeft: isMenuRow ? '' : '.55em'
84
+ };
85
+ return html `<menu part="menu" class="shadowable" style=${styleMap(menuStyles)}>
86
+ <slot @slotchange=${this.mainSlotChange}></slot>
87
+ <sonic-pop style=${styleMap(popStyles)} class=${!this.hasMoreElements ? 'hidden' : ''}>
88
+ <sonic-menu-item style=${styleMap(popBtnStyles)} class="more-btn" shape=${this.moreShape} textAlign="center" >
89
+ <sonic-icon prefix="iconoir" size="xl" name=${isMenuRow ? "more-vert" : "more-horiz"} ></sonic-icon>
90
+ </sonic-menu-item>
91
+ <slot name="more" @slotchange=${this.checkIfMore} slot="content"></slot>
92
+ </sonic-pop>
93
+ </menu>`;
63
94
  }
64
95
  };
65
96
  MenuItems.styles = [
@@ -67,33 +98,39 @@ MenuItems.styles = [
67
98
  :host {
68
99
  display: block;
69
100
  }
101
+
70
102
  :host > menu {
71
103
  display: flex;
72
- flex-direction: column;
73
104
  border-radius: min(calc(var(--sc-btn-rounded) * 2), 0.4em);
74
105
  margin: 0;
75
106
  padding: 0.35em;
76
107
  gap: 0.15rem;
77
108
  }
109
+
110
+ .hidden {
111
+ display:none !important;
112
+ }
78
113
 
79
114
  /*OMBRE*/
80
- :host([shadow]) > :not(slot),
81
- :host([shadow="md"]) > :not(slot),
82
- :host([shadow="true"]) > :not(slot) {
115
+ :host([shadow]) .shadowable,
116
+ :host([shadow="md"]) .shadowable,
117
+ :host([shadow="true"]) .shadowable {
83
118
  box-shadow: var(--sc-shadow);
84
119
  }
85
120
 
86
- :host([shadow="sm"]) > :not(slot) {
121
+ :host([shadow="sm"]) .shadowable {
87
122
  box-shadow: var(--sc-shadow-sm);
88
123
  }
89
124
 
90
- :host([shadow="none"]) > :not(slot) {
125
+ :host([shadow="lg"]) .shadowable {
126
+ box-shadow: var(--sc-shadow-lg);
127
+ }
128
+
129
+ :host([shadow="none"]) .shadowable {
91
130
  box-shadow: none;
92
131
  }
93
132
 
94
- :host([shadow="lg"]) > :not(slot) {
95
- box-shadow: var(--sc-shadow-lg);
96
- }
133
+
97
134
  `,
98
135
  ];
99
136
  __decorate([
@@ -102,18 +139,27 @@ __decorate([
102
139
  __decorate([
103
140
  property({ type: String, reflect: true })
104
141
  ], MenuItems.prototype, "direction", void 0);
142
+ __decorate([
143
+ property({ type: String, reflect: true })
144
+ ], MenuItems.prototype, "align", void 0);
105
145
  __decorate([
106
146
  property({ type: String, reflect: true })
107
147
  ], MenuItems.prototype, "shadow", void 0);
148
+ __decorate([
149
+ property({ type: String })
150
+ ], MenuItems.prototype, "moreShape", void 0);
108
151
  __decorate([
109
152
  property({ type: String })
110
153
  ], MenuItems.prototype, "minWidth", void 0);
111
154
  __decorate([
112
- queryAssignedElements({ slot: "main", selector: "*" })
155
+ queryAssignedElements({ selector: "sonic-menu-item" })
113
156
  ], MenuItems.prototype, "menuChildren", void 0);
114
157
  __decorate([
115
- queryAssignedNodes({ slot: "main", flatten: true })
116
- ], MenuItems.prototype, "menuNodes", void 0);
158
+ queryAssignedElements({ slot: "more", selector: "*" })
159
+ ], MenuItems.prototype, "moreElements", void 0);
160
+ __decorate([
161
+ state()
162
+ ], MenuItems.prototype, "hasMoreElements", void 0);
117
163
  MenuItems = __decorate([
118
164
  customElement("sonic-menu")
119
165
  ], MenuItems);
@@ -163,7 +163,9 @@ Pop.styles = [
163
163
  transform: translateY(1rem) scale(0.95);
164
164
  opacity: 0;
165
165
  pointer-events: none;
166
- transition: 0.2s ease;
166
+ transition-duration: 0.15s ;
167
+ transition-timing-function: ease;
168
+ transition-property:all;
167
169
  border-radius: min(calc(var(--sc-btn-rounded) * 2), 0.4em);
168
170
  }
169
171
 
@@ -171,7 +173,8 @@ Pop.styles = [
171
173
  transform: translateY(0) scale(1);
172
174
  opacity: 1;
173
175
  pointer-events: auto;
174
- transition: 0.2s cubic-bezier(0.25, 0.25, 0.42, 1.225);
176
+ transition-property:scale, opacity;
177
+ transition-timing-function: cubic-bezier(0.25, 0.25, 0.42, 1.225);
175
178
  }
176
179
 
177
180
  /*OMBRE*/
@@ -1,7 +1,9 @@
1
1
  import { LitElement } from "lit";
2
2
  export declare class Progress extends LitElement {
3
3
  static styles: import("lit").CSSResult[];
4
- value: number;
4
+ value?: number;
5
5
  max: number;
6
+ type: "default" | "primary" | "warning" | "danger" | "success" | "info";
7
+ size: "xs" | "sm" | "md" | "lg" | "xl";
6
8
  render(): import("lit-html").TemplateResult<1>;
7
9
  }
@@ -6,14 +6,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { html, LitElement, css } from "lit";
8
8
  import { customElement, property } from "lit/decorators.js";
9
+ import { ifDefined } from "lit/directives/if-defined.js";
9
10
  let Progress = class Progress extends LitElement {
10
11
  constructor() {
11
12
  super(...arguments);
12
13
  this.max = 100;
14
+ this.type = "default";
15
+ this.size = "md";
13
16
  }
14
17
  render() {
15
18
  return html `
16
- <progress value=${this.value} max=${this.max}></progress>
19
+ <progress value=${ifDefined(this.value)} max=${this.max}></progress>
20
+ <slot></slot>
17
21
  `;
18
22
  }
19
23
  };
@@ -21,10 +25,18 @@ Progress.styles = [
21
25
  css `
22
26
 
23
27
  :host {
24
- --sc-progress-bg: var(--sc-input-bg, var(--sc-base, #fff));
28
+ --sc-progress-bg: var(--sc-input-bg, var(--sc-base-100, #f5f5f5));
25
29
  --sc-progress-color: var(--sc-base-content, #1f2937);
26
30
  --sc-progress-height: .6rem;
31
+ --sc-progress-fs: 1rem;
32
+ --sc-progress-fw: 500;
33
+ --sc-progress-rounded: var(--sc-rounded-lg);
34
+ font-weight:var(--sc-progress-fw);
27
35
  display: flex;
36
+ flex-wrap: wrap;
37
+ line-height: 1.2;
38
+ font-size:var(--sc-progress-fs);
39
+ color:var(--sc-progress-color);
28
40
  }
29
41
 
30
42
  progress {
@@ -34,21 +46,78 @@ Progress.styles = [
34
46
  appearance: none;
35
47
  overflow: hidden;
36
48
  height: var(--sc-progress-height);
37
- border-radius: var(--rounded-box,1rem);
49
+ border-radius: var(--sc-progress-rounded);
38
50
  background-color: var(--sc-progress-bg);
39
51
  color: var(--sc-progress-color);
40
52
  border:none;
41
53
  }
42
54
  progress::-moz-progress-bar {
43
55
  background-color: var(--sc-progress-color);
56
+ border-radius: var(--sc-progress-rounded);
44
57
  }
58
+
45
59
  progress::-webkit-progress-bar {
46
60
  background-color: var(--sc-progress-bg);
47
61
  }
48
62
  progress::-webkit-progress-value {
49
63
  background-color: var(--sc-progress-color);
64
+ border-radius: var(--sc-progress-rounded);
65
+ }
66
+
67
+ progress:indeterminate:after {
68
+ background-color: var(--sc-progress-color);
69
+ content: "";
70
+ position: absolute;
71
+ top: 0;
72
+ bottom: 0;
73
+ left: -40%;
74
+ width: 33.333333%;
75
+ border-radius: var(--sc-progress-rounded);
76
+ animation: progress-loading 3s infinite ease-in-out;
77
+ }
78
+
79
+ @keyframes progress-loading {
80
+ 50% {
81
+ left: 107%;
82
+ }
50
83
  }
51
84
 
85
+ /* COLOR TYPES */
86
+ :host([type="warning"]) {
87
+ --sc-progress-color: var(--sc-warning);
88
+ }
89
+ :host([type="danger"]) {
90
+ --sc-progress-color: var(--sc-danger);
91
+ }
92
+ :host([type="info"]) {
93
+ --sc-progress-color: var(--sc-info);
94
+ }
95
+ :host([type="success"]) {
96
+ --sc-progress-color: var(--sc-success);
97
+ }
98
+
99
+ /* SIZES */
100
+ :host([size="xs"]) {
101
+ --sc-progress-height:.25rem;
102
+ --sc-progress-fs: 0.68rem;
103
+ }
104
+
105
+ :host([size="sm"]) {
106
+ --sc-progress-height:.4rem;
107
+ --sc-progress-fs: 0.85rem;
108
+ }
109
+
110
+ :host([size="lg"]) {
111
+ --sc-progress-height:1rem;
112
+ --sc-progress-fs: 1.25rem;
113
+ }
114
+
115
+ :host([size="xl"]) {
116
+ --sc-progress-height:1.5rem;
117
+ --sc-progress-fs: 1.5rem;
118
+ }
119
+
120
+
52
121
  `
53
122
  ];
54
123
  __decorate([
@@ -57,6 +126,12 @@ __decorate([
57
126
  __decorate([
58
127
  property({ type: Number })
59
128
  ], Progress.prototype, "max", void 0);
129
+ __decorate([
130
+ property({ type: String, reflect: true })
131
+ ], Progress.prototype, "type", void 0);
132
+ __decorate([
133
+ property({ type: String, reflect: true })
134
+ ], Progress.prototype, "size", void 0);
60
135
  Progress = __decorate([
61
136
  customElement("sonic-progress")
62
137
  ], Progress);
@@ -5,6 +5,7 @@ export declare class Tabs extends LitElement {
5
5
  size: "md" | "xs" | "sm" | "lg";
6
6
  direction: "" | "row" | "column";
7
7
  icon: boolean;
8
+ moreShape: "square" | "circle";
8
9
  menu: HTMLElement;
9
10
  _resizeController: ResizeController;
10
11
  updated(_changedProperties: PropertyValues): void;
@@ -14,6 +14,7 @@ let Tabs = class Tabs extends LitElement {
14
14
  this.size = "md";
15
15
  this.direction = "column";
16
16
  this.icon = false;
17
+ this.moreShape = "circle";
17
18
  this._resizeController = new ResizeController(this, {});
18
19
  }
19
20
  updated(_changedProperties) {
@@ -62,9 +63,9 @@ let Tabs = class Tabs extends LitElement {
62
63
  return html `<menu part="tabs"
63
64
  ><slot></slot>
64
65
  <sonic-pop class="flex" >
65
- <sonic-tab >
66
+ <sonic-menu-item shape="square">
66
67
  <sonic-icon prefix="iconoir" class="my-auto" size="xl" name="more-vert"></sonic-icon>
67
- </sonic-tab>
68
+ </sonic-menu-item>
68
69
  <sonic-menu slot="content"></sonic-menu>
69
70
  <sonic-pop>
70
71
  </menu>`;
@@ -111,8 +112,11 @@ __decorate([
111
112
  property({ type: String, reflect: true })
112
113
  ], Tabs.prototype, "direction", void 0);
113
114
  __decorate([
114
- property({ type: Boolean, reflect: true })
115
+ property({ type: Boolean })
115
116
  ], Tabs.prototype, "icon", void 0);
117
+ __decorate([
118
+ property({ type: String })
119
+ ], Tabs.prototype, "moreShape", void 0);
116
120
  __decorate([
117
121
  query("menu")
118
122
  ], Tabs.prototype, "menu", void 0);
@@ -17,9 +17,6 @@ import "./image/image";
17
17
  import "./loader/loader";
18
18
  import "./taxonomy/taxonomy";
19
19
  import "./menu/menu";
20
- import "./menu/menu-item";
21
- import "./tabs/tabs";
22
- import "./tabs/tab";
23
20
  import "./modal/modal";
24
21
  import "./alert/alert";
25
22
  import "./toast/toast";
@@ -22,10 +22,9 @@ import "./loader/loader";
22
22
  import "./taxonomy/taxonomy";
23
23
  //Menu
24
24
  import "./menu/menu";
25
- import "./menu/menu-item";
26
25
  //Tabs
27
- import "./tabs/tabs";
28
- import "./tabs/tab";
26
+ // import "./tabs/tabs";
27
+ // import "./tabs/tab";
29
28
  // Misc
30
29
  import "./modal/modal";
31
30
  import "./alert/alert";
@@ -0,0 +1,3 @@
1
+ export default class Electron {
2
+ static fixBlankLink(link: any): void;
3
+ }
@@ -0,0 +1,8 @@
1
+ export default class Electron {
2
+ static fixBlankLink(link) {
3
+ const electron = typeof require == 'undefined' ? null : require("electron");
4
+ if (typeof electron && link.target == "_blank") {
5
+ link.addEventListener("click", () => { electron === null || electron === void 0 ? void 0 : electron.shell.openExternal(link.href); });
6
+ }
7
+ }
8
+ }
@@ -47,6 +47,21 @@ export default class LocationHandler {
47
47
  * Voir link et button pour les exemples d'implémentation
48
48
  **/
49
49
  static changeFromComponent(component) {
50
+ if (component.goBack !== null) {
51
+ const origin = document.location.origin;
52
+ let urlDest = component.goBack || origin;
53
+ if ((document.referrer.indexOf("http") != 0 || new URL(document.referrer).origin != origin) && urlDest != document.location.href) {
54
+ let state = history.state || {};
55
+ state.concorde = state.concorde || {};
56
+ state.concorde.hasDoneHistoryBack = true; // maybe for debugging
57
+ history.pushState(state, document.title);
58
+ history.back();
59
+ document.location.replace(urlDest);
60
+ }
61
+ else
62
+ history.back();
63
+ return;
64
+ }
50
65
  let to = component.getAttribute("to");
51
66
  if (!to)
52
67
  to = component.href;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supersoniks/concorde",
3
- "version": "1.1.11",
3
+ "version": "1.1.12",
4
4
  "customElements": "custom-elements.json",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -191,6 +191,8 @@
191
191
  "./utils/Arrays": "./core/utils/Arrays",
192
192
  "./core/utils/DataBindObserver": "./core/utils/DataBindObserver",
193
193
  "./utils/DataBindObserver": "./core/utils/DataBindObserver",
194
+ "./core/utils/Electron": "./core/utils/Electron",
195
+ "./utils/Electron": "./core/utils/Electron",
194
196
  "./core/utils/Format": "./core/utils/Format",
195
197
  "./utils/Format": "./core/utils/Format",
196
198
  "./core/utils/HTML": "./core/utils/HTML",