@mgdis/mg-components 5.14.0 → 5.16.0

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 (85) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/{mg-action-more_32.cjs.entry.js → mg-action-more_34.cjs.entry.js} +342 -115
  3. package/dist/cjs/mg-components.cjs.js +1 -1
  4. package/dist/cjs/mg-item-more.cjs.entry.js +4 -2
  5. package/dist/collection/assets/icons/index.js +179 -0
  6. package/dist/collection/collection-manifest.json +2 -0
  7. package/dist/collection/components/atoms/mg-icon/mg-icon.js +1 -1
  8. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.css +43 -0
  9. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +49 -0
  10. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.css +0 -43
  11. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +57 -12
  12. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.css +2 -2
  13. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +1 -1
  14. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +1 -1
  15. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +35 -15
  16. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +1 -1
  17. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +1 -1
  18. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +1 -1
  19. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +1 -1
  20. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +1 -1
  21. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +2 -2
  22. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +9 -2
  23. package/dist/collection/components/molecules/mg-details/mg-details.js +1 -1
  24. package/dist/collection/components/molecules/mg-form/mg-form.js +21 -8
  25. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +4 -2
  26. package/dist/collection/components/molecules/mg-modal/mg-modal.conf.js +4 -0
  27. package/dist/collection/components/molecules/mg-modal/mg-modal.js +37 -5
  28. package/dist/collection/components/molecules/mg-panel/mg-panel.js +1 -1
  29. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.css +135 -0
  30. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +100 -0
  31. package/dist/collection/components/molecules/mg-popover/mg-popover.css +0 -111
  32. package/dist/collection/components/molecules/mg-popover/mg-popover.js +42 -43
  33. package/dist/collection/utils/components.utils.js +8 -7
  34. package/dist/collection/utils/unit.test.utils.js +6 -5
  35. package/dist/components/components.utils.js +8 -7
  36. package/dist/components/index.d.ts +2 -0
  37. package/dist/components/index.js +2 -0
  38. package/dist/components/mg-action-more.js +29 -16
  39. package/dist/components/mg-details.js +1 -1
  40. package/dist/components/mg-form.js +21 -8
  41. package/dist/components/mg-icon2.js +77 -17
  42. package/dist/components/mg-input-checkbox-paginated2.js +18 -12
  43. package/dist/components/mg-input-checkbox.js +36 -24
  44. package/dist/components/mg-input-date.js +13 -7
  45. package/dist/components/mg-input-numeric.js +47 -21
  46. package/dist/components/mg-input-password.js +13 -7
  47. package/dist/components/mg-input-radio.js +13 -7
  48. package/dist/components/mg-input-select2.js +13 -7
  49. package/dist/components/mg-input-text2.js +15 -9
  50. package/dist/components/mg-input-textarea.js +15 -9
  51. package/dist/components/mg-input-toggle.js +12 -6
  52. package/dist/components/mg-item-more.js +24 -16
  53. package/dist/components/mg-menu-item2.js +18 -12
  54. package/dist/components/mg-modal.js +16 -3
  55. package/dist/components/mg-pagination2.js +16 -10
  56. package/dist/components/mg-panel.js +21 -15
  57. package/dist/components/mg-popover-content.d.ts +11 -0
  58. package/dist/components/mg-popover-content.js +6 -0
  59. package/dist/components/mg-popover-content2.js +88 -0
  60. package/dist/components/mg-popover2.js +54 -47
  61. package/dist/components/mg-tooltip-content.d.ts +11 -0
  62. package/dist/components/mg-tooltip-content.js +6 -0
  63. package/dist/components/mg-tooltip-content2.js +41 -0
  64. package/dist/components/mg-tooltip2.js +64 -15
  65. package/dist/esm/loader.js +1 -1
  66. package/dist/esm/{mg-action-more_32.entry.js → mg-action-more_34.entry.js} +341 -116
  67. package/dist/esm/mg-components.js +1 -1
  68. package/dist/esm/mg-item-more.entry.js +4 -2
  69. package/dist/mg-components/mg-components.css +1 -1
  70. package/dist/mg-components/mg-components.esm.js +1 -1
  71. package/dist/mg-components/p-3286bc46.entry.js +1 -0
  72. package/dist/mg-components/p-91f4a30d.entry.js +1 -0
  73. package/dist/types/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.d.ts +14 -0
  74. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +7 -1
  75. package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +19 -0
  76. package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +6 -1
  77. package/dist/types/components/molecules/mg-form/mg-form.d.ts +8 -0
  78. package/dist/types/components/molecules/mg-modal/mg-modal.conf.d.ts +8 -0
  79. package/dist/types/components/molecules/mg-modal/mg-modal.d.ts +8 -2
  80. package/dist/types/components/molecules/mg-popover/mg-popover-content/mg-popover-content.d.ts +47 -0
  81. package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +8 -11
  82. package/dist/types/components.d.ts +59 -0
  83. package/package.json +18 -18
  84. package/dist/mg-components/p-4ae1130f.entry.js +0 -1
  85. package/dist/mg-components/p-aa298e17.entry.js +0 -1
@@ -1,14 +1,15 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
  import { i as initLocales } from './index2.js';
3
- import { S as Status, d as defineCustomElement$3 } from './mg-menu-item2.js';
3
+ import { S as Status, d as defineCustomElement$4 } from './mg-menu-item2.js';
4
4
  import { D as Direction } from './mg-menu.conf.js';
5
5
  import { c as createID } from './components.utils.js';
6
- import { d as defineCustomElement$8 } from './mg-badge2.js';
7
- import { d as defineCustomElement$7 } from './mg-button2.js';
8
- import { d as defineCustomElement$6 } from './mg-card2.js';
9
- import { d as defineCustomElement$5 } from './mg-icon2.js';
10
- import { d as defineCustomElement$4 } from './mg-menu2.js';
11
- import { d as defineCustomElement$2 } from './mg-popover2.js';
6
+ import { d as defineCustomElement$9 } from './mg-badge2.js';
7
+ import { d as defineCustomElement$8 } from './mg-button2.js';
8
+ import { d as defineCustomElement$7 } from './mg-card2.js';
9
+ import { d as defineCustomElement$6 } from './mg-icon2.js';
10
+ import { d as defineCustomElement$5 } from './mg-menu2.js';
11
+ import { d as defineCustomElement$3 } from './mg-popover2.js';
12
+ import { d as defineCustomElement$2 } from './mg-popover-content2.js';
12
13
 
13
14
  const mgActionMoreCss = ".sr-only{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){.mg-a11y-animation{animation:none !important;transition:none !important}}:host{--mg-popover-padding-vertical:1rem;--mg-popover-padding-horizontal:0;--mg-popover-max-width:unset}.mg-action-more__chevron{transition:200ms}.mg-action-more__chevron--rotate.mg-action-more__chevron{transform:rotate(180deg)}";
14
15
 
@@ -50,7 +51,7 @@ const MgActionMore$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
50
51
  this.name = 'mg-action-more';
51
52
  this.mgPopoverIdentifier = createID(this.name);
52
53
  /************
53
- * Merthods *
54
+ * Methods *
54
55
  ***********/
55
56
  /**
56
57
  * Toogle expanded props
@@ -58,6 +59,13 @@ const MgActionMore$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
58
59
  this.toggleExpanded = () => {
59
60
  this.expanded = !this.expanded;
60
61
  };
62
+ /**
63
+ * Handle popover display change value
64
+ * @param event - display change updated value
65
+ */
66
+ this.handleDisplayChange = (event) => {
67
+ this.expanded = event.detail;
68
+ };
61
69
  /**
62
70
  * Button click handler
63
71
  */
@@ -126,7 +134,7 @@ const MgActionMore$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
126
134
  'mg-a11y-animation': true,
127
135
  } }, h("mg-icon", { icon: "chevron-down", size: "small" })));
128
136
  }
129
- return (h(Host, { "data-mg-popover-guard": this.mgPopoverIdentifier }, h("span", { class: "mg-action-more" }, h("mg-popover", { identifier: this.mgPopoverIdentifier, display: this.expanded }, h("mg-button", { variant: this.button.variant, isIcon: this.button.isIcon, type: "button", label: buttonLabel, onClick: this.handleButton }, h("mg-icon", Object.assign({}, this.icon)), !this.button.isIcon && buttonContent), h("div", { slot: "content" }, h("mg-menu", { direction: Direction.VERTICAL, label: this.messages.label }, this.items.map(item => {
137
+ return (h(Host, { "data-mg-popover-guard": this.mgPopoverIdentifier }, h("span", { class: "mg-action-more" }, h("mg-popover", { identifier: this.mgPopoverIdentifier, display: this.expanded, "onDisplay-change": this.handleDisplayChange }, h("mg-button", { variant: this.button.variant, isIcon: this.button.isIcon, type: "button", label: buttonLabel, onClick: this.handleButton }, h("mg-icon", Object.assign({}, this.icon)), !this.button.isIcon && buttonContent), h("div", { slot: "content" }, h("mg-menu", { direction: Direction.VERTICAL, label: this.messages.label }, this.items.map(item => {
130
138
  var _a;
131
139
  return (
132
140
  // eslint-disable-next-line react/jsx-no-bind
@@ -152,7 +160,7 @@ function defineCustomElement$1() {
152
160
  if (typeof customElements === "undefined") {
153
161
  return;
154
162
  }
155
- const components = ["mg-action-more", "mg-badge", "mg-button", "mg-card", "mg-icon", "mg-menu", "mg-menu-item", "mg-popover"];
163
+ const components = ["mg-action-more", "mg-badge", "mg-button", "mg-card", "mg-icon", "mg-menu", "mg-menu-item", "mg-popover", "mg-popover-content"];
156
164
  components.forEach(tagName => { switch (tagName) {
157
165
  case "mg-action-more":
158
166
  if (!customElements.get(tagName)) {
@@ -161,35 +169,40 @@ function defineCustomElement$1() {
161
169
  break;
162
170
  case "mg-badge":
163
171
  if (!customElements.get(tagName)) {
164
- defineCustomElement$8();
172
+ defineCustomElement$9();
165
173
  }
166
174
  break;
167
175
  case "mg-button":
168
176
  if (!customElements.get(tagName)) {
169
- defineCustomElement$7();
177
+ defineCustomElement$8();
170
178
  }
171
179
  break;
172
180
  case "mg-card":
173
181
  if (!customElements.get(tagName)) {
174
- defineCustomElement$6();
182
+ defineCustomElement$7();
175
183
  }
176
184
  break;
177
185
  case "mg-icon":
178
186
  if (!customElements.get(tagName)) {
179
- defineCustomElement$5();
187
+ defineCustomElement$6();
180
188
  }
181
189
  break;
182
190
  case "mg-menu":
183
191
  if (!customElements.get(tagName)) {
184
- defineCustomElement$4();
192
+ defineCustomElement$5();
185
193
  }
186
194
  break;
187
195
  case "mg-menu-item":
188
196
  if (!customElements.get(tagName)) {
189
- defineCustomElement$3();
197
+ defineCustomElement$4();
190
198
  }
191
199
  break;
192
200
  case "mg-popover":
201
+ if (!customElements.get(tagName)) {
202
+ defineCustomElement$3();
203
+ }
204
+ break;
205
+ case "mg-popover-content":
193
206
  if (!customElements.get(tagName)) {
194
207
  defineCustomElement$2();
195
208
  }
@@ -43,7 +43,7 @@ const MgDetails$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
43
43
  * @returns HTML Element
44
44
  */
45
45
  render() {
46
- return (h("details", { class: "mg-details", onToggle: this.handleToggle, open: this.expanded, ref: el => (this.details = el) }, h("summary", null, h("slot", { name: "summary" }), h("span", { class: "mg-details__toggle" }, h("mg-icon", { icon: "chevron-up", size: "small", class: { 'mg-details__toggle-icon': true, 'mg-details__toggle-icon--reverse': !this.expanded } }), h("span", { class: { 'sr-only': this.hideSummary } }, this.expanded ? this.toggleOpened : this.toggleClosed))), h("div", { class: "mg-details__details" }, h("slot", { name: "details" }))));
46
+ return (h("details", { class: "mg-details", onToggle: this.handleToggle, open: this.expanded, ref: (el) => (this.details = el) }, h("summary", null, h("slot", { name: "summary" }), h("span", { class: "mg-details__toggle" }, h("mg-icon", { icon: "chevron-up", size: "small", class: { 'mg-details__toggle-icon': true, 'mg-details__toggle-icon--reverse': !this.expanded } }), h("span", { class: { 'sr-only': this.hideSummary } }, this.expanded ? this.toggleOpened : this.toggleClosed))), h("div", { class: "mg-details__details" }, h("slot", { name: "details" }))));
47
47
  }
48
48
  static get watchers() { return {
49
49
  "toggleClosed": ["validateTitles"],
@@ -22,21 +22,34 @@ const MgForm$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
22
22
  this.classCollection.delete(this.classAllRequired);
23
23
  // If the form is disabled or readonly none of them are required
24
24
  // Check if all fields are not editable (readonly or disabled)
25
- if (!this.disabled && !this.readonly && !this.mgInputs.every(input => input.disabled || input.readonly)) {
26
- // Get required fields
27
- const requiredInputs = this.mgInputs.filter(input => input.required && !input.disabled && !input.readonly);
28
- // All fields are required
25
+ const isEditable = input => !(input.disabled || input.readonly);
26
+ const isMgInputToggle = input => input.nodeName === 'MG-INPUT-TOGGLE';
27
+ if (!this.disabled && !this.readonly && this.mgInputs.some(input => isEditable(input) && !isMgInputToggle(input))) {
28
+ // Get editable inputs
29
+ const editableInputs = this.mgInputs.filter(isEditable);
30
+ // Get required inputs
29
31
  // mg-input-toggle can not be required
30
- if (requiredInputs.length > 0 && requiredInputs.length === this.mgInputs.filter(input => input.nodeName !== 'MG-INPUT-TOGGLE').length) {
31
- this.requiredMessage = requiredInputs.length === 1 ? this.messages.form.allRequiredSingle : this.messages.form.allRequired;
32
+ const requiredInputs = editableInputs.filter(input => !isMgInputToggle(input) && input.required);
33
+ // All inputs are required
34
+ if ([requiredInputs.length, editableInputs.length].every(length => length === 1) ||
35
+ (requiredInputs.length > 1 && requiredInputs.length === editableInputs.filter(input => !isMgInputToggle(input)).length)) {
36
+ this.requiredMessage = this.getRequiredMessageBasedOnCount(requiredInputs, 'allRequiredSingle', 'allRequired');
32
37
  this.classCollection.add(this.classAllRequired);
33
38
  }
34
39
  // Some fields are required
35
40
  else if (requiredInputs.length > 0) {
36
- this.requiredMessage = requiredInputs.length === 1 ? this.messages.form.requiredSingle : this.messages.form.required;
41
+ this.requiredMessage = this.getRequiredMessageBasedOnCount(requiredInputs, 'requiredSingle', 'required');
37
42
  }
38
43
  }
39
44
  };
45
+ /**
46
+ * Returns a required message based on the count of required inputs.
47
+ * @param requiredInputs - An array of required input elements.
48
+ * @param keySingle - The key for the singular message format.
49
+ * @param keyPlural - The key for the plural message format.
50
+ * @returns The appropriate required message based on the count of required inputs.
51
+ */
52
+ this.getRequiredMessageBasedOnCount = (requiredInputs, keySingle, keyPlural) => this.messages.form[requiredInputs.length === 1 ? keySingle : keyPlural];
40
53
  /**
41
54
  * Check if form is valid
42
55
  */
@@ -148,7 +161,7 @@ const MgForm$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
148
161
  * @returns HTML Element
149
162
  */
150
163
  render() {
151
- return (h("form", { class: this.classCollection.join(), id: this.identifier, name: this.name, ref: el => (this.form = el), onSubmit: this.handleFormSubmit }, this.requiredMessage && h("p", { innerHTML: this.requiredMessage }), h("slot", null), !this.readonly && !this.disabled && h("slot", { name: "actions" })));
164
+ return (h("form", { class: this.classCollection.join(), id: this.identifier, name: this.name, ref: (el) => (this.form = el), onSubmit: this.handleFormSubmit }, this.requiredMessage && h("p", { innerHTML: this.requiredMessage }), h("slot", null), !this.readonly && !this.disabled && h("slot", { name: "actions" })));
152
165
  }
153
166
  get element() { return this; }
154
167
  static get watchers() { return {