@supersoniks/concorde 1.1.28 → 1.1.31

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 (66) hide show
  1. package/concorde-core.bundle.js +23 -23
  2. package/concorde-core.es.js +23 -23
  3. package/core/components/functional/date/date.js +8 -2
  4. package/core/components/functional/list/list.js +17 -11
  5. package/core/components/functional/submit/submit.js +46 -30
  6. package/core/components/functional/subscriber/subscriber.d.ts +2 -1
  7. package/core/components/functional/subscriber/subscriber.js +8 -0
  8. package/core/components/ui/_css/size.d.ts +1 -0
  9. package/core/components/ui/_css/size.js +26 -0
  10. package/core/components/ui/_css/type.d.ts +2 -0
  11. package/core/components/ui/_css/{types.js → type.js} +1 -1
  12. package/core/components/ui/alert/alert.d.ts +1 -1
  13. package/core/components/ui/alert/alert.js +7 -16
  14. package/core/components/ui/badge/badge.d.ts +1 -1
  15. package/core/components/ui/badge/badge.js +7 -6
  16. package/core/components/ui/button/button.d.ts +11 -6
  17. package/core/components/ui/button/button.js +32 -35
  18. package/core/components/ui/captcha/captcha.d.ts +16 -0
  19. package/core/components/ui/captcha/captcha.js +54 -0
  20. package/core/components/ui/card/card-header.js +1 -1
  21. package/core/components/ui/divider/divider.d.ts +1 -1
  22. package/core/components/ui/divider/divider.js +7 -3
  23. package/core/components/ui/form/checkbox/checkbox.d.ts +51 -11
  24. package/core/components/ui/form/checkbox/checkbox.js +10 -6
  25. package/core/components/ui/form/css/form-control.js +56 -31
  26. package/core/components/ui/form/input/input.d.ts +23 -19
  27. package/core/components/ui/form/input/input.js +35 -33
  28. package/core/components/ui/form/radio/radio.js +1 -2
  29. package/core/components/ui/form/select/select.d.ts +9 -9
  30. package/core/components/ui/form/select/select.js +8 -14
  31. package/core/components/ui/form/textarea/textarea.d.ts +18 -17
  32. package/core/components/ui/form/textarea/textarea.js +12 -23
  33. package/core/components/ui/icon/icon.js +4 -0
  34. package/core/components/ui/image/image.d.ts +0 -1
  35. package/core/components/ui/image/image.js +0 -23
  36. package/core/components/ui/pop/pop.d.ts +1 -0
  37. package/core/components/ui/pop/pop.js +8 -0
  38. package/core/components/ui/progress/progress.d.ts +1 -0
  39. package/core/components/ui/progress/progress.js +13 -20
  40. package/core/components/ui/table/table-td.d.ts +1 -0
  41. package/core/components/ui/table/table-td.js +6 -2
  42. package/core/components/ui/table/table-th.js +2 -2
  43. package/core/components/ui/table/table-tr.js +3 -2
  44. package/core/components/ui/table/table.d.ts +1 -1
  45. package/core/components/ui/table/table.js +3 -20
  46. package/core/components/ui/taxonomy/taxonomy.js +2 -1
  47. package/core/components/ui/theme/theme-collection/core-variables.js +19 -8
  48. package/core/components/ui/theme/theme.d.ts +9 -1
  49. package/core/components/ui/theme/theme.js +47 -2
  50. package/core/components/ui/toast/toast-item.js +25 -7
  51. package/core/components/ui/toast/toast.js +6 -2
  52. package/core/components/ui/ui.d.ts +1 -0
  53. package/core/components/ui/ui.js +1 -0
  54. package/core/mixins/Fetcher.js +4 -0
  55. package/core/mixins/FormCheckable.d.ts +3 -5
  56. package/core/mixins/FormCheckable.js +5 -2
  57. package/core/mixins/FormElement.d.ts +3 -2
  58. package/core/mixins/FormElement.js +8 -4
  59. package/core/mixins/FormInput.d.ts +6 -9
  60. package/core/mixins/FormInput.js +1 -3
  61. package/core/utils/PublisherProxy.d.mts +1 -1
  62. package/core/utils/PublisherProxy.mjs +3 -3
  63. package/core/utils/api.js +4 -2
  64. package/mixins.d.ts +8 -6
  65. package/package.json +7 -3
  66. package/core/components/ui/_css/types.d.ts +0 -2
@@ -57,13 +57,17 @@ let SonicDate = class SonicDate extends Subscriber(TemplatesContainer(LitElement
57
57
  * 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.
58
58
  */
59
59
  getDatesParts(start_date, end_date, options) {
60
- const format = new Intl.DateTimeFormat(this.language || this.pageLanguage, options);
61
60
  let start = this.startDateObject;
62
61
  start.setTime(start_date * 1000);
63
62
  let parts = null;
64
63
  if (end_date > 0) {
65
64
  let end = this.endDateObject;
66
65
  end.setTime(end_date * 1000);
66
+ if (start.toJSON().substring(0, 10) != end.toJSON().substring(0, 10)) {
67
+ delete options.hour;
68
+ delete options.minute;
69
+ }
70
+ let format = new Intl.DateTimeFormat(this.language || this.pageLanguage, options);
67
71
  parts = format.formatRangeToParts(start, end);
68
72
  if (this.designMode) {
69
73
  for (let part of parts) {
@@ -85,8 +89,10 @@ let SonicDate = class SonicDate extends Subscriber(TemplatesContainer(LitElement
85
89
  parts.unshift({ type: "from", value: this.duAu[0] + " ", source: "shared" });
86
90
  }
87
91
  }
88
- else
92
+ else {
93
+ let format = new Intl.DateTimeFormat(this.language || this.pageLanguage, options);
89
94
  parts = format.formatToParts(start);
95
+ }
90
96
  parts[0].value = Format.ucFirst(parts[0].value);
91
97
  parts = parts.filter((p) => p.hidden !== true);
92
98
  return parts;
@@ -4,7 +4,7 @@ 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 } from "lit";
7
+ import { html, LitElement, css, nothing } from "lit";
8
8
  import { customElement, property } from "lit/decorators.js";
9
9
  import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
10
10
  import Fetcher from "@supersoniks/concorde/core/mixins/Fetcher";
@@ -18,7 +18,7 @@ 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
- * Extends mixins : Fetcher, [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page)
21
+ * Extends mixins : Fetcher, [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page)
22
22
  *
23
23
  * * Si le composant possède un attribut *fetch*, il charge un contenu via un appel d'api web.<br>
24
24
  * Voir [fetcher](./?path=/docs/core-components-functional-fetch--basic) pour la configuration des autres attributs.
@@ -62,14 +62,13 @@ let List = class List extends Fetcher(Subscriber(TemplatesContainer(LitElement))
62
62
  : html `<sonic-loader mode="inline"></sonic-loader>`;
63
63
  }
64
64
  renderNoResultState() {
65
- return html `
66
- <div class="sonic-no-result-container">
67
- <sonic-icon name="emoji-puzzled" size="lg"></sonic-icon
68
- ><span class="sonic-no-result-text">${this.props}</span>
69
- </div>`;
65
+ return html ` <div class="sonic-no-result-container">
66
+ <sonic-icon name="emoji-puzzled" size="lg"></sonic-icon><span class="sonic-no-result-text">${this.props}</span>
67
+ </div>`;
70
68
  }
71
69
  formatProps() {
72
70
  let props = this.props;
71
+ let response = props._sonic_http_response_;
73
72
  let extractValues = this.hasAttribute("extractValues");
74
73
  //si props n'est pas un tableau on l'adapte
75
74
  if (!Array.isArray(props)) {
@@ -77,9 +76,14 @@ let List = class List extends Fetcher(Subscriber(TemplatesContainer(LitElement))
77
76
  props = Object.entries(props).map(([k, v]) => ({ key: k, value: v }));
78
77
  }
79
78
  else {
80
- props = [props];
79
+ if (!response || response.ok)
80
+ props = [props];
81
+ else {
82
+ props = [];
83
+ }
81
84
  }
82
85
  }
86
+ props._sonic_http_response_ = response;
83
87
  return props;
84
88
  }
85
89
  render() {
@@ -121,12 +125,14 @@ let List = class List extends Fetcher(Subscriber(TemplatesContainer(LitElement))
121
125
  ${repeat(props, (item, index) => item[this.idKey] || index, (item, index) => {
122
126
  let templatePartName = item[this.templateKey];
123
127
  let hasCustomTemplate = templatePartName && this.templateParts[templatePartName];
124
- counter++;
125
- if (hasCustomTemplate)
126
- counter = -1;
127
128
  let key = extractValues ? item.key : index;
129
+ if (key == "_sonic_http_response_")
130
+ return nothing;
128
131
  let pub = this.publisher[key];
129
132
  pub._key_ = key + "";
133
+ counter++;
134
+ if (hasCustomTemplate)
135
+ counter = -1;
130
136
  return (item &&
131
137
  html `
132
138
  <sonic-subscriber
@@ -55,16 +55,17 @@ let Submit = class Submit extends Subscriber(LitElement) {
55
55
  this.api = new API(this.getApiConfiguration());
56
56
  }
57
57
  submit() {
58
- var _a, _b, _c, _d, _e;
58
+ var _a;
59
59
  return __awaiter(this, void 0, void 0, function* () {
60
60
  const formPublisher = PublisherManager.getInstance().get(this.getAncestorAttributeValue("formDataProvider"));
61
61
  //
62
- // Validation du formulaire
62
+ // Validation du formulaire
63
63
  formPublisher.isFormValid = true;
64
64
  formPublisher.invalidate();
65
65
  if (!formPublisher.isFormValid.get())
66
66
  return;
67
- this.publisher.disabled = true;
67
+ if (this.publisher)
68
+ this.publisher.disabled = true;
68
69
  formPublisher.isFormValid;
69
70
  //
70
71
  //Recup données
@@ -76,34 +77,49 @@ let Submit = class Submit extends Subscriber(LitElement) {
76
77
  let dataProvider = this.getAncestorAttributeValue("dataProvider");
77
78
  let endPoint = this.endPoint || dataProvider;
78
79
  Loader.show();
79
- //
80
- //envoi données
81
- switch (method) {
82
- case "put":
83
- result = yield ((_b = this.api) === null || _b === void 0 ? void 0 : _b.put(endPoint, postData, headerData));
84
- break;
85
- case "delete":
86
- result = yield ((_c = this.api) === null || _c === void 0 ? void 0 : _c.delete(endPoint, postData, headerData));
87
- break;
88
- case "get":
89
- result = yield ((_d = this.api) === null || _d === void 0 ? void 0 : _d.get(endPoint));
90
- break;
91
- default:
92
- result = yield ((_e = this.api) === null || _e === void 0 ? void 0 : _e.post(endPoint, postData, headerData));
93
- break;
94
- }
95
- Loader.hide();
96
- if (!result)
97
- result = { messages: [{ content: "Network Error", status: "error" }] };
98
- let clearedDataProvider = this.getAncestorAttributeValue("clearedDataOnSuccess");
99
- if (clearedDataProvider) {
100
- clearedDataProvider.split(" ").forEach(dataProvider => PublisherManager.get(dataProvider).set({}));
80
+ let sendData = () => __awaiter(this, void 0, void 0, function* () {
81
+ var _b, _c, _d, _e;
82
+ //
83
+ //envoi données
84
+ switch (method) {
85
+ case "put":
86
+ result = yield ((_b = this.api) === null || _b === void 0 ? void 0 : _b.put(endPoint, postData, headerData));
87
+ break;
88
+ case "delete":
89
+ result = yield ((_c = this.api) === null || _c === void 0 ? void 0 : _c.delete(endPoint, postData, headerData));
90
+ break;
91
+ case "get":
92
+ result = yield ((_d = this.api) === null || _d === void 0 ? void 0 : _d.get(endPoint, headerData));
93
+ break;
94
+ default:
95
+ result = yield ((_e = this.api) === null || _e === void 0 ? void 0 : _e.post(endPoint, postData, headerData));
96
+ break;
97
+ }
98
+ Loader.hide();
99
+ //Je garde ça, mais normalement il y a toujours quelquechose
100
+ if (!result)
101
+ result = { messages: [{ content: "Network Error", status: "error" }] };
102
+ let clearedDataProvider = this.getAncestorAttributeValue("clearedDataOnSuccess");
103
+ if (clearedDataProvider) {
104
+ clearedDataProvider.split(" ").forEach((dataProvider) => PublisherManager.get(dataProvider).set({}));
105
+ }
106
+ if (this.submitResultKey) {
107
+ result = Objects.traverse(result, this.submitResultKey.split("."), true);
108
+ }
109
+ PublisherManager.getInstance().get(this.getAncestorAttributeValue("submitResultDataProvider")).set(result);
110
+ if (this.publisher)
111
+ this.publisher.disabled = false;
112
+ });
113
+ if (formPublisher.needsCaptchaValidation.get()) {
114
+ formPublisher.captchaToken = "request_token";
115
+ formPublisher.captchaToken.onAssign((token) => {
116
+ if (token != "request_token")
117
+ sendData();
118
+ });
101
119
  }
102
- if (this.submitResultKey) {
103
- result = Objects.traverse(result, this.submitResultKey.split("."), true);
120
+ else {
121
+ sendData();
104
122
  }
105
- PublisherManager.getInstance().get(this.getAncestorAttributeValue("submitResultDataProvider")).set(result);
106
- this.publisher.disabled = false;
107
123
  });
108
124
  }
109
125
  render() {
@@ -111,7 +127,7 @@ let Submit = class Submit extends Subscriber(LitElement) {
111
127
  }
112
128
  };
113
129
  Submit.styles = css `
114
- [data-disabled]{
130
+ [data-disabled] {
115
131
  opacity: 0.3;
116
132
  pointer-events: none;
117
133
  user-select: none;
@@ -1,8 +1,9 @@
1
- import { LitElement } from "lit";
1
+ import { LitElement, PropertyValues } from "lit";
2
2
  declare const SonicSubscriber_base: (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/Subscriber").SubscriberInterface) & typeof LitElement;
3
3
  export declare class SonicSubscriber extends SonicSubscriber_base {
4
4
  noAutofill: boolean;
5
5
  connectedCallback(): void;
6
+ updated(changedProperties: PropertyValues): void;
6
7
  render(): import("lit-html").TemplateResult<1>;
7
8
  }
8
9
  export {};
@@ -20,6 +20,14 @@ let SonicSubscriber = class SonicSubscriber extends Subscriber(LitElement) {
20
20
  this.noShadowDom = "";
21
21
  super.connectedCallback();
22
22
  }
23
+ updated(changedProperties) {
24
+ super.updated(changedProperties);
25
+ // Display contents, notamment pour les layout dans tableaux
26
+ if (this.children.length == 0)
27
+ this.style.display = "none";
28
+ else
29
+ this.style.display = "contents";
30
+ }
23
31
  render() {
24
32
  return html `<slot></slot> `;
25
33
  }
@@ -0,0 +1 @@
1
+ export declare const fontSize: import("lit").CSSResult;
@@ -0,0 +1,26 @@
1
+ import { css } from "lit";
2
+ export const fontSize = css `
3
+ /*SIZES*/
4
+ :host {
5
+ --sc-fs: 1rem;
6
+ font-size: var(--sc-fs);
7
+ }
8
+ :host([size="2xs"]) {
9
+ --sc-fs: 0.68rem;
10
+ }
11
+ :host([size="xs"]) {
12
+ --sc-fs: 0.75rem;
13
+ }
14
+ :host([size="sm"]) {
15
+ --sc-fs: 0.875rem;
16
+ }
17
+ :host([size="lg"]) {
18
+ --sc-fs: 1.125rem;
19
+ }
20
+ :host([size="xl"]) {
21
+ --sc-fs: 1.25rem;
22
+ }
23
+ :host([size="2xl"]) {
24
+ --sc-fs: 1.5rem;
25
+ }
26
+ `;
@@ -0,0 +1,2 @@
1
+ export declare const typeColor: import("lit").CSSResult;
2
+ export declare const typesBg: import("lit").CSSResult;
@@ -1,5 +1,5 @@
1
1
  import { css } from "lit";
2
- export const typesColor = css `
2
+ export const typeColor = css `
3
3
  :host{
4
4
  --sc-color:inherit;
5
5
  color:var(--sc-color);
@@ -13,7 +13,7 @@ export declare class Alert extends LitElement {
13
13
  * Peut être renseigné dans le slot pour créer des messages plus complexes
14
14
  */
15
15
  text: string;
16
- size: "xs" | "sm" | "md" | "lg";
16
+ size?: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
17
17
  background: boolean;
18
18
  status: "default" | "error" | "warning" | "primary" | "info";
19
19
  render(): import("lit-html").TemplateResult<1>;
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { html, LitElement, css, nothing } from "lit";
8
8
  import { customElement, property } from "lit/decorators.js";
9
+ import { fontSize } from "@supersoniks/concorde/core/components/ui/_css/size";
9
10
  const icon = {
10
11
  warning: "warning-circled-outline",
11
12
  success: "check-circled-outline",
@@ -29,7 +30,6 @@ let Alert = class Alert extends LitElement {
29
30
  * Peut être renseigné dans le slot pour créer des messages plus complexes
30
31
  */
31
32
  this.text = "";
32
- this.size = "md";
33
33
  this.background = false;
34
34
  this.status = "default";
35
35
  }
@@ -39,24 +39,22 @@ let Alert = class Alert extends LitElement {
39
39
  ${this.status && html `<sonic-icon name=${icon[this.status]}></sonic-icon>`}
40
40
  </div>
41
41
  <div >
42
- ${this.label ? html `<span class="label">${this.label} :</span>` : nothing}
43
- ${this.text} <slot></slot>
42
+ ${this.label ? html `<span class="label">${this.label}</span>` : nothing}
43
+ <slot>${this.text}</slot>
44
44
  </div>
45
45
  </div>`;
46
46
  }
47
47
  };
48
48
  Alert.styles = [
49
+ fontSize,
49
50
  css `
50
51
  :host {
51
52
  --sc-alert-color: inherit;
52
53
  --sc-alert-rounded: var(--sc-rounded);
53
54
  --sc-alert-fw: var(--sc-font-weight-base);
54
55
  --sc-alert-fst: var(--sc-font-style-base);
55
- --sc-alert-fs: 1rem;
56
56
  --sc-alert-label-fw: bold;
57
-
58
57
  display: block;
59
- font-size: var(--sc-alert-fs);
60
58
  font-weight: var(--sc-alert-fw);
61
59
  font-style: var(--sc-alert-fst);
62
60
  }
@@ -69,7 +67,7 @@ Alert.styles = [
69
67
  line-height: 1.2;
70
68
  border-radius: var(--sc-alert-rounded);
71
69
  }
72
-
70
+ z
73
71
  .label {
74
72
  font-weight: var(--sc-alert-label-fw);
75
73
  }
@@ -110,15 +108,8 @@ Alert.styles = [
110
108
  position: relative;
111
109
  }
112
110
 
113
- /*SIZE*/
114
- :host([size="xs"]) {
115
- --sc-alert-fs: 0.75rem;
116
- }
117
- :host([size="sm"]) {
118
- --sc-alert-fs: 0.85rem;
119
- }
120
- :host([size="lg"]) {
121
- --sc-alert-fs: 1.2rem;
111
+ slot {
112
+ display: block;
122
113
  }
123
114
 
124
115
  /*Rounded*/
@@ -19,6 +19,6 @@ export declare class Badge extends LitElement {
19
19
  /**
20
20
  * Taille du composant, implique notamment des modifications de typo et de marge interne
21
21
  */
22
- size: "xs" | "sm" | "md" | "lg" | "xl";
22
+ size?: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
23
23
  render(): import("lit-html").TemplateResult<1>;
24
24
  }
@@ -25,10 +25,6 @@ let Badge = class Badge extends LitElement {
25
25
  * * outline : composant légé avec une bordure
26
26
  */
27
27
  this.variant = "default";
28
- /**
29
- * Taille du composant, implique notamment des modifications de typo et de marge interne
30
- */
31
- this.size = "md";
32
28
  }
33
29
  render() {
34
30
  return html `
@@ -42,7 +38,7 @@ Badge.styles = [
42
38
  css `
43
39
  :host {
44
40
  --sc-badge-gap: 0.3em;
45
- --sc-badge-py: 0.15em;
41
+ --sc-badge-py: 0.16em;
46
42
  --sc-badge-px: 0.66em;
47
43
  --sc-badge-fs: 1rem;
48
44
 
@@ -53,7 +49,7 @@ Badge.styles = [
53
49
  --sc-badge-border-color: transparent;
54
50
  --sc-badge-border: var(--sc-badge-border-with) solid var(--sc-badge-border-color);
55
51
 
56
- --sc-badge-rounded: 9999px;
52
+ --sc-badge-rounded: calc(var(--sc-rounded) * 1000);
57
53
  --sc-badge-line-height: 1.15;
58
54
  --sc-badge-fw: var(--sc-font-weight-base);
59
55
 
@@ -108,6 +104,11 @@ Badge.styles = [
108
104
  gap: var(--sc-badge-gap);
109
105
  }
110
106
 
107
+
108
+ :host([size="2xs"]) {
109
+ --sc-badge-fs: 0.58rem;
110
+ --sc-badge-gap: 0.3em;
111
+ }
111
112
  :host([size="xs"]) {
112
113
  --sc-badge-fs: 0.68rem;
113
114
  --sc-badge-gap: 0.35em;
@@ -17,10 +17,11 @@ declare const Button_base: {
17
17
  initPublisher(): void;
18
18
  getFormPublisher(): any;
19
19
  updateDataValue(): void;
20
- error: true | null;
20
+ handleBlur(e?: any): void;
21
+ error: boolean;
21
22
  autofocus: boolean;
23
+ required: boolean;
22
24
  disabled: true | null;
23
- required: true | null;
24
25
  formDataProvider: string;
25
26
  props: any;
26
27
  isConnected: boolean;
@@ -62,11 +63,11 @@ export declare class Button extends Button_base {
62
63
  * * gost : composant super léger visuellement
63
64
  * * outline : composant légé avec une bordure
64
65
  */
65
- variant: "default" | "ghost" | "outline" | "unstyled";
66
+ variant: "default" | "ghost" | "outline" | "unstyled" | "link";
66
67
  /**
67
68
  * Taille du composant, implique notamment des modifications de typo et de marge interne
68
69
  */
69
- size: "xs" | "sm" | "md" | "lg" | "xl";
70
+ size?: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
70
71
  /**
71
72
  * Forme du bouton, permet de le forcer en carré ou cercle
72
73
  */
@@ -86,11 +87,15 @@ export declare class Button extends Button_base {
86
87
  /**
87
88
  * Propriété text-align du bouton
88
89
  */
89
- align: "" | "right" | "left" | "center";
90
+ align?: "right" | "left" | "center";
90
91
  /**
91
92
  * Propriété min-width du bouton
92
93
  */
93
94
  minWidth: string;
95
+ /**
96
+ * Si un bouton n'a qu'une icone pour contenu, agrandi l'icone pour des raisons d'équilibre
97
+ */
98
+ icon: boolean;
94
99
  /**
95
100
  * mode d'activation du bouton :
96
101
  * - strict : l'url courante match exactement avec le href du bouton
@@ -121,7 +126,7 @@ export declare class Button extends Button_base {
121
126
  /**
122
127
  * Si présent on passe en mode pushstate
123
128
  */
124
- pushState: null;
129
+ pushState: boolean;
125
130
  active: boolean;
126
131
  handleNavigation(e: Event): void;
127
132
  handleChange(e?: any): void;
@@ -12,6 +12,7 @@ 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
14
  import { ifDefined } from "lit/directives/if-defined.js";
15
+ import { fontSize } from "@supersoniks/concorde/core/components/ui/_css/size";
15
16
  const tagName = 'sonic-button';
16
17
  /**
17
18
  * 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.
@@ -32,10 +33,6 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
32
33
  * * outline : composant légé avec une bordure
33
34
  */
34
35
  this.variant = "default";
35
- /**
36
- * Taille du composant, implique notamment des modifications de typo et de marge interne
37
- */
38
- this.size = "md";
39
36
  /**
40
37
  * Forme du bouton, permet de le forcer en carré ou cercle
41
38
  */
@@ -52,14 +49,14 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
52
49
  * Propriété justify-content de *flex* appliquée à l'élément contenant les *slots*
53
50
  */
54
51
  this.justify = "center";
55
- /**
56
- * Propriété text-align du bouton
57
- */
58
- this.align = "center";
59
52
  /**
60
53
  * Propriété min-width du bouton
61
54
  */
62
55
  this.minWidth = "0";
56
+ /**
57
+ * Si un bouton n'a qu'une icone pour contenu, agrandi l'icone pour des raisons d'équilibre
58
+ */
59
+ this.icon = false;
63
60
  /**
64
61
  * mode d'activation du bouton :
65
62
  * - strict : l'url courante match exactement avec le href du bouton
@@ -82,7 +79,7 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
82
79
  /**
83
80
  * Si présent on passe en mode pushstate
84
81
  */
85
- this.pushState = null;
82
+ this.pushState = false;
86
83
  this.active = false;
87
84
  this._location = "";
88
85
  }
@@ -163,6 +160,7 @@ let Button = class Button extends FormCheckable(FormElement(Subscriber(LitElemen
163
160
  }
164
161
  };
165
162
  Button.styles = [
163
+ fontSize,
166
164
  css `
167
165
  * {
168
166
  box-sizing: border-box;
@@ -171,24 +169,24 @@ Button.styles = [
171
169
  --sc-btn-gap: 0.35em;
172
170
  --sc-btn-py: 0.25em;
173
171
  --sc-btn-px: 1.1em;
174
- --sc-btn-fs: 1rem;
172
+ --sc-btn-fs: var(--sc-fs, 1rem);
175
173
  --sc-btn-fw: var(--sc-btn-font-weight);
176
174
  --sc-btn-ff: var(--sc-btn-font-family);
177
175
 
178
- --sc-btn-height: var(--sc-form-height, 2.5em);
179
- --sc-btn-color: var(--sc-base-content, #1f2937);
180
- --sc-btn-bg: var(--sc-base-100, #e5e7eb);
176
+ --sc-btn-height: var(--sc-form-height);
177
+ --sc-btn-color: var(--sc-base-content);
178
+ --sc-btn-bg: var(--sc-base-100);
181
179
 
182
180
  --sc-btn-border-style: solid;
183
- --sc-btn-border-with: var(--sc-form-border-width, 0.1rem);
181
+ --sc-btn-border-with: var(--sc-form-border-width);
184
182
  --sc-btn-border-color: transparent;
185
183
 
186
184
  --sc-btn-outline-bg-hover: var(--sc-base-100);
187
185
  --sc-btn-ghost-bg-hover: var(--sc-base-100);
188
186
 
189
187
  --sc-btn-active-color: var(--sc-base);
190
- --sc-btn-hover-filter: brightness(0.97);
191
- --sc-btn-active-filter: brightness(0.96);
188
+ --sc-btn-hover-filter: brightness(0.98);
189
+ --sc-btn-active-filter: brightness(0.97);
192
190
  --sc-btn-active-bg: var(--sc-base-content);
193
191
 
194
192
  --sc-item-rounded-tr: var(--sc-btn-rounded);
@@ -279,28 +277,13 @@ Button.styles = [
279
277
  --sc-btn-bg: var(--sc-base-600);
280
278
  }
281
279
 
282
- /*SIZE*/
283
- :host([size="2xs"]) {
284
- --sc-btn-fs: 0.6rem;
285
- }
286
- :host([size="xs"]) {
287
- --sc-btn-fs: 0.75rem;
288
- }
289
- :host([size="sm"]) {
290
- --sc-btn-fs: 0.85rem;
291
- }
292
- :host([size="lg"]) {
293
- --sc-btn-fs: 1.2rem;
294
- }
295
- :host([size="xl"]) {
296
- --sc-btn-fs: 1.5rem;
297
- }
298
280
 
299
281
  /*UNSTYLED*/
282
+ :host([variant="unstyled"]),
300
283
  :host([variant="unstyled"]) button {
301
284
  all: unset;
285
+ display: contents;
302
286
  transition: 0.1s;
303
- display: inline-flex;
304
287
  cursor: pointer;
305
288
  --sc-btn-height: auto;
306
289
  --sc-btn-width: auto;
@@ -358,12 +341,16 @@ Button.styles = [
358
341
  }
359
342
 
360
343
  /*OUTLINE*/
361
- :host([variant="link"]) {
344
+ :host([variant="link"]:not([size])) {
362
345
  vertical-align: baseline;
363
346
  margin-left:.25em;
364
347
  margin-right:.25em;
365
348
  }
366
349
 
350
+ :host([variant="link"]:not([size])) {
351
+ font-size: inherit;
352
+ }
353
+
367
354
  :host([variant="link"]) button {
368
355
  text-decoration: underline;
369
356
  padding: 0;
@@ -448,10 +435,17 @@ Button.styles = [
448
435
  permet de tous les avoir alignés dans un menu
449
436
  */
450
437
  ::slotted(sonic-icon) {
451
- min-width: 1.3em;
438
+ min-width: 1.28em;
452
439
  text-align: center;
453
440
  }
454
441
 
442
+
443
+ /*BOUTON Avec icone seulement*/
444
+ :host([icon]) ::slotted(sonic-icon) {
445
+ font-size: 1.35em;
446
+ }
447
+
448
+
455
449
  /*Tooltip ne joue pas sur le layout*/
456
450
  sonic-tooltip {
457
451
  display: contents;
@@ -530,6 +524,9 @@ __decorate([
530
524
  __decorate([
531
525
  property({ type: String })
532
526
  ], Button.prototype, "minWidth", void 0);
527
+ __decorate([
528
+ property({ type: Boolean, reflect: true })
529
+ ], Button.prototype, "icon", void 0);
533
530
  __decorate([
534
531
  property({ type: String })
535
532
  ], Button.prototype, "autoActive", void 0);
@@ -0,0 +1,16 @@
1
+ import { LitElement } from "lit";
2
+ declare const Captcha_base: (new (...args: any[]) => import("../../../mixins/Subscriber").SubscriberInterface) & typeof LitElement;
3
+ /**
4
+ * 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.
5
+ * * L'objet et ses slot sont en display flex avec direction / alignement et justifications configurables
6
+ * * Le bouton est comparable au badge car il possèdent tous les deux les propriétés *type* (primary...), *variant*(outline, ghost), size(xs...)...
7
+ * * Le bouton possède cependant et notamment une propriété href contrairement à un badge
8
+ */
9
+ export declare class Captcha extends Captcha_base {
10
+ key: string;
11
+ formPublisher: any;
12
+ connectedCallback(): void;
13
+ requestToken(): void;
14
+ protected render(): import("lit-html").TemplateResult<1>;
15
+ }
16
+ export {};