@supersoniks/concorde 1.1.42 → 1.1.44

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 (189) hide show
  1. package/components.js +2 -3
  2. package/concorde-core.bundle.js +37 -35
  3. package/concorde-core.es.js +5283 -4453
  4. package/core/_types/types.d.ts +31 -0
  5. package/core/_types/types.js +2 -0
  6. package/core/components/functional/date/date.d.ts +13 -5
  7. package/core/components/functional/date/date.js +57 -38
  8. package/core/components/functional/example/example.d.ts +1 -1
  9. package/core/components/functional/example/example.js +1 -1
  10. package/core/components/functional/fetch/fetch.d.ts +45 -6
  11. package/core/components/functional/fetch/fetch.js +2 -6
  12. package/core/components/functional/functional.d.ts +2 -0
  13. package/core/components/functional/functional.js +2 -0
  14. package/core/components/functional/if/if.d.ts +3 -0
  15. package/core/components/functional/if/if.js +6 -12
  16. package/core/components/functional/if/if.test.d.ts +1 -0
  17. package/core/components/functional/if/if.test.js +44 -0
  18. package/core/components/functional/list/list.d.ts +44 -12
  19. package/core/components/functional/list/list.js +54 -49
  20. package/core/components/functional/mix/mix.d.ts +22 -0
  21. package/core/components/functional/mix/mix.js +102 -0
  22. package/core/components/functional/queue/queue.d.ts +27 -5
  23. package/core/components/functional/queue/queue.js +88 -26
  24. package/core/components/functional/router/redirect.d.ts +11 -2
  25. package/core/components/functional/router/redirect.js +7 -12
  26. package/core/components/functional/router/router.d.ts +15 -1
  27. package/core/components/functional/router/router.js +11 -16
  28. package/core/components/functional/sdui/SDUIDescriptorTransformer.d.ts +1 -2
  29. package/core/components/functional/sdui/SDUIDescriptorTransformer.js +56 -45
  30. package/core/components/functional/sdui/default-library.json +108 -0
  31. package/core/components/functional/sdui/sdui-utils.d.ts +5 -0
  32. package/core/components/functional/sdui/sdui-utils.js +63 -0
  33. package/core/components/functional/sdui/sdui.d.ts +21 -13
  34. package/core/components/functional/sdui/sdui.js +70 -44
  35. package/core/components/functional/sdui/types.d.ts +10 -8
  36. package/core/components/functional/states/states.d.ts +20 -4
  37. package/core/components/functional/states/states.js +15 -20
  38. package/core/components/functional/submit/submit.d.ts +16 -1
  39. package/core/components/functional/submit/submit.js +95 -25
  40. package/core/components/functional/subscriber/subscriber.d.ts +4 -1
  41. package/core/components/functional/subscriber/subscriber.js +1 -6
  42. package/core/components/functional/value/value.d.ts +7 -0
  43. package/core/components/functional/value/value.js +26 -0
  44. package/core/components/ui/_css/scroll.js +6 -7
  45. package/core/components/ui/_css/size.d.ts +1 -0
  46. package/core/components/ui/_css/size.js +3 -1
  47. package/core/components/ui/alert/alert.d.ts +2 -2
  48. package/core/components/ui/alert/alert.js +11 -16
  49. package/core/components/ui/badge/badge.d.ts +3 -1
  50. package/core/components/ui/badge/badge.js +36 -22
  51. package/core/components/ui/button/button.d.ts +28 -23
  52. package/core/components/ui/button/button.js +60 -43
  53. package/core/components/ui/captcha/captcha.d.ts +14 -2
  54. package/core/components/ui/captcha/captcha.js +18 -13
  55. package/core/components/ui/card/card-footer.js +1 -8
  56. package/core/components/ui/card/card-header-descripton.js +3 -9
  57. package/core/components/ui/card/card-header.js +6 -7
  58. package/core/components/ui/card/card-main.js +0 -5
  59. package/core/components/ui/card/card.d.ts +1 -1
  60. package/core/components/ui/card/card.js +30 -12
  61. package/core/components/ui/divider/divider.d.ts +2 -0
  62. package/core/components/ui/divider/divider.js +43 -16
  63. package/core/components/ui/form/checkbox/checkbox.d.ts +86 -25
  64. package/core/components/ui/form/checkbox/checkbox.js +53 -28
  65. package/core/components/ui/form/css/form-control.d.ts +2 -0
  66. package/core/components/ui/form/css/form-control.js +145 -67
  67. package/core/components/ui/form/fieldset/fieldset.d.ts +8 -1
  68. package/core/components/ui/form/fieldset/fieldset.js +45 -8
  69. package/core/components/ui/form/fieldset/legend-description.js +0 -5
  70. package/core/components/ui/form/fieldset/legend.js +3 -6
  71. package/core/components/ui/form/form-actions/form-actions.d.ts +2 -0
  72. package/core/components/ui/form/form-actions/form-actions.js +26 -11
  73. package/core/components/ui/form/form-layout/form-layout.d.ts +5 -2
  74. package/core/components/ui/form/form-layout/form-layout.js +31 -9
  75. package/core/components/ui/form/input/input.d.ts +26 -24
  76. package/core/components/ui/form/input/input.js +87 -52
  77. package/core/components/ui/form/input/password-helper.d.ts +1 -1
  78. package/core/components/ui/form/input/password-helper.js +4 -3
  79. package/core/components/ui/form/input/same-value-helper.d.ts +1 -1
  80. package/core/components/ui/form/input/same-value-helper.js +3 -2
  81. package/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +2 -3
  82. package/core/components/ui/form/input-autocomplete/input-autocomplete.js +2 -6
  83. package/core/components/ui/form/radio/radio.d.ts +6 -0
  84. package/core/components/ui/form/radio/radio.js +7 -12
  85. package/core/components/ui/form/select/select.d.ts +25 -8
  86. package/core/components/ui/form/select/select.js +72 -41
  87. package/core/components/ui/form/textarea/textarea.d.ts +21 -19
  88. package/core/components/ui/form/textarea/textarea.js +29 -36
  89. package/core/components/ui/group/group.d.ts +11 -1
  90. package/core/components/ui/group/group.js +79 -17
  91. package/core/components/ui/icon/icon.d.ts +10 -3
  92. package/core/components/ui/icon/icon.js +16 -15
  93. package/core/components/ui/icon/icons.js +25 -20
  94. package/core/components/ui/icon/icons.json +1 -1
  95. package/core/components/ui/image/image.js +0 -5
  96. package/core/components/ui/link/link.d.ts +1 -1
  97. package/core/components/ui/link/link.js +2 -6
  98. package/core/components/ui/loader/loader.d.ts +1 -1
  99. package/core/components/ui/loader/loader.js +3 -9
  100. package/core/components/ui/menu/menu-item.js +4 -9
  101. package/core/components/ui/menu/menu.d.ts +9 -1
  102. package/core/components/ui/menu/menu.js +182 -27
  103. package/core/components/ui/modal/modal-actions.js +1 -6
  104. package/core/components/ui/modal/modal-close.d.ts +1 -0
  105. package/core/components/ui/modal/modal-close.js +14 -10
  106. package/core/components/ui/modal/modal-content.js +0 -5
  107. package/core/components/ui/modal/modal-subtitle.js +2 -6
  108. package/core/components/ui/modal/modal-title.js +0 -5
  109. package/core/components/ui/modal/modal.d.ts +7 -7
  110. package/core/components/ui/modal/modal.js +37 -37
  111. package/core/components/ui/pop/pop.d.ts +6 -5
  112. package/core/components/ui/pop/pop.js +57 -57
  113. package/core/components/ui/progress/progress.js +34 -32
  114. package/core/components/ui/table/table-caption.js +5 -10
  115. package/core/components/ui/table/table-tbody.js +10 -14
  116. package/core/components/ui/table/table-td.d.ts +2 -0
  117. package/core/components/ui/table/table-td.js +8 -5
  118. package/core/components/ui/table/table-tfoot.js +5 -7
  119. package/core/components/ui/table/table-th.d.ts +2 -0
  120. package/core/components/ui/table/table-th.js +12 -9
  121. package/core/components/ui/table/table-thead.js +1 -6
  122. package/core/components/ui/table/table-tr.js +4 -6
  123. package/core/components/ui/table/table.d.ts +0 -3
  124. package/core/components/ui/table/table.js +14 -31
  125. package/core/components/ui/theme/theme-collection/core-variables.js +13 -11
  126. package/core/components/ui/theme/theme-collection/dark.js +1 -1
  127. package/core/components/ui/theme/theme.d.ts +1 -6
  128. package/core/components/ui/theme/theme.js +19 -46
  129. package/core/components/ui/toast/message-subscriber.d.ts +16 -7
  130. package/core/components/ui/toast/message-subscriber.js +10 -8
  131. package/core/components/ui/toast/toast-item.js +1 -1
  132. package/core/components/ui/toast/toast.d.ts +3 -2
  133. package/core/components/ui/toast/toast.js +33 -19
  134. package/core/components/ui/toast/types.d.ts +3 -2
  135. package/core/components/ui/tooltip/tooltip.d.ts +1 -0
  136. package/core/components/ui/tooltip/tooltip.js +36 -15
  137. package/core/components/ui/ui.d.ts +1 -1
  138. package/core/components/ui/ui.js +1 -4
  139. package/core/core.js +5 -6
  140. package/core/mixins/Fetcher.d.ts +20 -13
  141. package/core/mixins/Fetcher.js +44 -19
  142. package/core/mixins/FormCheckable.d.ts +25 -13
  143. package/core/mixins/FormCheckable.js +180 -23
  144. package/core/mixins/FormElement.d.ts +17 -9
  145. package/core/mixins/FormElement.js +56 -39
  146. package/core/mixins/FormInput.d.ts +22 -12
  147. package/core/mixins/FormInput.js +4 -3
  148. package/core/mixins/Subscriber.d.ts +12 -8
  149. package/core/mixins/Subscriber.js +51 -48
  150. package/core/mixins/TemplatesContainer.d.ts +2 -1
  151. package/core/mixins/TemplatesContainer.js +2 -2
  152. package/core/utils/Arrays.d.ts +15 -15
  153. package/core/utils/Arrays.js +12 -9
  154. package/core/utils/DataBindObserver.d.ts +18 -11
  155. package/core/utils/DataBindObserver.js +47 -54
  156. package/core/utils/Electron.d.ts +5 -1
  157. package/core/utils/Electron.js +4 -2
  158. package/core/utils/HTML.d.ts +9 -2
  159. package/core/utils/HTML.js +24 -5
  160. package/core/utils/LocationHandler.d.ts +6 -5
  161. package/core/utils/LocationHandler.js +27 -16
  162. package/core/utils/Objects.d.ts +7 -4
  163. package/core/utils/Objects.js +37 -9
  164. package/core/utils/{PublisherProxy.d.mts → PublisherProxy.d.ts} +49 -34
  165. package/core/utils/{PublisherProxy.mjs → PublisherProxy.js} +107 -77
  166. package/core/utils/Utils.d.ts +3 -0
  167. package/core/utils/Utils.js +18 -0
  168. package/core/utils/api.d.ts +26 -9
  169. package/core/utils/api.js +62 -45
  170. package/img/concorde-logo.svg +1 -0
  171. package/img/concorde.png +0 -0
  172. package/img/concorde_def.png +0 -0
  173. package/mixins.d.ts +53 -29
  174. package/mixins.js +3 -4
  175. package/package.json +51 -12
  176. package/svg/regular/plane.svg +1 -0
  177. package/svg/solid/plane.svg +1 -0
  178. package/test-utils/TestUtils.d.ts +4 -0
  179. package/test-utils/TestUtils.js +12 -0
  180. package/utils.d.ts +3 -1
  181. package/utils.js +7 -5
  182. package/core/components/functional/configuration/configuration.d.ts +0 -5
  183. package/core/components/functional/configuration/configuration.js +0 -22
  184. package/core/components/ui/tabs/tab.d.ts +0 -6
  185. package/core/components/ui/tabs/tab.js +0 -46
  186. package/core/components/ui/tabs/tabs.d.ts +0 -15
  187. package/core/components/ui/tabs/tabs.js +0 -129
  188. package/core/components/ui/taxonomy/taxonomy.d.ts +0 -41
  189. package/core/components/ui/taxonomy/taxonomy.js +0 -115
@@ -1,10 +1,10 @@
1
- import { LitElement } from "lit";
1
+ import { LitElement, PropertyValues } from "lit";
2
2
  declare const Input_base: {
3
3
  new (...args: any[]): {
4
4
  validateFormElement(): void;
5
5
  forceAutoFill: boolean;
6
- _type: "number" | "search" | "file" | "button" | "password" | "url" | "color" | "hidden" | "time" | "image" | "text" | "reset" | "submit" | "month" | "week" | "checkbox" | "radio" | "range" | "tel" | "email" | "date" | "datetime-local";
7
- type: "number" | "search" | "file" | "button" | "password" | "url" | "color" | "hidden" | "time" | "image" | "text" | "reset" | "submit" | "month" | "week" | "checkbox" | "radio" | "range" | "tel" | "email" | "date" | "datetime-local";
6
+ _type: "number" | "search" | "file" | "button" | "url" | "color" | "hidden" | "time" | "image" | "text" | "reset" | "submit" | "month" | "week" | "checkbox" | "radio" | "range" | "tel" | "email" | "date" | "datetime-local" | "password";
7
+ type: "number" | "search" | "file" | "button" | "url" | "color" | "hidden" | "time" | "image" | "text" | "reset" | "submit" | "month" | "week" | "checkbox" | "radio" | "range" | "tel" | "email" | "date" | "datetime-local" | "password";
8
8
  _description?: string | undefined;
9
9
  description: string | undefined;
10
10
  _label?: string | undefined;
@@ -13,31 +13,27 @@ declare const Input_base: {
13
13
  autocomplete?: "url" | "name" | "language" | "on" | "tel" | "email" | "honorific-prefix" | "given-name" | "additional-name" | "family-name" | "honorific-suffix" | "nickname" | "username" | "new-password" | "current-password" | "one-time-code" | "organization-title" | "organization" | "street-address" | "address-line1" | "address-line2" | "address-line3" | "address-level4" | "address-level3" | "address-level2" | "address-level1" | "country" | "country-name" | "postal-code" | "cc-name" | "cc-given-name" | "cc-additional-name" | "cc-family-name" | "cc-number" | "cc-exp" | "cc-exp-month" | "cc-exp-year" | "cc-csc" | "cc-type" | "transaction-currency" | "transaction-amount" | "bday" | "bday-day" | "bday-month" | "bday-year" | "sex" | "tel-country-code" | "tel-national" | "tel-area-code" | "tel-local" | "tel-extension" | "impp" | "photo" | undefined;
14
14
  getFormPublisher(): any;
15
15
  updateDataValue(): void;
16
- handleChange(e?: any): void;
17
- handleBlur(e?: any): void;
18
- getValueForFormPublisher(): any;
16
+ handleChange(e?: Event | undefined): void;
17
+ handleBlur(e?: Event | undefined): void;
18
+ getValueForFormPublisher(): string | object | string[] | null | undefined;
19
+ focus?: (() => void) | undefined;
20
+ shadowRoot?: ShadowRoot | undefined;
19
21
  error: boolean;
20
22
  autofocus: boolean;
21
23
  required: boolean;
22
24
  disabled: true | null;
23
25
  formDataProvider: string;
24
- _value: any;
25
- value: any;
26
- /**
27
- * ### Le composent sonic-input étend les mixins FormInput, FormElement et Subscriber
28
- * **FormElement :**
29
- * * La propriété value est remplie automatiquement a l'aide de l'attribut name renseigné, ceci en prenant la valeur de la propriété du même nom dans les données du dataprovider associé.
30
- * * Par défault lorsque l'on édite l'input, la valeur est également mise à jour via le même dataprovider
31
- * * On peut cependant décider de mettre à jour la donnée à une autre adresse en renseigne l'attribut *formDataProvider*.
32
- * * Par conséquent on peut par exemple le lier à un composant *queue* (via sa propriété *dataFilterProvider*) de manière à appeller en auto une api avec des filtres.
33
- * **FormInput :**
34
- * Uniquement des propriétés classiques d'un input HTML.
35
- */
26
+ ariaLabelledby?: string | undefined;
27
+ ariaLabel?: string | undefined;
28
+ _value: string | object | string[] | null | undefined;
29
+ value: string | object | string[] | null | undefined;
36
30
  _name: string;
37
31
  name: string;
38
- props: any;
39
- propertyMap: Object;
32
+ props: import("../../../../_types/types").CoreJSType;
33
+ propertyMap: object;
40
34
  isConnected: boolean;
35
+ children: HTMLCollection;
36
+ appendChild(node: Node): Node;
41
37
  getAncestorAttributeValue(attributeName: string): string;
42
38
  hasAncestorAttribute(attributeName: string): boolean;
43
39
  querySelectorAll(selector: string): NodeListOf<Element>;
@@ -54,13 +50,16 @@ declare const Input_base: {
54
50
  removeAttribute(name: string): void;
55
51
  initPublisher(): void;
56
52
  getApiConfiguration(): import("../../../../utils/api").APIConfiguration;
53
+ /**
54
+ * Taille du composant, implique notamment des modifications de typo et de marge interne
55
+ */
57
56
  connectedCallback(): void;
58
57
  requestUpdate(): void;
59
58
  getAttribute(name: string): string;
60
- hasAttribute(attributeName: String): boolean;
59
+ hasAttribute(attributeName: string): boolean;
61
60
  disconnectedCallback(): void;
62
61
  };
63
- } & (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/FormElement").FormElementInterface) & (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/Subscriber").SubscriberInterface) & typeof LitElement;
62
+ } & (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/FormElement").FormElementInterface) & (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/Subscriber").SubscriberInterface<import("../../../../_types/types").CoreJSType>) & typeof LitElement;
64
63
  export declare class Input extends Input_base {
65
64
  static styles: import("lit").CSSResult[];
66
65
  /**
@@ -78,6 +77,7 @@ export declare class Input extends Input_base {
78
77
  maxlength?: number;
79
78
  src?: string;
80
79
  inlineContent: boolean;
80
+ disableInlineContentFocus: boolean;
81
81
  slotLabelNodes: Array<Node>;
82
82
  slotDescriptionNodes: Array<Node>;
83
83
  slotSuffixNodes: Array<Node>;
@@ -87,13 +87,15 @@ export declare class Input extends Input_base {
87
87
  hasLabel: boolean;
88
88
  hasSuffix: boolean;
89
89
  hasPrefix: boolean;
90
- updated(): void;
91
90
  sameValueAsHandle?: (v: string) => void;
92
91
  sameValueAsName?: string;
93
92
  connectedCallback(): void;
94
93
  disconnectedCallback(): void;
95
- onSlotChange(): void;
94
+ willUpdate(changedProperties: PropertyValues): void;
95
+ hasSlotOrProps(): void;
96
96
  inlineContentFocus(): void;
97
+ changeTimeoutId?: ReturnType<typeof setTimeout>;
98
+ handleChange(e?: Event): void;
97
99
  render(): import("lit-html").TemplateResult<1>;
98
100
  }
99
101
  export {};
@@ -4,11 +4,11 @@ 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 } from "lit";
7
+ import { html, LitElement, css } from "lit";
8
8
  import { customElement, property, queryAssignedNodes, state } from "lit/decorators.js";
9
9
  import { query } from "lit/decorators/query.js";
10
10
  import { ifDefined } from "lit/directives/if-defined.js";
11
- import { formControl } from "@supersoniks/concorde/core/components/ui/form/css/form-control";
11
+ import { formControl, label, description } from "@supersoniks/concorde/core/components/ui/form/css/form-control";
12
12
  import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber";
13
13
  import FormElement from "@supersoniks/concorde/core/mixins/FormElement";
14
14
  import FormInput from "@supersoniks/concorde/core/mixins/FormInput";
@@ -31,41 +31,59 @@ let Input = class Input extends FormInput(FormElement(Subscriber(LitElement))) {
31
31
  super(...arguments);
32
32
  this.readonly = false;
33
33
  this.inlineContent = false;
34
+ this.disableInlineContentFocus = false;
34
35
  this.hasDescription = false;
35
36
  this.hasLabel = false;
36
37
  this.hasSuffix = false;
37
38
  this.hasPrefix = false;
38
39
  }
39
- updated() {
40
- var _a, _b, _c, _d;
41
- this.hasLabel = this.label || ((_a = this.slotLabelNodes) === null || _a === void 0 ? void 0 : _a.length) ? true : false;
42
- this.hasDescription = this.description || ((_b = this.slotDescriptionNodes) === null || _b === void 0 ? void 0 : _b.length) ? true : false;
43
- this.hasSuffix = ((_c = this.slotSuffixNodes) === null || _c === void 0 ? void 0 : _c.length) ? true : false;
44
- this.hasPrefix = ((_d = this.slotPrefixNodes) === null || _d === void 0 ? void 0 : _d.length) ? true : false;
45
- }
46
40
  connectedCallback() {
47
41
  super.connectedCallback();
42
+ this.hasSlotOrProps();
48
43
  if (this.hasAttribute("sameValueAs")) {
49
44
  this.sameValueAsName = this.getAttribute("sameValueAs");
50
45
  this.sameValueAsHandle = (v) => (this.pattern = v);
51
- this.getFormPublisher()[this.sameValueAsName].onAssign(this.sameValueAsHandle);
46
+ const formPublisher = this.getFormPublisher();
47
+ if (!formPublisher)
48
+ return;
49
+ formPublisher[this.sameValueAsName].onAssign(this.sameValueAsHandle);
52
50
  }
53
51
  }
54
52
  disconnectedCallback() {
55
53
  super.disconnectedCallback();
56
54
  if (this.hasAttribute("sameValueAs") && this.sameValueAsName) {
57
- this.getFormPublisher()[this.sameValueAsName].offAssign(this.sameValueAsHandle);
55
+ const formPublisher = this.getFormPublisher();
56
+ if (!formPublisher)
57
+ return;
58
+ formPublisher[this.sameValueAsName].offAssign(this.sameValueAsHandle);
58
59
  }
59
60
  }
60
- onSlotChange() {
61
- this.requestUpdate();
61
+ willUpdate(changedProperties) {
62
+ this.hasSlotOrProps();
63
+ super.willUpdate(changedProperties);
64
+ }
65
+ hasSlotOrProps() {
66
+ var _a, _b, _c, _d;
67
+ this.hasLabel = this.label || ((_a = this.slotLabelNodes) === null || _a === void 0 ? void 0 : _a.length) ? true : false;
68
+ this.hasDescription = this.description || ((_b = this.slotDescriptionNodes) === null || _b === void 0 ? void 0 : _b.length) ? true : false;
69
+ this.hasSuffix = ((_c = this.slotSuffixNodes) === null || _c === void 0 ? void 0 : _c.length) ? true : false;
70
+ this.hasPrefix = ((_d = this.slotPrefixNodes) === null || _d === void 0 ? void 0 : _d.length) ? true : false;
62
71
  }
63
72
  inlineContentFocus() {
64
73
  var _a;
65
- if (!this.inlineContent)
74
+ if (!this.inlineContent || this.disableInlineContentFocus)
66
75
  return;
67
76
  (_a = this.input) === null || _a === void 0 ? void 0 : _a.focus();
68
77
  }
78
+ handleChange(e) {
79
+ if (!this.hasAttribute("inputDelayMs")) {
80
+ super.handleChange(e);
81
+ return;
82
+ }
83
+ if (this.changeTimeoutId)
84
+ clearTimeout(this.changeTimeoutId);
85
+ this.changeTimeoutId = setTimeout(() => super.handleChange(e), parseInt(this.getAttribute("inputDelayMs")));
86
+ }
69
87
  render() {
70
88
  const slotClasses = {
71
89
  "has-prefix": this.hasPrefix,
@@ -76,48 +94,67 @@ let Input = class Input extends FormInput(FormElement(Subscriber(LitElement))) {
76
94
  <label for="form-element" class="${this.hasLabel ? "form-label" : "hidden"}"
77
95
  >${this.label ? unsafeHTML(this.label /*+ labelStarSuffix*/) : ""}<slot
78
96
  name="label"
79
- @slotchange=${this.onSlotChange}
97
+ @slotchange=${this.hasSlotOrProps}
80
98
  ></slot
81
99
  ></label>
82
100
 
83
101
  <div @click=${this.inlineContentFocus} class="form-control ${classMap(slotClasses)}">
84
- <div class=" ${this.inlineContent ? "form-element form-element-wrapper" : "contents"}">
85
- <slot name="prefix" @slotchange=${this.onSlotChange}></slot>
86
- <input
87
- id="form-element"
88
- part="input"
89
- class="form-element input"
90
- @input=${this.handleChange}
91
- @blur=${this.handleBlur}
92
- type=${this.type}
93
- disabled=${ifDefined(this.disabled)}
94
- ?readonly=${this.readonly}
95
- ?autofocus=${this.autofocus}
96
- list=${ifDefined(this.list)}
97
- tabindex=${ifDefined(this.tabindex)}
98
- pattern=${ifDefined(this.pattern)}
99
- min=${ifDefined(this.min)}
100
- max=${ifDefined(this.max)}
101
- step=${ifDefined(this.step)}
102
- src=${ifDefined(this.src)}
103
- minlength=${ifDefined(this.minlength)}
104
- maxlength=${ifDefined(this.maxlength)}
105
- placeholder=${ifDefined(this.placeholder)}
106
- required=${ifDefined(this.required)}
107
- autocomplete=${ifDefined(this.autocomplete)}
108
- .name=${this.name}
109
- .value=${this.value}
110
- />
111
- <slot name="suffix" @slotchange=${this.onSlotChange}></slot>
102
+ <div class="${this.inlineContent ? "form-element form-element-wrapper" : "contents"}">
103
+ <slot name="prefix" @slotchange=${this.hasSlotOrProps}></slot>
104
+ <input
105
+ id="form-element"
106
+ part="input"
107
+ class="form-element input"
108
+ @input=${this.handleChange}
109
+ @blur=${this.handleBlur}
110
+ type=${this.type}
111
+ disabled=${ifDefined(this.disabled)}
112
+ ?readonly=${this.readonly}
113
+ ?autofocus=${this.autofocus}
114
+ list=${ifDefined(this.list)}
115
+ tabindex=${ifDefined(this.tabindex)}
116
+ pattern=${ifDefined(this.pattern)}
117
+ min=${ifDefined(this.min)}
118
+ max=${ifDefined(this.max)}
119
+ step=${ifDefined(this.step)}
120
+ src=${ifDefined(this.src)}
121
+ minlength=${ifDefined(this.minlength)}
122
+ maxlength=${ifDefined(this.maxlength)}
123
+ placeholder=${ifDefined(this.placeholder)}
124
+ required=${ifDefined(this.required)}
125
+ autocomplete=${ifDefined(this.autocomplete)}
126
+ aria-label=${ifDefined(this.ariaLabel)}
127
+ aria-labelledby=${ifDefined(this.ariaLabelledby)}
128
+ .name=${this.name}
129
+ .value=${this.value}
130
+ />
131
+ <slot name="suffix" @slotchange=${this.hasSlotOrProps}></slot>
132
+ </div>
112
133
  </div>
134
+ <slot
135
+ name="description"
136
+ @slotchange=${this.hasSlotOrProps}
137
+ class="${this.hasDescription ? "form-description" : "hidden"}"
138
+ >
139
+ ${this.description ? html `${unsafeHTML(this.description)}` : ""}
140
+ </slot>
141
+ <slot name="list"></slot>
113
142
  </div>
114
- <slot name="description" class="${this.hasDescription ? "form-description" : "hidden"}">
115
- ${this.description ? html `${unsafeHTML(this.description)}` : ""}
116
- </slot>
117
143
  `;
118
144
  }
119
145
  };
120
- Input.styles = [fontSize, formControl];
146
+ Input.styles = [
147
+ fontSize,
148
+ formControl,
149
+ label,
150
+ description,
151
+ css `
152
+ :host([type="hidden"]) {
153
+ appearance: none !important;
154
+ display: none !important;
155
+ }
156
+ `,
157
+ ];
121
158
  __decorate([
122
159
  property({ type: String, reflect: true })
123
160
  ], Input.prototype, "size", void 0);
@@ -154,6 +191,9 @@ __decorate([
154
191
  __decorate([
155
192
  property({ type: Boolean, reflect: true })
156
193
  ], Input.prototype, "inlineContent", void 0);
194
+ __decorate([
195
+ property({ type: Boolean })
196
+ ], Input.prototype, "disableInlineContentFocus", void 0);
157
197
  __decorate([
158
198
  queryAssignedNodes({ slot: "label" })
159
199
  ], Input.prototype, "slotLabelNodes", void 0);
@@ -185,8 +225,3 @@ Input = __decorate([
185
225
  customElement(tagName)
186
226
  ], Input);
187
227
  export { Input };
188
- //Ajout pour Storybook
189
- try {
190
- customElements.define(tagName, Input);
191
- }
192
- catch (e) { }
@@ -1,6 +1,6 @@
1
1
  import { LitElement, nothing } from "lit";
2
2
  import "@supersoniks/concorde/core/components/ui/icon/icon";
3
- declare const SonicComponent_base: (new (...args: any[]) => import("../../../../mixins/Subscriber").SubscriberInterface) & typeof LitElement;
3
+ declare const SonicComponent_base: (new (...args: any[]) => import("../../../../mixins/Subscriber").SubscriberInterface<import("../../../../_types/types").CoreJSType>) & typeof LitElement;
4
4
  export declare class SonicComponent extends SonicComponent_base {
5
5
  name?: string;
6
6
  minChars: number;
@@ -42,7 +42,7 @@ let SonicComponent = class SonicComponent extends Subscriber(LitElement) {
42
42
  this.hasMinuscule = /[a-z]/.test(v);
43
43
  this.hasMajuscule = /[A-Z]/.test(v);
44
44
  this.hasNumber = /[0-9]/.test(v);
45
- this.hasSpecialChar = /[!"#$%&'()*+,\-\.\/:;<=>?@[\]^_`{|}~]/.test(v);
45
+ this.hasSpecialChar = /[!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]/.test(v);
46
46
  };
47
47
  PublisherManager.get(this.getAncestorAttributeValue("formDataProvider"))[this.name].onAssign(this.checkValue);
48
48
  }
@@ -51,11 +51,12 @@ let SonicComponent = class SonicComponent extends Subscriber(LitElement) {
51
51
  if (this.checkValue && this.name) {
52
52
  PublisherManager.get(this.getAncestorAttributeValue("formDataProvider"))[this.name].offAssign(this.checkValue);
53
53
  }
54
+ super.disconnectedCallback();
54
55
  }
55
56
  getIcon(test) {
56
57
  return test
57
- ? html `<sonic-icon library="heroicons" , name="face-smile"></sonic-icon>`
58
- : html `<sonic-icon library="heroicons" , name="x-circle"></sonic-icon>`;
58
+ ? html `<sonic-icon library="heroicons" name="face-smile"></sonic-icon>`
59
+ : html `<sonic-icon library="heroicons" name="x-mark"></sonic-icon>`;
59
60
  }
60
61
  render() {
61
62
  if (this.hasNoChar)
@@ -1,6 +1,6 @@
1
1
  import { LitElement, nothing } from "lit";
2
2
  import "@supersoniks/concorde/core/components/ui/icon/icon";
3
- declare const SonicComponent_base: (new (...args: any[]) => import("../../../../mixins/Subscriber").SubscriberInterface) & typeof LitElement;
3
+ declare const SonicComponent_base: (new (...args: any[]) => import("../../../../mixins/Subscriber").SubscriberInterface<import("../../../../_types/types").CoreJSType>) & typeof LitElement;
4
4
  export declare class SonicComponent extends SonicComponent_base {
5
5
  name?: string;
6
6
  sameValueAs?: string;
@@ -21,7 +21,7 @@ let SonicComponent = class SonicComponent extends Subscriber(LitElement) {
21
21
  }
22
22
  connectedCallback() {
23
23
  super.connectedCallback();
24
- let formDataProvider = PublisherManager.get(this.getAncestorAttributeValue("formDataProvider"));
24
+ const formDataProvider = PublisherManager.get(this.getAncestorAttributeValue("formDataProvider"));
25
25
  if (this.name && this.sameValueAs) {
26
26
  this.checkValue = (v) => {
27
27
  if (v)
@@ -38,10 +38,11 @@ let SonicComponent = class SonicComponent extends Subscriber(LitElement) {
38
38
  }
39
39
  disconnectedCallback() {
40
40
  if (this.checkValue && this.name && this.sameValueAs) {
41
- let formDataProvider = PublisherManager.get(this.getAncestorAttributeValue("formDataProvider"));
41
+ const formDataProvider = PublisherManager.get(this.getAncestorAttributeValue("formDataProvider"));
42
42
  formDataProvider[this.name].offAssign(this.checkValue);
43
43
  formDataProvider[this.sameValueAs].offAssign(this.checkValue);
44
44
  }
45
+ super.disconnectedCallback();
45
46
  }
46
47
  //TODO Multilangue
47
48
  render() {
@@ -3,9 +3,8 @@ import "@supersoniks/concorde/core/components/ui/form/input/input";
3
3
  import "@supersoniks/concorde/core/components/ui/pop/pop";
4
4
  import "@supersoniks/concorde/core/components/functional/queue/queue";
5
5
  import "@supersoniks/concorde/core/components/ui/menu/menu-item";
6
- declare const InputAutocomplete_base: (new (...args: any[]) => import("../../../../mixins/TemplatesContainer").TemplatesContainerInterface) & (new (...args: any[]) => import("../../../../mixins/Subscriber").SubscriberInterface) & typeof LitElement;
6
+ declare const InputAutocomplete_base: (new (...args: any[]) => import("../../../../mixins/TemplatesContainer").TemplatesContainerInterface) & (new (...args: any[]) => import("../../../../mixins/Subscriber").SubscriberInterface<import("../../../../_types/types").CoreJSType>) & typeof LitElement;
7
7
  /**
8
- * TODO Améliorer et valider le fonctionnement avec JB et Julien. Puis possiblement merger sur concorde
9
8
  * Input avec autocomplete. Propose des valeurs à partir d'un sonic-queue.
10
9
  * L'input permet de filtrer les choix de valeurs dans le sonic-pop.
11
10
  * La valeur de cet input est ensuite retransmit au premier via un dataProvider.
@@ -28,8 +27,8 @@ export declare class InputAutocomplete extends InputAutocomplete_base {
28
27
  dataProviderExpression: string;
29
28
  key: string;
30
29
  value: string;
31
- formDataProvider: string;
32
30
  connectedCallback(): void;
31
+ formDataProvider: string;
33
32
  render(): import("lit-html").TemplateResult<1>;
34
33
  }
35
34
  export {};
@@ -13,7 +13,6 @@ import "@supersoniks/concorde/core/components/functional/queue/queue";
13
13
  import "@supersoniks/concorde/core/components/ui/menu/menu-item";
14
14
  import { ifDefined } from "lit/directives/if-defined.js";
15
15
  /**
16
- * TODO Améliorer et valider le fonctionnement avec JB et Julien. Puis possiblement merger sur concorde
17
16
  * Input avec autocomplete. Propose des valeurs à partir d'un sonic-queue.
18
17
  * L'input permet de filtrer les choix de valeurs dans le sonic-pop.
19
18
  * La valeur de cet input est ensuite retransmit au premier via un dataProvider.
@@ -67,12 +66,13 @@ let InputAutocomplete = class InputAutocomplete extends TemplatesContainer(Subsc
67
66
  return html `
68
67
  <sonic-pop toggle="false" style="display:block;">
69
68
  <sonic-input
70
- type="text"
69
+ type="search"
71
70
  data-keyboard-nav="nav-autocomplete"
72
71
  label="${ifDefined(this.label)}"
73
72
  description="${ifDefined(this.description)}"
74
73
  name="${ifDefined(this.name)}"
75
74
  value="${ifDefined(this.value)}"
75
+ autocomplete="off"
76
76
  clearable
77
77
  ></sonic-input>
78
78
  <sonic-menu slot="content">
@@ -131,7 +131,3 @@ InputAutocomplete = __decorate([
131
131
  customElement("sonic-input-autocomplete")
132
132
  ], InputAutocomplete);
133
133
  export { InputAutocomplete };
134
- // //Ajout pour custom-elements-manifest pour storybook notamment
135
- // try {
136
- // customElements.define("sonic-input-autocomplete", InputAutocomplete);
137
- // } catch (e) {}
@@ -1,4 +1,10 @@
1
1
  import { Checkbox } from "@supersoniks/concorde/core/components/ui/form/checkbox/checkbox";
2
+ /**
3
+ * ### Le composant sonic-radio étend sonic-checkbox en assignant sa propriété radio à true.
4
+ *
5
+ * * Le type d'input html utilisé passe également de checkbox à radio.
6
+ * * Le comportement est donc similaire à un bouton radio classique mais avec les fonctionnalités de sonic-checkbox (ie : Subscriber / FormElement / FormCheckable).
7
+ */
2
8
  export declare class Radio extends Checkbox {
3
9
  static styles: (import("lit").CSSResult | import("lit").CSSResultGroup[])[];
4
10
  constructor();
@@ -7,13 +7,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { css } from "lit";
8
8
  import { customElement } from "lit/decorators.js";
9
9
  import { Checkbox } from "@supersoniks/concorde/core/components/ui/form/checkbox/checkbox";
10
+ const tagName = "sonic-radio";
10
11
  /**
11
12
  * ### Le composant sonic-radio étend sonic-checkbox en assignant sa propriété radio à true.
12
13
  *
13
14
  * * Le type d'input html utilisé passe également de checkbox à radio.
14
15
  * * Le comportement est donc similaire à un bouton radio classique mais avec les fonctionnalités de sonic-checkbox (ie : Subscriber / FormElement / FormCheckable).
15
16
  */
16
- const tagName = "sonic-radio";
17
17
  let Radio = class Radio extends Checkbox {
18
18
  constructor() {
19
19
  super();
@@ -35,12 +35,12 @@ Radio.styles = [
35
35
  :host sonic-icon {
36
36
  border-radius: 50%;
37
37
  overflow: hidden;
38
- background-color:var(--sc-primary-content);
39
- line-height:0;
40
- display:block;
41
- font-size:0;
42
- height:10px;
43
- width:10px;
38
+ background-color: var(--sc-primary-content);
39
+ line-height: 0;
40
+ display: block;
41
+ font-size: 1em;
42
+ height: 0.6em;
43
+ width: 0.6em;
44
44
  }
45
45
  `,
46
46
  ];
@@ -48,8 +48,3 @@ Radio = __decorate([
48
48
  customElement(tagName)
49
49
  ], Radio);
50
50
  export { Radio };
51
- //Ajout pour Storybook
52
- try {
53
- customElements.define(tagName, Radio);
54
- }
55
- catch (e) { }
@@ -1,19 +1,36 @@
1
- import { LitElement } from "lit";
1
+ import { LitElement, PropertyValues } from "lit";
2
2
  import "@supersoniks/concorde/core/components/ui/icon/icon";
3
- declare const Select_base: (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/FormElement").FormElementInterface) & (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/Subscriber").SubscriberInterface) & typeof LitElement;
3
+ import { Size } from "@supersoniks/concorde/core/components/ui/_css/size";
4
+ export type SelectOption = {
5
+ value?: string;
6
+ wording?: string;
7
+ selected?: boolean;
8
+ hasAttribute?: (value: string) => boolean;
9
+ } & Record<string, string>;
10
+ declare const Select_base: (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/FormElement").FormElementInterface) & (new (...args: any[]) => import("@supersoniks/concorde/core/mixins/Subscriber").SubscriberInterface<import("../../../../_types/types").CoreJSType>) & typeof LitElement;
11
+ /**
12
+ * #### FormElement :
13
+ * * La propriété value est remplie automatiquement a l'aide de l'attribut name renseigné, ceci en prenant la valeur de la propriété du même nom dans les données du dataprovider associé.
14
+ * * Par défault lorsque l'on édite l'input, la valeur est également mise à jour via le même dataprovider
15
+ * * On peut cependant décider de mettre à jour la donnée à une autre adresse en renseigne l'attribut *formDataProvider*.
16
+ * * Par conséquent on peut par exemple le lier à un composant *queue* (via sa propriété *dataFilterProvider*) de manière à appeller en auto une api avec des filtres.
17
+ */
4
18
  export declare class Select extends Select_base {
5
19
  static styles: import("lit").CSSResult[];
6
20
  valueKey: string;
7
21
  wordingKey: string;
8
22
  multiple: boolean;
9
- size?: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
23
+ size?: Size;
10
24
  selectSize?: number;
11
25
  private _options;
12
- set options(value: Array<any>);
13
- get options(): Array<any>;
26
+ set options(options: Array<SelectOption>);
27
+ get options(): Array<SelectOption>;
28
+ hasDoneFirstUpdate: boolean;
29
+ protected firstUpdated(): void;
14
30
  _value: string;
15
- get value(): string;
16
31
  set value(value: string);
32
+ get value(): string;
33
+ updateFormPublisherValue(): void;
17
34
  connectedCallback(): void;
18
35
  forceAutoFill: boolean;
19
36
  _description?: string;
@@ -30,8 +47,8 @@ export declare class Select extends Select_base {
30
47
  hasLabel: boolean;
31
48
  hasSuffix: boolean;
32
49
  hasPrefix: boolean;
33
- updated(): void;
34
- onSlotChange(): void;
50
+ willUpdate(changedProperties: PropertyValues): void;
51
+ hasSlotOrProps(): void;
35
52
  validateFormElement(): void;
36
53
  render(): import("lit-html").TemplateResult<1>;
37
54
  }