@supersoniks/concorde 1.1.7 → 1.1.10
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/core/components/functional/configuration/configuration.d.ts +5 -0
- package/core/components/functional/configuration/configuration.js +21 -0
- package/core/components/functional/date/date.d.ts +2 -1
- package/core/components/functional/date/date.js +9 -2
- package/core/components/functional/fetch/fetch.d.ts +27 -10
- package/core/components/functional/fetch/fetch.js +27 -12
- package/core/components/functional/functional.d.ts +1 -0
- package/core/components/functional/functional.js +1 -0
- package/core/components/functional/list/list.d.ts +12 -7
- package/core/components/functional/list/list.js +55 -17
- package/core/components/functional/queue/queue.js +7 -3
- package/core/components/functional/sonic-scope/sonic-scope.d.ts +5 -0
- package/core/components/functional/sonic-scope/sonic-scope.js +20 -0
- package/core/components/functional/states/states.js +0 -2
- package/core/components/functional/submit/submit.d.ts +2 -0
- package/core/components/functional/submit/submit.js +23 -8
- package/core/components/ui/badge/badge.js +0 -1
- package/core/components/ui/button/button.d.ts +10 -2
- package/core/components/ui/button/button.js +10 -2
- package/core/components/ui/card/card-footer.d.ts +5 -0
- package/core/components/ui/card/card-footer.js +27 -0
- package/core/components/ui/card/card-header-descripton.d.ts +5 -0
- package/core/components/ui/card/card-header-descripton.js +33 -0
- package/core/components/ui/card/card-header.d.ts +8 -0
- package/core/components/ui/card/card-header.js +67 -0
- package/core/components/ui/card/card-main.d.ts +5 -0
- package/core/components/ui/card/card-main.js +29 -0
- package/core/components/ui/card/card.d.ts +12 -0
- package/core/components/ui/card/card.js +90 -0
- package/core/components/ui/form/checkbox/checkbox.d.ts +0 -2
- package/core/components/ui/form/checkbox/checkbox.js +3 -3
- package/core/components/ui/form/css/form-control.js +2 -0
- package/core/components/ui/form/fieldset/fieldset.js +1 -1
- package/core/components/ui/form/fieldset/legend-description.d.ts +5 -0
- package/core/components/ui/form/fieldset/legend-description.js +35 -0
- package/core/components/ui/form/fieldset/legend.d.ts +4 -5
- package/core/components/ui/form/fieldset/legend.js +21 -25
- package/core/components/ui/form/input/input.d.ts +1 -2
- package/core/components/ui/form/input/input.js +3 -3
- package/core/components/ui/form/textarea/textarea.d.ts +0 -1
- package/core/components/ui/form/textarea/textarea.js +2 -2
- package/core/components/ui/progress/progress.d.ts +7 -0
- package/core/components/ui/progress/progress.js +63 -0
- package/core/components/ui/table/table-caption.d.ts +5 -0
- package/core/components/ui/table/table-caption.js +24 -0
- package/core/components/ui/table/table-tbody.d.ts +5 -0
- package/core/components/ui/table/table-tbody.js +37 -0
- package/core/components/ui/table/table-td.d.ts +7 -0
- package/core/components/ui/table/table-td.js +45 -0
- package/core/components/ui/table/table-tfoot.d.ts +5 -0
- package/core/components/ui/table/table-tfoot.js +23 -0
- package/core/components/ui/table/table-th.d.ts +6 -0
- package/core/components/ui/table/table-th.js +43 -0
- package/core/components/ui/table/table-thead.d.ts +5 -0
- package/core/components/ui/table/table-thead.js +24 -0
- package/core/components/ui/table/table-tr.d.ts +5 -0
- package/core/components/ui/table/table-tr.js +24 -0
- package/core/components/ui/table/table.d.ts +16 -0
- package/core/components/ui/table/table.js +88 -0
- package/core/components/ui/theme/theme-collection/core-variables.js +2 -2
- package/core/components/ui/theme/theme-collection/dark.js +3 -2
- package/core/components/ui/theme/theme-collection/light.js +1 -0
- package/core/components/ui/ui.d.ts +3 -0
- package/core/components/ui/ui.js +3 -0
- package/core/mixins/Fetcher.d.ts +1 -4
- package/core/mixins/Fetcher.js +2 -2
- package/core/mixins/FormCheckable.d.ts +3 -2
- package/core/mixins/FormInput.d.ts +0 -1
- package/core/mixins/Subscriber.d.ts +0 -1
- package/core/mixins/Subscriber.js +0 -15
- package/core/utils/DataBindObserver.js +0 -2
- package/core/utils/Objects.d.ts +2 -1
- package/core/utils/Objects.js +8 -2
- package/core/utils/PublisherProxy.mjs +42 -12
- package/core/utils/api.js +1 -1
- package/package.json +36 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, LitElement } from "lit";
|
|
8
|
+
import { customElement } from "lit/decorators.js";
|
|
9
|
+
let SonicConfiguration = class SonicConfiguration extends LitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.isSonicConfig = true;
|
|
13
|
+
}
|
|
14
|
+
render() {
|
|
15
|
+
return html `<slot></slot>`;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
SonicConfiguration = __decorate([
|
|
19
|
+
customElement("sonic-configuration")
|
|
20
|
+
], SonicConfiguration);
|
|
21
|
+
export { SonicConfiguration };
|
|
@@ -7,6 +7,7 @@ export declare class SonicDate extends SonicDate_base {
|
|
|
7
7
|
get wording_billet_periode_validite(): string;
|
|
8
8
|
set wording_billet_periode_validite(value: string);
|
|
9
9
|
designMode: boolean | null;
|
|
10
|
+
time_zone: string | null;
|
|
10
11
|
date: number | null;
|
|
11
12
|
date_string: string | null;
|
|
12
13
|
start_date_string: string | null;
|
|
@@ -28,7 +29,7 @@ export declare class SonicDate extends SonicDate_base {
|
|
|
28
29
|
/**
|
|
29
30
|
* Retourne un tableau des différentes parties de la date en fonction des options données, de la date de début et de fin.
|
|
30
31
|
*/
|
|
31
|
-
getDatesParts(start_date: number, end_date: number, options:
|
|
32
|
+
getDatesParts(start_date: number, end_date: number, options: any): any;
|
|
32
33
|
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
33
34
|
}
|
|
34
35
|
export {};
|
|
@@ -17,6 +17,7 @@ let SonicDate = class SonicDate extends Subscriber(TemplatesContainer(LitElement
|
|
|
17
17
|
this.duAu = [];
|
|
18
18
|
this._wording_billet_periode_validite = "";
|
|
19
19
|
this.designMode = null;
|
|
20
|
+
this.time_zone = null;
|
|
20
21
|
this.date = null;
|
|
21
22
|
this.date_string = null;
|
|
22
23
|
this.start_date_string = null;
|
|
@@ -70,9 +71,10 @@ let SonicDate = class SonicDate extends Subscriber(TemplatesContainer(LitElement
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
+
const isSameDay = start.getFullYear() == end.getFullYear() && start.getMonth() == end.getMonth() && start.getDate() == end.getDate();
|
|
75
|
+
if (parts.some((part) => part.source == "endRange") && !isSameDay) {
|
|
74
76
|
for (let part of parts) {
|
|
75
|
-
if (part.type == "literal" && part.source == "shared" && part.value.trim().length > 0) {
|
|
77
|
+
if (part.type == "literal" && part.source == "shared" && part.value.trim().length > 0 && !isSameDay) {
|
|
76
78
|
part.value = " " + this.duAu[1] + " ";
|
|
77
79
|
part.type = "to";
|
|
78
80
|
break;
|
|
@@ -116,6 +118,8 @@ let SonicDate = class SonicDate extends Subscriber(TemplatesContainer(LitElement
|
|
|
116
118
|
options.minute = this.minute;
|
|
117
119
|
if (this.era)
|
|
118
120
|
options.era = this.era;
|
|
121
|
+
if (this.time_zone)
|
|
122
|
+
options.timeZone = this.time_zone;
|
|
119
123
|
let parts = this.getDatesParts(this.start_date, this.end_date, options);
|
|
120
124
|
return html `${parts.map((part) => {
|
|
121
125
|
let template = this.templateParts[part.type];
|
|
@@ -136,6 +140,9 @@ __decorate([
|
|
|
136
140
|
__decorate([
|
|
137
141
|
property({ type: Boolean })
|
|
138
142
|
], SonicDate.prototype, "designMode", void 0);
|
|
143
|
+
__decorate([
|
|
144
|
+
property({ type: String })
|
|
145
|
+
], SonicDate.prototype, "time_zone", void 0);
|
|
139
146
|
__decorate([
|
|
140
147
|
property({ type: Number })
|
|
141
148
|
], SonicDate.prototype, "date", void 0);
|
|
@@ -23,7 +23,6 @@ declare const Fetch_base: {
|
|
|
23
23
|
noShadowDom: string | null;
|
|
24
24
|
debug: HTMLElement | null;
|
|
25
25
|
defferedDebug: boolean | null;
|
|
26
|
-
makeShadow(props: Record<string, any>, value: any): any;
|
|
27
26
|
dispatchEvent(event: Event): void;
|
|
28
27
|
setAttribute(name: string, value: string): void;
|
|
29
28
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
@@ -38,17 +37,35 @@ declare const Fetch_base: {
|
|
|
38
37
|
} & (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/Subscriber").SubscriberInterface) & typeof LitElement;
|
|
39
38
|
/**
|
|
40
39
|
* ###Fetch charge un contenu via un appel d'api web.
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
40
|
+
* Extends mixins : Fetcher, [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page)
|
|
41
|
+
*
|
|
42
|
+
* #### Configuration via les attributs
|
|
43
|
+
*
|
|
44
|
+
* | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis |
|
|
45
|
+
* | -------------------------------------------------------------------------------------- |
|
|
46
|
+
* | serviceURL |Fetcher ou un de ses parents | URL de base des services. | http://la-billetterie.net/api/v2 | domain du site |
|
|
47
|
+
* | endpoint |Fetcher | point d'accès d'un service | user/2 | valeur de l'attribut dataProvider |
|
|
48
|
+
* | dataProvider |Fetcher ou un de ses parents | Identifiant d'un publisher qui stock les données, voir [subscriber](./?path=/docs/miscallenous-🔔-subscriber--page). | billetterie/user/2 | *REQUIS* |
|
|
49
|
+
* | key |Fetcher | extrait une sous propriété de la donnée chargée avant de l'assignée à son publisher | ma.data | null |
|
|
50
|
+
*
|
|
51
|
+
* *Si la données est `{ma:{data:{a:1,b:2}}}` et `key="ma.data"`, la données disponible dans le composant sera `{a:1, b:2}`*
|
|
52
|
+
|
|
53
|
+
#### Intégration auto de basic auth (pour tester une api qui nécessite une authentification)
|
|
54
|
+
|
|
55
|
+
* Fetch utilise le service pour générer le token et l'ajoute au header de l'appel qui récupère les données.
|
|
56
|
+
|
|
57
|
+
* | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis |
|
|
58
|
+
* | -------------------------------------------------------------------------------------- |
|
|
59
|
+
* | userName | Fetcher ou un de ses parents | Nom de l'utilisateur | DjuDju | null |
|
|
60
|
+
* | password | Fetcher ou un de ses parents | mot de passe | pom_549 | null |
|
|
61
|
+
* | tokenProvider | Fetcher ou un de ses parents | point d'accès du service fournissant le token | auth | null |
|
|
62
|
+
* | token | Fetcher ou un de ses parents | A fournir à la place des autres attributs si on le possède | q<d34gb | null |
|
|
63
|
+
|
|
64
|
+
#### Autres choses utiles
|
|
65
|
+
* * L'attribut *noLoader* du composant permet de désactiver l'affichage du loader par défaut.
|
|
66
|
+
* * On peut appeler la methode invalidate() sur le publisher associé au composant pour declencher le rechargement des données.
|
|
49
67
|
*/
|
|
50
68
|
export declare class Fetch extends Fetch_base {
|
|
51
|
-
noAutofill: boolean;
|
|
52
69
|
static styles: import("lit").CSSResult[];
|
|
53
70
|
render(): import("lit-html").TemplateResult<1>;
|
|
54
71
|
}
|
|
@@ -10,20 +10,35 @@ import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
|
|
|
10
10
|
import Fetcher from "@supersoniks/concorde/core/mixins/Fetcher";
|
|
11
11
|
/**
|
|
12
12
|
* ###Fetch charge un contenu via un appel d'api web.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
13
|
+
* Extends mixins : Fetcher, [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page)
|
|
14
|
+
*
|
|
15
|
+
* #### Configuration via les attributs
|
|
16
|
+
*
|
|
17
|
+
* | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis |
|
|
18
|
+
* | -------------------------------------------------------------------------------------- |
|
|
19
|
+
* | serviceURL |Fetcher ou un de ses parents | URL de base des services. | http://la-billetterie.net/api/v2 | domain du site |
|
|
20
|
+
* | endpoint |Fetcher | point d'accès d'un service | user/2 | valeur de l'attribut dataProvider |
|
|
21
|
+
* | dataProvider |Fetcher ou un de ses parents | Identifiant d'un publisher qui stock les données, voir [subscriber](./?path=/docs/miscallenous-🔔-subscriber--page). | billetterie/user/2 | *REQUIS* |
|
|
22
|
+
* | key |Fetcher | extrait une sous propriété de la donnée chargée avant de l'assignée à son publisher | ma.data | null |
|
|
23
|
+
*
|
|
24
|
+
* *Si la données est `{ma:{data:{a:1,b:2}}}` et `key="ma.data"`, la données disponible dans le composant sera `{a:1, b:2}`*
|
|
25
|
+
|
|
26
|
+
#### Intégration auto de basic auth (pour tester une api qui nécessite une authentification)
|
|
27
|
+
|
|
28
|
+
* Fetch utilise le service pour générer le token et l'ajoute au header de l'appel qui récupère les données.
|
|
29
|
+
|
|
30
|
+
* | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis |
|
|
31
|
+
* | -------------------------------------------------------------------------------------- |
|
|
32
|
+
* | userName | Fetcher ou un de ses parents | Nom de l'utilisateur | DjuDju | null |
|
|
33
|
+
* | password | Fetcher ou un de ses parents | mot de passe | pom_549 | null |
|
|
34
|
+
* | tokenProvider | Fetcher ou un de ses parents | point d'accès du service fournissant le token | auth | null |
|
|
35
|
+
* | token | Fetcher ou un de ses parents | A fournir à la place des autres attributs si on le possède | q<d34gb | null |
|
|
36
|
+
|
|
37
|
+
#### Autres choses utiles
|
|
38
|
+
* * L'attribut *noLoader* du composant permet de désactiver l'affichage du loader par défaut.
|
|
39
|
+
* * On peut appeler la methode invalidate() sur le publisher associé au composant pour declencher le rechargement des données.
|
|
21
40
|
*/
|
|
22
41
|
let Fetch = class Fetch extends Fetcher(Subscriber(LitElement)) {
|
|
23
|
-
constructor() {
|
|
24
|
-
super(...arguments);
|
|
25
|
-
this.noAutofill = true;
|
|
26
|
-
}
|
|
27
42
|
render() {
|
|
28
43
|
return html `<slot></slot>`;
|
|
29
44
|
}
|
|
@@ -25,7 +25,6 @@ declare const List_base: {
|
|
|
25
25
|
noShadowDom: string | null;
|
|
26
26
|
debug: HTMLElement | null;
|
|
27
27
|
defferedDebug: boolean | null;
|
|
28
|
-
makeShadow(props: Record<string, any>, value: any): any;
|
|
29
28
|
dispatchEvent(event: Event): void;
|
|
30
29
|
setAttribute(name: string, value: string): void;
|
|
31
30
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
@@ -41,16 +40,19 @@ declare const List_base: {
|
|
|
41
40
|
/**
|
|
42
41
|
* ### List boucle sur sa propriété "props" et crée des éléments a partir des données en bouclant également sur ses templates.
|
|
43
42
|
*
|
|
44
|
-
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
43
|
+
* Extends mixins : Fetcher, [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page)
|
|
44
|
+
*
|
|
45
|
+
* * Si le composant possède un attribut *fetch*, il charge un contenu via un appel d'api web.<br>
|
|
46
|
+
* Voir [fetcher](./?path=/docs/core-components-functional-fetch--basic) pour la configuration des autres attributs.
|
|
47
|
+
* * Chaque élément créé est englobé dans un objet [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page).<br>
|
|
48
|
+
* Un dataProvider y est associé a l'adresse suivante *dataProvider-de-la-liste$/*index-de-la-ligne-courante*
|
|
48
49
|
* Les données de la ligne sont donc disponible pour les élements internes (subscribers, data-binding)
|
|
49
50
|
* * Lors du chargement un objet loader inline est affiché.
|
|
50
|
-
* * Si le résultat de la requête est un objet, il est imbriqué dans un tableau pour garantir le fonctionnement
|
|
51
|
+
* * Si le résultat de la requête est un objet, il est imbriqué dans un tableau pour garantir le fonctionnement.<br>
|
|
51
52
|
* Cependant, si l'attribut `extractValues` est présent, les valeurs des propriétés de l'objet sont mises dans dans un tableau pour le rendu.
|
|
52
53
|
* * La propriété _key_ est ajoutés à la donnée de chaque item. Elle contient l'index dans le cas d'un liste simple ou la clés associée à la valeur si `extractValues` est définit.
|
|
53
54
|
* * On peut appler la methode invalidate() sur son publishe pour declencher le rechargement des données
|
|
55
|
+
* *
|
|
54
56
|
*/
|
|
55
57
|
export declare class List extends List_base {
|
|
56
58
|
static styles: import("lit").CSSResult[];
|
|
@@ -65,6 +67,9 @@ export declare class List extends List_base {
|
|
|
65
67
|
*/
|
|
66
68
|
idKey: string;
|
|
67
69
|
connectedCallback(): void;
|
|
68
|
-
|
|
70
|
+
renderLoadingState(): import("lit-html/directive").DirectiveResult<typeof import("lit-html/directives/template-content").TemplateContentDirective>;
|
|
71
|
+
renderNoResultState(): import("lit-html").TemplateResult<1>;
|
|
72
|
+
formatProps(): any;
|
|
73
|
+
render(): import("lit-html/directive").DirectiveResult<typeof import("lit-html/directives/template-content").TemplateContentDirective>;
|
|
69
74
|
}
|
|
70
75
|
export {};
|
|
@@ -18,16 +18,19 @@ import TemplatesContainer from "@supersoniks/concorde/core/mixins/TemplatesConta
|
|
|
18
18
|
/**
|
|
19
19
|
* ### List boucle sur sa propriété "props" et crée des éléments a partir des données en bouclant également sur ses templates.
|
|
20
20
|
*
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* Extends mixins : Fetcher, [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page)
|
|
22
|
+
*
|
|
23
|
+
* * Si le composant possède un attribut *fetch*, il charge un contenu via un appel d'api web.<br>
|
|
24
|
+
* Voir [fetcher](./?path=/docs/core-components-functional-fetch--basic) pour la configuration des autres attributs.
|
|
25
|
+
* * Chaque élément créé est englobé dans un objet [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page).<br>
|
|
26
|
+
* Un dataProvider y est associé a l'adresse suivante *dataProvider-de-la-liste$/*index-de-la-ligne-courante*
|
|
25
27
|
* Les données de la ligne sont donc disponible pour les élements internes (subscribers, data-binding)
|
|
26
28
|
* * Lors du chargement un objet loader inline est affiché.
|
|
27
|
-
* * Si le résultat de la requête est un objet, il est imbriqué dans un tableau pour garantir le fonctionnement
|
|
29
|
+
* * Si le résultat de la requête est un objet, il est imbriqué dans un tableau pour garantir le fonctionnement.<br>
|
|
28
30
|
* Cependant, si l'attribut `extractValues` est présent, les valeurs des propriétés de l'objet sont mises dans dans un tableau pour le rendu.
|
|
29
31
|
* * La propriété _key_ est ajoutés à la donnée de chaque item. Elle contient l'index dans le cas d'un liste simple ou la clés associée à la valeur si `extractValues` est définit.
|
|
30
32
|
* * On peut appler la methode invalidate() sur son publishe pour declencher le rechargement des données
|
|
33
|
+
* *
|
|
31
34
|
*/
|
|
32
35
|
let List = class List extends Fetcher(Subscriber(TemplatesContainer(LitElement))) {
|
|
33
36
|
constructor() {
|
|
@@ -48,22 +51,23 @@ let List = class List extends Fetcher(Subscriber(TemplatesContainer(LitElement))
|
|
|
48
51
|
this.defferedDebug = this.hasAttribute("debug") || null;
|
|
49
52
|
this.isDefaultLoaderEnabled = false;
|
|
50
53
|
this.isFetchEnabled = this.hasAttribute("fetch");
|
|
54
|
+
if (this.isFetchEnabled)
|
|
55
|
+
this.isLoading = true;
|
|
51
56
|
super.connectedCallback();
|
|
52
57
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
renderLoadingState() {
|
|
59
|
+
return this.templateParts["skeleton"]
|
|
60
|
+
? templateContent(this.templateParts["skeleton"])
|
|
61
|
+
: html `<sonic-loader mode="inline"></sonic-loader>`;
|
|
62
|
+
}
|
|
63
|
+
renderNoResultState() {
|
|
64
|
+
return html `
|
|
65
|
+
<div class="sonic-no-result-container">
|
|
59
66
|
<sonic-icon prefix="iconoir" name="emoji-think-left" size="lg"></sonic-icon
|
|
60
67
|
><span class="sonic-no-result-text">${this.props}</span>
|
|
61
68
|
</div>`;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (!Objects.isObject(this.props) || Object.keys(this.props).length == 0) {
|
|
65
|
-
return html `<div></div>`;
|
|
66
|
-
}
|
|
69
|
+
}
|
|
70
|
+
formatProps() {
|
|
67
71
|
let props = this.props;
|
|
68
72
|
let extractValues = this.hasAttribute("extractValues");
|
|
69
73
|
//si props n'est pas un tableau on l'adapte
|
|
@@ -75,9 +79,43 @@ let List = class List extends Fetcher(Subscriber(TemplatesContainer(LitElement))
|
|
|
75
79
|
props = [props];
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
|
-
|
|
82
|
+
return props;
|
|
83
|
+
}
|
|
84
|
+
render() {
|
|
85
|
+
/**
|
|
86
|
+
* Loading
|
|
87
|
+
*/
|
|
88
|
+
const isLoadingState = this.isLoading && !Array.isArray(this.props);
|
|
89
|
+
if (isLoadingState)
|
|
90
|
+
return this.renderLoadingState();
|
|
91
|
+
/**
|
|
92
|
+
* Si props est une string on considère qu'il n'y a pas de résultats
|
|
93
|
+
*/
|
|
94
|
+
const isString = typeof this.props === "string";
|
|
95
|
+
if (isString)
|
|
96
|
+
return this.renderNoResultState();
|
|
97
|
+
/**
|
|
98
|
+
* si props mal formé ou null on retourne une div vide (nécessaire pour le lazyload)
|
|
99
|
+
*/
|
|
100
|
+
const propsIsBaddlyFormatted = !Objects.isObject(this.props);
|
|
101
|
+
if (propsIsBaddlyFormatted)
|
|
102
|
+
return html `<div></div>`;
|
|
103
|
+
/**
|
|
104
|
+
* On format les props pour les rendre compatibles avec le fonctionnement du rendu en fonction du paramétrage du composant (cf : "extractValues" )
|
|
105
|
+
*/
|
|
106
|
+
let props = this.formatProps();
|
|
107
|
+
/**
|
|
108
|
+
* On peut définir un template spécifique si le résultat est un tableau vide
|
|
109
|
+
*/
|
|
110
|
+
if (props.length == 0 && this.templateParts["no-item"]) {
|
|
111
|
+
return templateContent(this.templateParts["no-item"]);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Rendu des lignes
|
|
115
|
+
* */
|
|
79
116
|
let templateCount = this.templateList.length;
|
|
80
117
|
let counter = -1;
|
|
118
|
+
let extractValues = this.hasAttribute("extractValues");
|
|
81
119
|
return html `
|
|
82
120
|
${repeat(props, (item, index) => item[this.idKey] || index, (item, index) => {
|
|
83
121
|
let templatePartName = item[this.templateKey];
|
|
@@ -146,7 +146,10 @@ let Queue = Queue_1 = class Queue extends Subscriber(LitElement) {
|
|
|
146
146
|
if (!Array.isArray(this.props))
|
|
147
147
|
return nothing;
|
|
148
148
|
return html `
|
|
149
|
-
${repeat(this.props, (item) => item.id, (item) =>
|
|
149
|
+
${repeat(this.props, (item) => item.id, (item, index) => {
|
|
150
|
+
var _a;
|
|
151
|
+
let templates = index == 0 ? this.templates : (_a = this.templates) === null || _a === void 0 ? void 0 : _a.filter(elt => elt.getAttribute("data-value") != "no-item");
|
|
152
|
+
return html `
|
|
150
153
|
<sonic-list
|
|
151
154
|
fetch
|
|
152
155
|
.itemPropertyMap=${this.itemPropertyMap}
|
|
@@ -156,10 +159,11 @@ let Queue = Queue_1 = class Queue extends Subscriber(LitElement) {
|
|
|
156
159
|
@loading=${this.resetDuration}
|
|
157
160
|
dataProvider="${item.dataProvider}"
|
|
158
161
|
idKey=${this.idKey}
|
|
159
|
-
.templates=${
|
|
162
|
+
.templates=${templates}
|
|
160
163
|
>
|
|
161
164
|
</sonic-list>
|
|
162
|
-
|
|
165
|
+
`;
|
|
166
|
+
})}
|
|
163
167
|
`;
|
|
164
168
|
}
|
|
165
169
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, LitElement } from "lit";
|
|
8
|
+
import { customElement } from "lit/decorators.js";
|
|
9
|
+
let SonicScope = class SonicScope extends LitElement {
|
|
10
|
+
createRenderRoot() {
|
|
11
|
+
return this;
|
|
12
|
+
}
|
|
13
|
+
render() {
|
|
14
|
+
return html `<slot></slot>`;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
SonicScope = __decorate([
|
|
18
|
+
customElement("sonic-scope")
|
|
19
|
+
], SonicScope);
|
|
20
|
+
export { SonicScope };
|
|
@@ -37,7 +37,6 @@ let SonicStates = class SonicStates extends Subscriber(TemplatesContainer(LitEle
|
|
|
37
37
|
}
|
|
38
38
|
connectedCallback() {
|
|
39
39
|
super.connectedCallback();
|
|
40
|
-
console.log("BB");
|
|
41
40
|
if (this.hasAttribute("data-path")) {
|
|
42
41
|
this.statePath = this.getAttribute("data-path");
|
|
43
42
|
}
|
|
@@ -65,7 +64,6 @@ let SonicStates = class SonicStates extends Subscriber(TemplatesContainer(LitEle
|
|
|
65
64
|
if ((!Array.isArray(state) && Objects.isObject(state)) || state === undefined) {
|
|
66
65
|
state = "";
|
|
67
66
|
}
|
|
68
|
-
console.log(state);
|
|
69
67
|
for (let t of this.templatePartsList) {
|
|
70
68
|
let path = t.getAttribute(this.templateValueAttribute);
|
|
71
69
|
let stateToMatch = state;
|
|
@@ -15,7 +15,9 @@ declare const Submit_base: (new (...args: any[]) => import("@supersoniks/concord
|
|
|
15
15
|
*/
|
|
16
16
|
export declare class Submit extends Submit_base {
|
|
17
17
|
static styles: import("lit").CSSResult;
|
|
18
|
+
submitResultKey: string | null;
|
|
18
19
|
disabled: boolean;
|
|
20
|
+
endPoint: string | null;
|
|
19
21
|
api: API | null;
|
|
20
22
|
connectedCallback(): void;
|
|
21
23
|
submit(): Promise<void>;
|
|
@@ -20,6 +20,7 @@ import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
|
|
|
20
20
|
import API from "@supersoniks/concorde/core/utils/api";
|
|
21
21
|
import { Loader } from "@supersoniks/concorde/core/components/ui/loader/loader";
|
|
22
22
|
import { css, html, LitElement } from "lit";
|
|
23
|
+
import Objects from "@supersoniks/concorde/core/utils/Objects";
|
|
23
24
|
/**
|
|
24
25
|
* ###L'élément submit permet d'envoyer des données en rest
|
|
25
26
|
* * Les données envoyées sont celles présentes dans le publisher dont l'adresse est renseignée via l'attribut *formDataProvider*.
|
|
@@ -34,17 +35,21 @@ import { css, html, LitElement } from "lit";
|
|
|
34
35
|
let Submit = class Submit extends Subscriber(LitElement) {
|
|
35
36
|
constructor() {
|
|
36
37
|
super(...arguments);
|
|
38
|
+
this.submitResultKey = null;
|
|
37
39
|
this.disabled = false;
|
|
40
|
+
this.endPoint = null;
|
|
38
41
|
this.api = null;
|
|
39
42
|
}
|
|
40
43
|
connectedCallback() {
|
|
41
|
-
if (this.hasAttribute("onClick"))
|
|
44
|
+
if (this.hasAttribute("onClick")) {
|
|
42
45
|
this.addEventListener("click", () => this.submit());
|
|
43
|
-
|
|
46
|
+
}
|
|
47
|
+
if (this.hasAttribute("onEnterKey")) {
|
|
44
48
|
this.addEventListener("keydown", (e) => {
|
|
45
49
|
if (e.key === "Enter")
|
|
46
50
|
this.submit();
|
|
47
51
|
});
|
|
52
|
+
}
|
|
48
53
|
super.connectedCallback();
|
|
49
54
|
this.api = new API(this.getApiConfiguration());
|
|
50
55
|
}
|
|
@@ -55,20 +60,21 @@ let Submit = class Submit extends Subscriber(LitElement) {
|
|
|
55
60
|
let method = ((_a = this.getAttribute("method")) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) || "post";
|
|
56
61
|
let postData = PublisherManager.getInstance().get(this.getAncestorAttributeValue("formDataProvider")).get();
|
|
57
62
|
let result = null;
|
|
58
|
-
let
|
|
63
|
+
let dataProvider = this.getAncestorAttributeValue("dataProvider");
|
|
64
|
+
let endPoint = this.endPoint || dataProvider;
|
|
59
65
|
Loader.show();
|
|
60
66
|
switch (method) {
|
|
61
67
|
case "put":
|
|
62
|
-
result = yield ((_b = this.api) === null || _b === void 0 ? void 0 : _b.put(
|
|
68
|
+
result = yield ((_b = this.api) === null || _b === void 0 ? void 0 : _b.put(endPoint, postData));
|
|
63
69
|
break;
|
|
64
70
|
case "delete":
|
|
65
|
-
result = yield ((_c = this.api) === null || _c === void 0 ? void 0 : _c.delete(
|
|
71
|
+
result = yield ((_c = this.api) === null || _c === void 0 ? void 0 : _c.delete(endPoint, postData));
|
|
66
72
|
break;
|
|
67
73
|
case "get":
|
|
68
|
-
result = yield ((_d = this.api) === null || _d === void 0 ? void 0 : _d.get(
|
|
74
|
+
result = yield ((_d = this.api) === null || _d === void 0 ? void 0 : _d.get(endPoint));
|
|
69
75
|
break;
|
|
70
76
|
default:
|
|
71
|
-
result = yield ((_e = this.api) === null || _e === void 0 ? void 0 : _e.post(
|
|
77
|
+
result = yield ((_e = this.api) === null || _e === void 0 ? void 0 : _e.post(endPoint, postData));
|
|
72
78
|
break;
|
|
73
79
|
}
|
|
74
80
|
Loader.hide();
|
|
@@ -76,7 +82,10 @@ let Submit = class Submit extends Subscriber(LitElement) {
|
|
|
76
82
|
result = { messages: [{ content: "Network Error", status: "error" }] };
|
|
77
83
|
let clearedDataProvider = this.getAncestorAttributeValue("clearedDataOnSuccess");
|
|
78
84
|
if (clearedDataProvider) {
|
|
79
|
-
clearedDataProvider.split(" ").forEach(dataProvider => PublisherManager.
|
|
85
|
+
clearedDataProvider.split(" ").forEach(dataProvider => PublisherManager.get(dataProvider).set({}));
|
|
86
|
+
}
|
|
87
|
+
if (this.submitResultKey) {
|
|
88
|
+
result = Objects.traverse(result, this.submitResultKey.split("."), true);
|
|
80
89
|
}
|
|
81
90
|
PublisherManager.getInstance().get(this.getAncestorAttributeValue("submitResultDataProvider")).set(result);
|
|
82
91
|
this.publisher.disabled = false;
|
|
@@ -93,9 +102,15 @@ Submit.styles = css `
|
|
|
93
102
|
user-select: none;
|
|
94
103
|
}
|
|
95
104
|
`;
|
|
105
|
+
__decorate([
|
|
106
|
+
property({ type: String })
|
|
107
|
+
], Submit.prototype, "submitResultKey", void 0);
|
|
96
108
|
__decorate([
|
|
97
109
|
property({ type: Boolean })
|
|
98
110
|
], Submit.prototype, "disabled", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
property({ type: String })
|
|
113
|
+
], Submit.prototype, "endPoint", void 0);
|
|
99
114
|
Submit = __decorate([
|
|
100
115
|
customElement("sonic-submit")
|
|
101
116
|
], Submit);
|
|
@@ -18,7 +18,12 @@ declare const Button_base: {
|
|
|
18
18
|
updateDataValue(): void;
|
|
19
19
|
error: true | null;
|
|
20
20
|
autofocus: true | null;
|
|
21
|
-
disabled: true | null;
|
|
21
|
+
disabled: true | null; /**
|
|
22
|
+
* Un bouton simple avec deux slots, un nommé préfix et un nomé suffix de manière à pouvoir mettre (par exemple) une icone avant ou après le contenu.
|
|
23
|
+
* * L'objet et ses slot sont en display flex avec direction / alignement et justifications configurables
|
|
24
|
+
* * Le bouton est comparable au badge car il possèdent tous les deux les propriétés *type* (primary...), *variant*(outline, ghost), size(xs...)...
|
|
25
|
+
* * Le bouton possède cependant et notamment une propriété href contrairement à un badge
|
|
26
|
+
*/
|
|
22
27
|
required: true | null;
|
|
23
28
|
formDataProvider: string;
|
|
24
29
|
props: any;
|
|
@@ -30,7 +35,6 @@ declare const Button_base: {
|
|
|
30
35
|
noShadowDom: string | null;
|
|
31
36
|
debug: HTMLElement | null;
|
|
32
37
|
defferedDebug: boolean | null;
|
|
33
|
-
makeShadow(props: Record<string, any>, value: any): any;
|
|
34
38
|
dispatchEvent(event: Event): void;
|
|
35
39
|
setAttribute(name: string, value: string): void;
|
|
36
40
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
@@ -99,6 +103,10 @@ export declare class Button extends Button_base {
|
|
|
99
103
|
hasSuffix: boolean;
|
|
100
104
|
prefixes: HTMLElement[];
|
|
101
105
|
suffixes: HTMLElement[];
|
|
106
|
+
/**
|
|
107
|
+
* target
|
|
108
|
+
*/
|
|
109
|
+
target: "_self" | "_blank" | null;
|
|
102
110
|
/**
|
|
103
111
|
* L'url
|
|
104
112
|
*/
|
|
@@ -11,6 +11,7 @@ import { styleMap } from "lit/directives/style-map.js";
|
|
|
11
11
|
import FormElement from "@supersoniks/concorde/core/mixins/FormElement";
|
|
12
12
|
import FormCheckable from "@supersoniks/concorde/core/mixins/FormCheckable";
|
|
13
13
|
import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
|
|
14
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
14
15
|
/**
|
|
15
16
|
* Un bouton simple avec deux slots, un nommé préfix et un nomé suffix de manière à pouvoir mettre (par exemple) une icone avant ou après le contenu.
|
|
16
17
|
* * L'objet et ses slot sont en display flex avec direction / alignement et justifications configurables
|
|
@@ -65,6 +66,10 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
|
|
|
65
66
|
this.loading = false;
|
|
66
67
|
this.hasPrefix = false;
|
|
67
68
|
this.hasSuffix = false;
|
|
69
|
+
/**
|
|
70
|
+
* target
|
|
71
|
+
*/
|
|
72
|
+
this.target = null;
|
|
68
73
|
/**
|
|
69
74
|
* L'url
|
|
70
75
|
*/
|
|
@@ -155,7 +160,7 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
|
|
|
155
160
|
</button>
|
|
156
161
|
`;
|
|
157
162
|
return this.href
|
|
158
|
-
? html `<a href="${this.href}" @click=${this.pushState ? this.handlePushState : null}>${btn}</a>`
|
|
163
|
+
? html `<a href="${this.href}" target=${ifDefined(this.target)} @click=${this.pushState ? this.handlePushState : null}>${btn}</a>`
|
|
159
164
|
: html `${btn}`;
|
|
160
165
|
}
|
|
161
166
|
onSlotChange() {
|
|
@@ -205,13 +210,13 @@ Button.styles = [
|
|
|
205
210
|
|
|
206
211
|
:host a {
|
|
207
212
|
display: contents;
|
|
213
|
+
color:unset;
|
|
208
214
|
}
|
|
209
215
|
|
|
210
216
|
:host button {
|
|
211
217
|
display: flex;
|
|
212
218
|
flex: 1;
|
|
213
219
|
box-sizing: border-box;
|
|
214
|
-
flex-wrap: wrap;
|
|
215
220
|
align-items: center;
|
|
216
221
|
justify-content: center;
|
|
217
222
|
|
|
@@ -540,6 +545,9 @@ __decorate([
|
|
|
540
545
|
__decorate([
|
|
541
546
|
queryAssignedElements({ flatten: true, slot: 'suffix' })
|
|
542
547
|
], Button.prototype, "suffixes", void 0);
|
|
548
|
+
__decorate([
|
|
549
|
+
property({ type: String })
|
|
550
|
+
], Button.prototype, "target", void 0);
|
|
543
551
|
__decorate([
|
|
544
552
|
property({ type: String })
|
|
545
553
|
], Button.prototype, "href", null);
|