@mgdis/mg-components 5.15.0 → 5.17.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.
- package/dist/cjs/{index-fede8ee2.js → index-c042e24b.js} +321 -68
- package/dist/cjs/index-c042e24b.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +5 -12
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/{mg-action-more_32.cjs.entry.js → mg-action-more_34.cjs.entry.js} +341 -112
- package/dist/cjs/mg-action-more_34.cjs.entry.js.map +1 -0
- package/dist/cjs/mg-components.cjs.js +5 -3
- package/dist/cjs/mg-components.cjs.js.map +1 -0
- package/dist/cjs/mg-item-more.cjs.entry.js +8 -4
- package/dist/cjs/mg-item-more.cjs.entry.js.map +1 -0
- package/dist/cjs/{mg-menu.conf-f9d0ddec.js → mg-menu.conf-43aacf30.js} +2 -0
- package/dist/cjs/mg-menu.conf-43aacf30.js.map +1 -0
- package/dist/collection/assets/icons/index.js +184 -0
- package/dist/collection/collection-manifest.json +37 -35
- package/dist/collection/components/atoms/mg-badge/mg-badge.conf.js +1 -0
- package/dist/collection/components/atoms/mg-badge/mg-badge.conf.js.map +1 -0
- package/dist/collection/components/atoms/mg-badge/mg-badge.js +6 -4
- package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +1 -0
- package/dist/collection/components/atoms/mg-badge/test/mg-badge.e2e.playwright.js +33 -0
- package/dist/collection/components/atoms/mg-badge/test/mg-badge.e2e.playwright.js.map +1 -0
- package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js +70 -0
- package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-button/mg-button.conf.js +1 -0
- package/dist/collection/components/atoms/mg-button/mg-button.conf.js.map +1 -0
- package/dist/collection/components/atoms/mg-button/mg-button.js +10 -6
- package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -0
- package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js +91 -0
- package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js +142 -0
- package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-card/mg-card.conf.js +1 -0
- package/dist/collection/components/atoms/mg-card/mg-card.conf.js.map +1 -0
- package/dist/collection/components/atoms/mg-card/mg-card.js +8 -5
- package/dist/collection/components/atoms/mg-card/mg-card.js.map +1 -0
- package/dist/collection/components/atoms/mg-card/test/mg-card.e2e.js +36 -0
- package/dist/collection/components/atoms/mg-card/test/mg-card.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-card/test/mg-card.spec.js +43 -0
- package/dist/collection/components/atoms/mg-card/test/mg-card.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-character-left/mg-character-left.js +3 -2
- package/dist/collection/components/atoms/mg-character-left/mg-character-left.js.map +1 -0
- package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.e2e.js +15 -0
- package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.spec.js +42 -0
- package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-divider/mg-divider.js +2 -1
- package/dist/collection/components/atoms/mg-divider/mg-divider.js.map +1 -0
- package/dist/collection/components/atoms/mg-divider/test/mg-divider.e2e.js +11 -0
- package/dist/collection/components/atoms/mg-divider/test/mg-divider.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-divider/test/mg-divider.spec.js +14 -0
- package/dist/collection/components/atoms/mg-divider/test/mg-divider.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js +1 -0
- package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js.map +1 -0
- package/dist/collection/components/atoms/mg-icon/mg-icon.js +11 -7
- package/dist/collection/components/atoms/mg-icon/mg-icon.js.map +1 -0
- package/dist/collection/components/atoms/mg-icon/test/mg-icon.e2e.js +55 -0
- package/dist/collection/components/atoms/mg-icon/test/mg-icon.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js +84 -0
- package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-input-title/mg-input-title.js +2 -1
- package/dist/collection/components/atoms/mg-input-title/mg-input-title.js.map +1 -0
- package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.e2e.js +18 -0
- package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.spec.js +27 -0
- package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-tag/mg-tag.conf.js +1 -0
- package/dist/collection/components/atoms/mg-tag/mg-tag.conf.js.map +1 -0
- package/dist/collection/components/atoms/mg-tag/mg-tag.js +6 -4
- package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +1 -0
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js +37 -0
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js +71 -0
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js.map +1 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.css +43 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +50 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js.map +1 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js +1 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js.map +1 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.css +0 -43
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +64 -17
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -0
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js +132 -0
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js.map +1 -0
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js +264 -0
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/MgInput.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/MgInput.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/MgInput.js +3 -2
- package/dist/collection/components/molecules/inputs/MgInput.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js +2 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +12 -7
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.css +2 -2
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +18 -12
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js +243 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js +581 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +10 -8
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.e2e.js +123 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.spec.js +324 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +46 -23
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.e2e.js +212 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.spec.js +401 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +10 -7
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.e2e.js +115 -0
- package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.spec.js +234 -0
- package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +10 -7
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js +154 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.spec.js +295 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +14 -9
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.e2e.js +194 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.spec.js +344 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +12 -8
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js +171 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js +280 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +10 -7
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.e2e.js +129 -0
- package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js +255 -0
- package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +6 -4
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.e2e.js +125 -0
- package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.e2e.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js +203 -0
- package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js +1 -0
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +9 -5
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.e2e.js +268 -0
- package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.e2e.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.spec.js +175 -0
- package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.spec.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js +1 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +12 -9
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.e2e.js +119 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.e2e.js.map +1 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.spec.js +295 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js +1 -0
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +27 -14
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -0
- package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.e2e.playwright.js +128 -0
- package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.spec.js +187 -0
- package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-details/mg-details.js +3 -2
- package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -0
- package/dist/collection/components/molecules/mg-details/test/mg-details.e2e.playwright.js +30 -0
- package/dist/collection/components/molecules/mg-details/test/mg-details.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js +42 -0
- package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-form/mg-form.js +17 -7
- package/dist/collection/components/molecules/mg-form/mg-form.js.map +1 -0
- package/dist/collection/components/molecules/mg-form/test/mg-form.e2e.js +169 -0
- package/dist/collection/components/molecules/mg-form/test/mg-form.e2e.js.map +1 -0
- package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js +277 -0
- package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +3 -2
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +1 -0
- package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.e2e.js +39 -0
- package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.e2e.js.map +1 -0
- package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.spec.js +36 -0
- package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.conf.js +1 -0
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +15 -9
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.js.map +1 -0
- package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.e2e.playwright.js +85 -0
- package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.spec.js +106 -0
- package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-message/mg-message.conf.js +1 -0
- package/dist/collection/components/molecules/mg-message/mg-message.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-message/mg-message.js +7 -5
- package/dist/collection/components/molecules/mg-message/mg-message.js.map +1 -0
- package/dist/collection/components/molecules/mg-message/test/mg-message.e2e.js +64 -0
- package/dist/collection/components/molecules/mg-message/test/mg-message.e2e.js.map +1 -0
- package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js +109 -0
- package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-modal/mg-modal.conf.js +5 -0
- package/dist/collection/components/molecules/mg-modal/mg-modal.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-modal/mg-modal.js +42 -8
- package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js +62 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.template.js +40 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.template.js.map +1 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js +26 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js +122 -0
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.conf.js +1 -0
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +5 -4
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -0
- package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.e2e.playwright.js +57 -0
- package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.spec.js +121 -0
- package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-panel/mg-panel.conf.js +1 -0
- package/dist/collection/components/molecules/mg-panel/mg-panel.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-panel/mg-panel.js +10 -7
- package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +1 -0
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js +106 -0
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js +223 -0
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.css +135 -0
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +101 -0
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js.map +1 -0
- package/dist/collection/components/molecules/mg-popover/mg-popover.css +0 -111
- package/dist/collection/components/molecules/mg-popover/mg-popover.js +47 -46
- package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -0
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.js +148 -0
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.js.map +1 -0
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.spec.js +130 -0
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.conf.js +1 -0
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +5 -3
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js.map +1 -0
- package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.e2e.js +55 -0
- package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.e2e.js.map +1 -0
- package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.spec.js +55 -0
- package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.spec.js.map +1 -0
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.conf.js +1 -0
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.conf.js.map +1 -0
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +8 -5
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -0
- package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.e2e.playwright.js +76 -0
- package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js +332 -0
- package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js.map +1 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/locales/index.js +4 -3
- package/dist/collection/locales/index.js.map +1 -0
- package/dist/collection/locales/index.spec.js +27 -0
- package/dist/collection/locales/index.spec.js.map +1 -0
- package/dist/collection/stories/icon-gallery.js +4 -3
- package/dist/collection/stories/icon-gallery.js.map +1 -0
- package/dist/collection/test/typography.e2e.playwright.js +12 -0
- package/dist/collection/test/typography.e2e.playwright.js.map +1 -0
- package/dist/collection/utils/behaviors.utils.js +1 -0
- package/dist/collection/utils/behaviors.utils.js.map +1 -0
- package/dist/collection/utils/behaviors.utils.spec.js +57 -0
- package/dist/collection/utils/behaviors.utils.spec.js.map +1 -0
- package/dist/collection/utils/components.utils.js +9 -7
- package/dist/collection/utils/components.utils.js.map +1 -0
- package/dist/collection/utils/components.utils.spec.js +120 -0
- package/dist/collection/utils/components.utils.spec.js.map +1 -0
- package/dist/collection/utils/e2e.test.utils.js +46 -0
- package/dist/collection/utils/e2e.test.utils.js.map +1 -0
- package/dist/collection/utils/locale.utils.js +1 -0
- package/dist/collection/utils/locale.utils.js.map +1 -0
- package/dist/collection/utils/locale.utils.spec.js +52 -0
- package/dist/collection/utils/locale.utils.spec.js.map +1 -0
- package/dist/collection/utils/playwright.e2e.test.utils.js +100 -0
- package/dist/collection/utils/playwright.e2e.test.utils.js.map +1 -0
- package/dist/collection/utils/stencil.e2e.test.utils.js +33 -0
- package/dist/collection/utils/stencil.e2e.test.utils.js.map +1 -0
- package/dist/collection/utils/unit.test.utils.js +8 -6
- package/dist/collection/utils/unit.test.utils.js.map +1 -0
- package/dist/components/MgInput.js +2 -0
- package/dist/components/MgInput.js.map +1 -0
- package/dist/components/components.utils.js +10 -7
- package/dist/components/components.utils.js.map +1 -0
- package/dist/components/index.d.ts +5 -35
- package/dist/components/index.js +3 -34
- package/dist/components/index.js.map +1 -0
- package/dist/components/index2.js +2 -0
- package/dist/components/index2.js.map +1 -0
- package/dist/components/mg-action-more.js +42 -19
- package/dist/components/mg-action-more.js.map +1 -0
- package/dist/components/mg-badge.js +2 -0
- package/dist/components/mg-badge.js.map +1 -0
- package/dist/components/mg-badge2.js +8 -1
- package/dist/components/mg-badge2.js.map +1 -0
- package/dist/components/mg-button.js +2 -0
- package/dist/components/mg-button.js.map +1 -0
- package/dist/components/mg-button2.js +8 -1
- package/dist/components/mg-button2.js.map +1 -0
- package/dist/components/mg-card.js +2 -0
- package/dist/components/mg-card.js.map +1 -0
- package/dist/components/mg-card2.js +6 -1
- package/dist/components/mg-card2.js.map +1 -0
- package/dist/components/mg-character-left.js +2 -0
- package/dist/components/mg-character-left.js.map +1 -0
- package/dist/components/mg-character-left2.js +5 -1
- package/dist/components/mg-character-left2.js.map +1 -0
- package/dist/components/mg-details.js +8 -2
- package/dist/components/mg-details.js.map +1 -0
- package/dist/components/mg-divider.js +3 -1
- package/dist/components/mg-divider.js.map +1 -0
- package/dist/components/mg-form.js +17 -4
- package/dist/components/mg-form.js.map +1 -0
- package/dist/components/mg-icon.js +2 -0
- package/dist/components/mg-icon.js.map +1 -0
- package/dist/components/mg-icon2.js +87 -17
- package/dist/components/mg-icon2.js.map +1 -0
- package/dist/components/mg-illustrated-message.js +3 -1
- package/dist/components/mg-illustrated-message.js.map +1 -0
- package/dist/components/mg-input-checkbox-paginated.js +2 -0
- package/dist/components/mg-input-checkbox-paginated.js.map +1 -0
- package/dist/components/mg-input-checkbox-paginated2.js +24 -13
- package/dist/components/mg-input-checkbox-paginated2.js.map +1 -0
- package/dist/components/mg-input-checkbox.js +48 -25
- package/dist/components/mg-input-checkbox.js.map +1 -0
- package/dist/components/mg-input-date.js +23 -8
- package/dist/components/mg-input-date.js.map +1 -0
- package/dist/components/mg-input-numeric.js +58 -22
- package/dist/components/mg-input-numeric.js.map +1 -0
- package/dist/components/mg-input-password.js +21 -8
- package/dist/components/mg-input-password.js.map +1 -0
- package/dist/components/mg-input-radio.js +22 -8
- package/dist/components/mg-input-radio.js.map +1 -0
- package/dist/components/mg-input-select.js +2 -0
- package/dist/components/mg-input-select.js.map +1 -0
- package/dist/components/mg-input-select2.js +22 -8
- package/dist/components/mg-input-select2.js.map +1 -0
- package/dist/components/mg-input-text.js +2 -0
- package/dist/components/mg-input-text.js.map +1 -0
- package/dist/components/mg-input-text2.js +24 -10
- package/dist/components/mg-input-text2.js.map +1 -0
- package/dist/components/mg-input-textarea.js +24 -10
- package/dist/components/mg-input-textarea.js.map +1 -0
- package/dist/components/mg-input-title.js +2 -0
- package/dist/components/mg-input-title.js.map +1 -0
- package/dist/components/mg-input-title2.js +6 -1
- package/dist/components/mg-input-title2.js.map +1 -0
- package/dist/components/mg-input-toggle.js +23 -7
- package/dist/components/mg-input-toggle.js.map +1 -0
- package/dist/components/mg-item-more.js +31 -17
- package/dist/components/mg-item-more.js.map +1 -0
- package/dist/components/mg-menu-item.js +2 -0
- package/dist/components/mg-menu-item.js.map +1 -0
- package/dist/components/mg-menu-item2.js +27 -13
- package/dist/components/mg-menu-item2.js.map +1 -0
- package/dist/components/mg-menu.conf.js +2 -0
- package/dist/components/mg-menu.conf.js.map +1 -0
- package/dist/components/mg-menu.js +2 -0
- package/dist/components/mg-menu.js.map +1 -0
- package/dist/components/mg-menu2.js +8 -1
- package/dist/components/mg-menu2.js.map +1 -0
- package/dist/components/mg-message.js +8 -1
- package/dist/components/mg-message.js.map +1 -0
- package/dist/components/mg-modal.js +24 -5
- package/dist/components/mg-modal.js.map +1 -0
- package/dist/components/mg-pagination.js +2 -0
- package/dist/components/mg-pagination.js.map +1 -0
- package/dist/components/mg-pagination2.js +22 -11
- package/dist/components/mg-pagination2.js.map +1 -0
- package/dist/components/mg-panel.js +30 -16
- package/dist/components/mg-panel.js.map +1 -0
- package/dist/components/mg-popover-content.d.ts +11 -0
- package/dist/components/mg-popover-content.js +8 -0
- package/dist/components/mg-popover-content.js.map +1 -0
- package/dist/components/mg-popover-content2.js +90 -0
- package/dist/components/mg-popover-content2.js.map +1 -0
- package/dist/components/mg-popover.js +2 -0
- package/dist/components/mg-popover.js.map +1 -0
- package/dist/components/mg-popover2.js +61 -48
- package/dist/components/mg-popover2.js.map +1 -0
- package/dist/components/mg-skip-links.js +5 -1
- package/dist/components/mg-skip-links.js.map +1 -0
- package/dist/components/mg-tabs.js +8 -1
- package/dist/components/mg-tabs.js.map +1 -0
- package/dist/components/mg-tag.js +7 -1
- package/dist/components/mg-tag.js.map +1 -0
- package/dist/components/mg-tooltip-content.d.ts +11 -0
- package/dist/components/mg-tooltip-content.js +8 -0
- package/dist/components/mg-tooltip-content.js.map +1 -0
- package/dist/components/mg-tooltip-content2.js +43 -0
- package/dist/components/mg-tooltip-content2.js.map +1 -0
- package/dist/components/mg-tooltip.js +2 -0
- package/dist/components/mg-tooltip.js.map +1 -0
- package/dist/components/mg-tooltip2.js +71 -16
- package/dist/components/mg-tooltip2.js.map +1 -0
- package/dist/components/popper.js +2 -0
- package/dist/components/popper.js.map +1 -0
- package/dist/esm/{index-1d40b052.js → index-ce01e63b.js} +321 -68
- package/dist/esm/index-ce01e63b.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +6 -13
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/{mg-action-more_32.entry.js → mg-action-more_34.entry.js} +340 -113
- package/dist/esm/mg-action-more_34.entry.js.map +1 -0
- package/dist/esm/mg-components.js +6 -4
- package/dist/esm/mg-components.js.map +1 -0
- package/dist/esm/mg-item-more.entry.js +8 -4
- package/dist/esm/mg-item-more.entry.js.map +1 -0
- package/dist/esm/{mg-menu.conf-2cc079ae.js → mg-menu.conf-012fc9b4.js} +2 -0
- package/dist/esm/mg-menu.conf-012fc9b4.js.map +1 -0
- package/dist/mg-components/index.esm.js +2 -0
- package/dist/mg-components/index.esm.js.map +1 -0
- package/dist/mg-components/mg-components.css +1 -1
- package/dist/mg-components/mg-components.esm.js +2 -1
- package/dist/mg-components/mg-components.esm.js.map +1 -0
- package/dist/mg-components/p-1aa89acf.js +3 -0
- package/dist/mg-components/p-1aa89acf.js.map +1 -0
- package/dist/mg-components/p-1d7d6fa0.js +2 -0
- package/dist/mg-components/p-1d7d6fa0.js.map +1 -0
- package/dist/mg-components/p-9257e8f1.entry.js +2 -0
- package/dist/mg-components/p-9257e8f1.entry.js.map +1 -0
- package/dist/mg-components/p-caafc9cf.entry.js +2 -0
- package/dist/mg-components/p-caafc9cf.entry.js.map +1 -0
- package/dist/types/components/atoms/mg-badge/test/mg-badge.e2e.playwright.d.ts +1 -0
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.d.ts +14 -0
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +7 -1
- package/dist/types/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +19 -0
- package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +6 -1
- package/dist/types/components/molecules/mg-action-more/test/mg-action-more.e2e.playwright.d.ts +2 -0
- package/dist/types/components/molecules/mg-details/test/mg-details.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/mg-form/mg-form.d.ts +8 -0
- package/dist/types/components/molecules/mg-item-more/test/mg-item-more.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/mg-modal/mg-modal.conf.d.ts +8 -0
- package/dist/types/components/molecules/mg-modal/mg-modal.d.ts +8 -2
- package/dist/types/components/molecules/mg-modal/test/mg-modal.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/mg-modal/test/mg-modal.e2e.template.d.ts +12 -0
- package/dist/types/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/mg-pagination/test/mg-pagination.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/mg-panel/test/mg-panel.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/mg-popover/mg-popover-content/mg-popover-content.d.ts +47 -0
- package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +8 -11
- package/dist/types/components/molecules/mg-tabs/test/mg-tabs.e2e.playwright.d.ts +1 -0
- package/dist/types/components.d.ts +79 -0
- package/dist/types/stencil-public-runtime.d.ts +43 -17
- package/dist/types/test/typography.e2e.playwright.d.ts +1 -0
- package/dist/types/utils/e2e.test.utils.d.ts +22 -0
- package/dist/types/utils/stencil.e2e.test.utils.d.ts +14 -0
- package/loader/index.d.ts +2 -2
- package/package.json +7 -7
- package/dist/esm/polyfills/css-shim.js +0 -1
- package/dist/mg-components/p-067080e4.js +0 -1
- package/dist/mg-components/p-3bf1e2f0.js +0 -2
- package/dist/mg-components/p-4ae1130f.entry.js +0 -1
- package/dist/mg-components/p-6672f590.entry.js +0 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { createPage } from "../../../../utils/stencil.e2e.test.utils";
|
|
2
|
+
const inputs = `<mg-input-checkbox identifier="mg-input-checkbox" label="mg-input-checkbox label"></mg-input-checkbox>
|
|
3
|
+
<mg-input-date identifier="mg-input-date" label="mg-input-date label"></mg-input-date>
|
|
4
|
+
<mg-input-numeric identifier="mg-input-numeric" label="mg-input-numeric label"></mg-input-numeric>
|
|
5
|
+
<mg-input-password identifier="mg-input-password" label="mg-input-password label"></mg-input-password>
|
|
6
|
+
<mg-input-radio identifier="mg-input-radio" label="mg-input-radio label"></mg-input-radio>
|
|
7
|
+
<mg-input-select identifier="mg-input-select" label="mg-input-select label"></mg-input-select>
|
|
8
|
+
<mg-input-text identifier="mg-input-text" label="mg-input-text label"></mg-input-text>
|
|
9
|
+
<mg-input-textarea identifier="mg-input-textarea" label="mg-input-textarea label"></mg-input-textarea>
|
|
10
|
+
<mg-input-toggle identifier="mg-input-toggle" label="mg-input-toggle label">
|
|
11
|
+
<span slot="item-1">non</span>
|
|
12
|
+
<span slot="item-2">oui</span>
|
|
13
|
+
</mg-input-toggle>`;
|
|
14
|
+
const inputsScript = `<script>
|
|
15
|
+
const mgInputCheckbox = document.querySelector('mg-input-checkbox');
|
|
16
|
+
const mgInputDate = document.querySelector('mg-input-date');
|
|
17
|
+
const mgInputNumeric = document.querySelector('mg-input-numeric');
|
|
18
|
+
const mgInputPassword = document.querySelector('mg-input-password');
|
|
19
|
+
const mgInputRadio = document.querySelector('mg-input-radio');
|
|
20
|
+
const mgInputSelect = document.querySelector('mg-input-select');
|
|
21
|
+
const mgInputText = document.querySelector('mg-input-text');
|
|
22
|
+
const mgInputTextarea = document.querySelector('mg-input-textarea');
|
|
23
|
+
const mgInputToggle = document.querySelector('mg-input-toggle');
|
|
24
|
+
|
|
25
|
+
mgInputCheckbox.value = [
|
|
26
|
+
{ title: 'oui', value: false },
|
|
27
|
+
{ title: 'non', value: false },
|
|
28
|
+
];
|
|
29
|
+
mgInputRadio.items = ['blu', 'bli', 'bla', 'blo'];
|
|
30
|
+
mgInputSelect.items = ['blu', 'bli', 'bla', 'blo'];
|
|
31
|
+
mgInputToggle.items = [
|
|
32
|
+
{ title: 'non', value: false },
|
|
33
|
+
{ title: 'oui', value: true },
|
|
34
|
+
];
|
|
35
|
+
</script>`;
|
|
36
|
+
const inputsScriptSetValues = `<script>
|
|
37
|
+
mgInputCheckbox.value = [
|
|
38
|
+
{ title: 'oui', value: true },
|
|
39
|
+
{ title: 'non', value: false },
|
|
40
|
+
];
|
|
41
|
+
mgInputDate.value = '2022-04-15';
|
|
42
|
+
mgInputNumeric.value = 1234567890;
|
|
43
|
+
mgInputPassword.value = 'p455w0rD';
|
|
44
|
+
mgInputRadio.value = mgInputRadio.items[0];
|
|
45
|
+
mgInputSelect.value = mgInputSelect.items[0];
|
|
46
|
+
mgInputText.value = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';
|
|
47
|
+
mgInputTextarea.value =
|
|
48
|
+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
|
|
49
|
+
mgInputToggle.value = mgInputToggle.items[1].value;
|
|
50
|
+
</script>`;
|
|
51
|
+
const inputsScriptRequiredAll = `<script>
|
|
52
|
+
mgInputCheckbox.required = true;
|
|
53
|
+
mgInputDate.required = true;
|
|
54
|
+
mgInputNumeric.required = true;
|
|
55
|
+
mgInputPassword.required = true;
|
|
56
|
+
mgInputRadio.required = true;
|
|
57
|
+
mgInputSelect.required = true;
|
|
58
|
+
mgInputText.required = true;
|
|
59
|
+
mgInputTextarea.required = true;
|
|
60
|
+
</script>`;
|
|
61
|
+
const inputsScriptRequiredSome = `<script>
|
|
62
|
+
mgInputCheckbox.required = true;
|
|
63
|
+
mgInputNumeric.required = true;
|
|
64
|
+
mgInputRadio.required = true;
|
|
65
|
+
mgInputText.required = true;
|
|
66
|
+
</script>`;
|
|
67
|
+
const inputsScriptRequiredSingle = `<script>
|
|
68
|
+
mgInputCheckbox.required = true;
|
|
69
|
+
</script>`;
|
|
70
|
+
const inputsScriptReadonlyAll = `<script>
|
|
71
|
+
mgInputCheckbox.readonly = true;
|
|
72
|
+
mgInputDate.readonly = true;
|
|
73
|
+
mgInputNumeric.readonly = true;
|
|
74
|
+
mgInputPassword.readonly = true;
|
|
75
|
+
mgInputRadio.readonly = true;
|
|
76
|
+
mgInputSelect.readonly = true;
|
|
77
|
+
mgInputText.readonly = true;
|
|
78
|
+
mgInputTextarea.readonly = true;
|
|
79
|
+
mgInputToggle.readonly = true;
|
|
80
|
+
</script>`;
|
|
81
|
+
const inputsScriptDisabledAll = `<script>
|
|
82
|
+
mgInputCheckbox.disabled = true;
|
|
83
|
+
mgInputDate.disabled = true;
|
|
84
|
+
mgInputNumeric.disabled = true;
|
|
85
|
+
mgInputPassword.disabled = true;
|
|
86
|
+
mgInputRadio.disabled = true;
|
|
87
|
+
mgInputSelect.disabled = true;
|
|
88
|
+
mgInputText.disabled = true;
|
|
89
|
+
mgInputTextarea.disabled = true;
|
|
90
|
+
mgInputToggle.disabled = true;
|
|
91
|
+
</script>`;
|
|
92
|
+
describe('mg-form', () => {
|
|
93
|
+
describe.each([`<mg-form>`, `<mg-form disabled>`, `<mg-form readonly>`])('params %s', startTag => {
|
|
94
|
+
test('Should render', async () => {
|
|
95
|
+
const page = await createPage(`${startTag}
|
|
96
|
+
${inputs}
|
|
97
|
+
</mg-form>
|
|
98
|
+
${inputsScript}
|
|
99
|
+
${inputsScriptSetValues}`);
|
|
100
|
+
const element = await page.find('mg-form');
|
|
101
|
+
expect(element).toHaveClass('hydrated');
|
|
102
|
+
const screenshot = await page.screenshot();
|
|
103
|
+
expect(screenshot).toMatchImageSnapshot();
|
|
104
|
+
});
|
|
105
|
+
test('Should render with custom style', async () => {
|
|
106
|
+
const page = await createPage(`${startTag}
|
|
107
|
+
${inputs}
|
|
108
|
+
</mg-form>
|
|
109
|
+
${inputsScript}
|
|
110
|
+
${inputsScriptSetValues}
|
|
111
|
+
${inputsScriptRequiredSome}`);
|
|
112
|
+
await page.$eval('mg-form', el => {
|
|
113
|
+
el.setAttribute('style', '--mg-form-inputs-title-width: 25rem;');
|
|
114
|
+
});
|
|
115
|
+
const screenshot = await page.screenshot();
|
|
116
|
+
expect(screenshot).toMatchImageSnapshot();
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe.each(['<mg-form>', '<mg-form lang="fr">'])('With different locale', startTag => {
|
|
120
|
+
describe.each([inputsScriptRequiredAll, inputsScriptRequiredSome, inputsScriptRequiredSingle])('Should render required and errors', inputsScriptRequired => {
|
|
121
|
+
test('Should render errors', async () => {
|
|
122
|
+
const page = await createPage(`${startTag}
|
|
123
|
+
${inputs}
|
|
124
|
+
</mg-form>
|
|
125
|
+
${inputsScript}
|
|
126
|
+
${inputsScriptRequired}`);
|
|
127
|
+
const element = await page.find('mg-form');
|
|
128
|
+
expect(element).toHaveClass('hydrated');
|
|
129
|
+
const screenshot = await page.screenshot();
|
|
130
|
+
expect(screenshot).toMatchImageSnapshot();
|
|
131
|
+
await element.callMethod('displayError');
|
|
132
|
+
await page.waitForChanges();
|
|
133
|
+
const screenshotErrors = await page.screenshot();
|
|
134
|
+
expect(screenshotErrors).toMatchImageSnapshot();
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
test('Should render single required input in form', async () => {
|
|
138
|
+
const page = await createPage(`${startTag}
|
|
139
|
+
<mg-input-date identifier="mg-input-date" label="mg-input-date label"></mg-input-date>
|
|
140
|
+
</mg-form>
|
|
141
|
+
<script>
|
|
142
|
+
const mgInputDate = document.querySelector('mg-input-date');
|
|
143
|
+
mgInputDate.required = true;
|
|
144
|
+
</script>`);
|
|
145
|
+
const element = await page.find('mg-form');
|
|
146
|
+
expect(element).toHaveClass('hydrated');
|
|
147
|
+
const screenshot = await page.screenshot();
|
|
148
|
+
expect(screenshot).toMatchImageSnapshot();
|
|
149
|
+
await element.callMethod('displayError');
|
|
150
|
+
await page.waitForChanges();
|
|
151
|
+
const screenshotErrors = await page.screenshot();
|
|
152
|
+
expect(screenshotErrors).toMatchImageSnapshot();
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
test.each(['readonly', 'disabled'])('Should not have required message when all inputs are required and %s', async (attribute) => {
|
|
156
|
+
const page = await createPage(`<mg-form>
|
|
157
|
+
${inputs}
|
|
158
|
+
</mg-form>
|
|
159
|
+
${inputsScript}
|
|
160
|
+
${inputsScriptSetValues}
|
|
161
|
+
${inputsScriptRequiredAll}
|
|
162
|
+
${attribute === 'readonly' ? inputsScriptReadonlyAll : inputsScriptDisabledAll}`);
|
|
163
|
+
const element = await page.find('mg-form');
|
|
164
|
+
expect(element).toHaveClass('hydrated');
|
|
165
|
+
const screenshot = await page.screenshot();
|
|
166
|
+
expect(screenshot).toMatchImageSnapshot();
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
//# sourceMappingURL=mg-form.e2e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mg-form.e2e.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-form/test/mg-form.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAEtE,MAAM,MAAM,GAAG;;;;;;;;;;;mBAWI,CAAC;AAEpB,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;UAqBX,CAAC;AAEX,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;UAcpB,CAAC;AAEX,MAAM,uBAAuB,GAAG;;;;;;;;;UAStB,CAAC;AAEX,MAAM,wBAAwB,GAAG;;;;;UAKvB,CAAC;AAEX,MAAM,0BAA0B,GAAG;;UAEzB,CAAC;AAEX,MAAM,uBAAuB,GAAG;;;;;;;;;;UAUtB,CAAC;AAEX,MAAM,uBAAuB,GAAG;;;;;;;;;;UAUtB,CAAC;AAEX,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;EACvB,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;IAC/F,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;MAC/B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,QAAQ;UACrC,MAAM;;UAEN,YAAY;UACZ,qBAAqB,EAAE,CAAC,CAAC;MAE7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;MAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;MAExC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;MAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;MACjD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,QAAQ;UACrC,MAAM;;UAEN,YAAY;UACZ,qBAAqB;UACrB,wBAAwB,EAAE,CAAC,CAAC;MAEhC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;QAC/B,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,sCAAsC,CAAC,CAAC;MACnE,CAAC,CAAC,CAAC;MAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;MAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,EAAE,QAAQ,CAAC,EAAE;IACtF,QAAQ,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,wBAAwB,EAAE,0BAA0B,CAAC,CAAC,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,EAAE;MACzJ,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,QAAQ;UACvC,MAAM;;UAEN,YAAY;UACZ,oBAAoB,EAAE,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAExC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAE1C,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,EAAE,CAAC;MAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;MAC7D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,QAAQ;;;;;;gBAM/B,CAAC,CAAC;MACZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;MAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;MAExC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;MAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;MAE1C,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;MACzC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;MAE5B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;MACjD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;EAEH,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,sEAAsE,EAAE,KAAK,EAAC,SAAS,EAAC,EAAE;IAC5H,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC;MAC5B,MAAM;;MAEN,YAAY;MACZ,qBAAqB;MACrB,uBAAuB;MACvB,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAElF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;EAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { createPage } from '../../../../utils/stencil.e2e.test.utils';\n\nconst inputs = `<mg-input-checkbox identifier=\"mg-input-checkbox\" label=\"mg-input-checkbox label\"></mg-input-checkbox>\n<mg-input-date identifier=\"mg-input-date\" label=\"mg-input-date label\"></mg-input-date>\n<mg-input-numeric identifier=\"mg-input-numeric\" label=\"mg-input-numeric label\"></mg-input-numeric>\n<mg-input-password identifier=\"mg-input-password\" label=\"mg-input-password label\"></mg-input-password>\n<mg-input-radio identifier=\"mg-input-radio\" label=\"mg-input-radio label\"></mg-input-radio>\n<mg-input-select identifier=\"mg-input-select\" label=\"mg-input-select label\"></mg-input-select>\n<mg-input-text identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>\n<mg-input-textarea identifier=\"mg-input-textarea\" label=\"mg-input-textarea label\"></mg-input-textarea>\n<mg-input-toggle identifier=\"mg-input-toggle\" label=\"mg-input-toggle label\">\n <span slot=\"item-1\">non</span>\n <span slot=\"item-2\">oui</span>\n</mg-input-toggle>`;\n\nconst inputsScript = `<script>\n const mgInputCheckbox = document.querySelector('mg-input-checkbox');\n const mgInputDate = document.querySelector('mg-input-date');\n const mgInputNumeric = document.querySelector('mg-input-numeric');\n const mgInputPassword = document.querySelector('mg-input-password');\n const mgInputRadio = document.querySelector('mg-input-radio');\n const mgInputSelect = document.querySelector('mg-input-select');\n const mgInputText = document.querySelector('mg-input-text');\n const mgInputTextarea = document.querySelector('mg-input-textarea');\n const mgInputToggle = document.querySelector('mg-input-toggle');\n\n mgInputCheckbox.value = [\n { title: 'oui', value: false },\n { title: 'non', value: false },\n ];\n mgInputRadio.items = ['blu', 'bli', 'bla', 'blo'];\n mgInputSelect.items = ['blu', 'bli', 'bla', 'blo'];\n mgInputToggle.items = [\n { title: 'non', value: false },\n { title: 'oui', value: true },\n ];\n</script>`;\n\nconst inputsScriptSetValues = `<script>\n mgInputCheckbox.value = [\n { title: 'oui', value: true },\n { title: 'non', value: false },\n ];\n mgInputDate.value = '2022-04-15';\n mgInputNumeric.value = 1234567890;\n mgInputPassword.value = 'p455w0rD';\n mgInputRadio.value = mgInputRadio.items[0];\n mgInputSelect.value = mgInputSelect.items[0];\n mgInputText.value = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';\n mgInputTextarea.value =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';\n mgInputToggle.value = mgInputToggle.items[1].value;\n</script>`;\n\nconst inputsScriptRequiredAll = `<script>\n mgInputCheckbox.required = true;\n mgInputDate.required = true;\n mgInputNumeric.required = true;\n mgInputPassword.required = true;\n mgInputRadio.required = true;\n mgInputSelect.required = true;\n mgInputText.required = true;\n mgInputTextarea.required = true;\n</script>`;\n\nconst inputsScriptRequiredSome = `<script>\n mgInputCheckbox.required = true;\n mgInputNumeric.required = true;\n mgInputRadio.required = true;\n mgInputText.required = true;\n</script>`;\n\nconst inputsScriptRequiredSingle = `<script>\n mgInputCheckbox.required = true;\n</script>`;\n\nconst inputsScriptReadonlyAll = `<script>\n mgInputCheckbox.readonly = true;\n mgInputDate.readonly = true;\n mgInputNumeric.readonly = true;\n mgInputPassword.readonly = true;\n mgInputRadio.readonly = true;\n mgInputSelect.readonly = true;\n mgInputText.readonly = true;\n mgInputTextarea.readonly = true;\n mgInputToggle.readonly = true;\n</script>`;\n\nconst inputsScriptDisabledAll = `<script>\n mgInputCheckbox.disabled = true;\n mgInputDate.disabled = true;\n mgInputNumeric.disabled = true;\n mgInputPassword.disabled = true;\n mgInputRadio.disabled = true;\n mgInputSelect.disabled = true;\n mgInputText.disabled = true;\n mgInputTextarea.disabled = true;\n mgInputToggle.disabled = true;\n</script>`;\n\ndescribe('mg-form', () => {\n describe.each([`<mg-form>`, `<mg-form disabled>`, `<mg-form readonly>`])('params %s', startTag => {\n test('Should render', async () => {\n const page = await createPage(`${startTag}\n ${inputs}\n </mg-form>\n ${inputsScript}\n ${inputsScriptSetValues}`);\n\n const element = await page.find('mg-form');\n expect(element).toHaveClass('hydrated');\n\n const screenshot = await page.screenshot();\n expect(screenshot).toMatchImageSnapshot();\n });\n\n test('Should render with custom style', async () => {\n const page = await createPage(`${startTag}\n ${inputs}\n </mg-form>\n ${inputsScript}\n ${inputsScriptSetValues}\n ${inputsScriptRequiredSome}`);\n\n await page.$eval('mg-form', el => {\n el.setAttribute('style', '--mg-form-inputs-title-width: 25rem;');\n });\n\n const screenshot = await page.screenshot();\n expect(screenshot).toMatchImageSnapshot();\n });\n });\n\n describe.each(['<mg-form>', '<mg-form lang=\"fr\">'])('With different locale', startTag => {\n describe.each([inputsScriptRequiredAll, inputsScriptRequiredSome, inputsScriptRequiredSingle])('Should render required and errors', inputsScriptRequired => {\n test('Should render errors', async () => {\n const page = await createPage(`${startTag}\n ${inputs}\n </mg-form>\n ${inputsScript}\n ${inputsScriptRequired}`);\n\n const element = await page.find('mg-form');\n expect(element).toHaveClass('hydrated');\n\n const screenshot = await page.screenshot();\n expect(screenshot).toMatchImageSnapshot();\n\n await element.callMethod('displayError');\n await page.waitForChanges();\n\n const screenshotErrors = await page.screenshot();\n expect(screenshotErrors).toMatchImageSnapshot();\n });\n });\n test('Should render single required input in form', async () => {\n const page = await createPage(`${startTag}\n <mg-input-date identifier=\"mg-input-date\" label=\"mg-input-date label\"></mg-input-date>\n </mg-form>\n <script>\n const mgInputDate = document.querySelector('mg-input-date');\n mgInputDate.required = true;\n </script>`);\n const element = await page.find('mg-form');\n expect(element).toHaveClass('hydrated');\n\n const screenshot = await page.screenshot();\n expect(screenshot).toMatchImageSnapshot();\n\n await element.callMethod('displayError');\n await page.waitForChanges();\n\n const screenshotErrors = await page.screenshot();\n expect(screenshotErrors).toMatchImageSnapshot();\n });\n });\n\n test.each(['readonly', 'disabled'])('Should not have required message when all inputs are required and %s', async attribute => {\n const page = await createPage(`<mg-form>\n ${inputs}\n </mg-form>\n ${inputsScript}\n ${inputsScriptSetValues}\n ${inputsScriptRequiredAll}\n ${attribute === 'readonly' ? inputsScriptReadonlyAll : inputsScriptDisabledAll}`);\n\n const element = await page.find('mg-form');\n expect(element).toHaveClass('hydrated');\n\n const screenshot = await page.screenshot();\n expect(screenshot).toMatchImageSnapshot();\n });\n});\n"]}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
3
|
+
import { MgForm } from "../mg-form";
|
|
4
|
+
import { MgButton } from "../../../atoms/mg-button/mg-button";
|
|
5
|
+
import { buttonTypes } from "../../../atoms/mg-button/mg-button.conf";
|
|
6
|
+
import { MgInputCheckbox } from "../../inputs/mg-input-checkbox/mg-input-checkbox";
|
|
7
|
+
import { MgInputDate } from "../../inputs/mg-input-date/mg-input-date";
|
|
8
|
+
import { MgInputNumeric } from "../../inputs/mg-input-numeric/mg-input-numeric";
|
|
9
|
+
import { MgInputPassword } from "../../inputs/mg-input-password/mg-input-password";
|
|
10
|
+
import { MgInputRadio } from "../../inputs/mg-input-radio/mg-input-radio";
|
|
11
|
+
import { MgInputSelect } from "../../inputs/mg-input-select/mg-input-select";
|
|
12
|
+
import { MgInputText } from "../../inputs/mg-input-text/mg-input-text";
|
|
13
|
+
import { MgInputTextarea } from "../../inputs/mg-input-textarea/mg-input-textarea";
|
|
14
|
+
import { MgInputToggle } from "../../inputs/mg-input-toggle/mg-input-toggle";
|
|
15
|
+
import { setupMutationObserverMock, setupSubmitEventMock } from "../../../../utils/unit.test.utils";
|
|
16
|
+
const getPage = (args, content) => {
|
|
17
|
+
const page = newSpecPage({
|
|
18
|
+
components: [MgForm, MgInputCheckbox, MgInputDate, MgInputNumeric, MgInputPassword, MgInputRadio, MgInputSelect, MgInputText, MgInputTextarea, MgInputToggle, MgButton],
|
|
19
|
+
template: () => h("mg-form", Object.assign({}, args), content),
|
|
20
|
+
});
|
|
21
|
+
jest.runAllTimers();
|
|
22
|
+
return page;
|
|
23
|
+
};
|
|
24
|
+
const getSlottedContent = () => [
|
|
25
|
+
h("mg-input-checkbox", { identifier: "mg-input-checkbox", label: "mg-input-checkbox label", value: [
|
|
26
|
+
{ title: 'oui', value: true },
|
|
27
|
+
{ title: 'non', value: false },
|
|
28
|
+
] }),
|
|
29
|
+
h("mg-input-date", { identifier: "mg-input-date", label: "mg-input-date label" }),
|
|
30
|
+
h("mg-input-numeric", { identifier: "mg-input-numeric", label: "mg-input-numeric label" }),
|
|
31
|
+
h("mg-input-password", { identifier: "mg-input-password", label: "mg-input-password label" }),
|
|
32
|
+
h("mg-input-radio", { identifier: "mg-input-radio", label: "mg-input-radio label", items: ['blu', 'bli', 'bla', 'blo'] }),
|
|
33
|
+
h("mg-input-select", { identifier: "mg-input-select", label: "mg-input-select label", items: ['blu', 'bli', 'bla', 'blo'] }),
|
|
34
|
+
h("mg-input-text", { identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
35
|
+
h("mg-input-textarea", { identifier: "mg-input-textarea", label: "mg-input-textarea label" }),
|
|
36
|
+
h("mg-input-toggle", { identifier: "mg-input-toggle", label: "mg-input-toggle label", items: [
|
|
37
|
+
{ title: 'non', value: false },
|
|
38
|
+
{ title: 'oui', value: true },
|
|
39
|
+
] }, h("span", { slot: "item-1" }, "non"), h("span", { slot: "item-2" }, "oui")),
|
|
40
|
+
];
|
|
41
|
+
const setCheckValitidy = (input) => {
|
|
42
|
+
const shadowInputs = input.shadowRoot.querySelectorAll('input, textarea, select');
|
|
43
|
+
shadowInputs.forEach(input => {
|
|
44
|
+
input.checkValidity = jest.fn(() => false);
|
|
45
|
+
Object.defineProperty(input, 'validity', {
|
|
46
|
+
get: jest.fn(() => ({
|
|
47
|
+
valueMissing: true,
|
|
48
|
+
})),
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const setMgInputChecboxeInvalid = (input) => {
|
|
53
|
+
input.required = true;
|
|
54
|
+
input.value = [
|
|
55
|
+
{ title: 'oui', value: false },
|
|
56
|
+
{ title: 'non', value: false },
|
|
57
|
+
];
|
|
58
|
+
};
|
|
59
|
+
describe('mg-form', () => {
|
|
60
|
+
let fireMo;
|
|
61
|
+
beforeEach(() => {
|
|
62
|
+
jest.useFakeTimers();
|
|
63
|
+
setupMutationObserverMock({
|
|
64
|
+
observe: function () {
|
|
65
|
+
fireMo = this.cb;
|
|
66
|
+
},
|
|
67
|
+
disconnect: function () {
|
|
68
|
+
return null;
|
|
69
|
+
},
|
|
70
|
+
takeRecords: () => [],
|
|
71
|
+
});
|
|
72
|
+
setupSubmitEventMock();
|
|
73
|
+
});
|
|
74
|
+
afterEach(() => jest.runOnlyPendingTimers());
|
|
75
|
+
test.each([
|
|
76
|
+
{ args: { identifier: 'identifier' } },
|
|
77
|
+
{ args: { identifier: 'identifier', readonly: true } },
|
|
78
|
+
{ args: { identifier: 'identifier', disabled: true } },
|
|
79
|
+
{ args: { identifier: 'identifier' }, required: 'one' },
|
|
80
|
+
{ args: { identifier: 'identifier' }, required: 'all' },
|
|
81
|
+
{ args: { identifier: 'identifier' }, required: 'multiple' },
|
|
82
|
+
{ args: { identifier: 'identifier' }, required: 'single' },
|
|
83
|
+
{ args: { identifier: 'identifier' }, readonly: true },
|
|
84
|
+
])('Should render with args %o:', async ({ args, required, readonly }) => {
|
|
85
|
+
const slot = required === 'single' ? getSlottedContent()[0] : getSlottedContent();
|
|
86
|
+
if (required === 'one')
|
|
87
|
+
slot[0].$attrs$.required = true;
|
|
88
|
+
else if (required === 'all')
|
|
89
|
+
slot.forEach(s => {
|
|
90
|
+
s.$attrs$.required = true;
|
|
91
|
+
});
|
|
92
|
+
else if (required === 'multiple') {
|
|
93
|
+
slot[0].$attrs$.required = true;
|
|
94
|
+
slot[1].$attrs$.required = true;
|
|
95
|
+
}
|
|
96
|
+
else if (required === 'single')
|
|
97
|
+
slot.$attrs$.required = true;
|
|
98
|
+
if (readonly)
|
|
99
|
+
slot.forEach(s => {
|
|
100
|
+
s.$attrs$.readonly = true;
|
|
101
|
+
});
|
|
102
|
+
const { root } = await getPage(args, slot);
|
|
103
|
+
expect(root).toMatchSnapshot();
|
|
104
|
+
});
|
|
105
|
+
test.each([false, true])('Should display components errors (readonly: %s)', async (readonly) => {
|
|
106
|
+
const args = { identifier: 'identifier', readonly };
|
|
107
|
+
const slot = getSlottedContent();
|
|
108
|
+
// Set all elements required
|
|
109
|
+
slot.forEach(s => {
|
|
110
|
+
s.$attrs$.required = true;
|
|
111
|
+
});
|
|
112
|
+
const page = await getPage(args, slot);
|
|
113
|
+
const mgForm = page.doc.querySelector('mg-form');
|
|
114
|
+
if (!readonly) {
|
|
115
|
+
// Mock all input validity
|
|
116
|
+
const mgInputs = Array.from(mgForm.querySelectorAll('*')).filter((node) => node.nodeName.startsWith('MG-INPUT-') && node.nodeName !== 'MG-INPUT-TOGGLE');
|
|
117
|
+
mgInputs.forEach(input => {
|
|
118
|
+
if (input.nodeName.includes('CHECKBOX'))
|
|
119
|
+
setMgInputChecboxeInvalid(input);
|
|
120
|
+
setCheckValitidy(input);
|
|
121
|
+
});
|
|
122
|
+
await page.waitForChanges();
|
|
123
|
+
await mgForm.displayError();
|
|
124
|
+
}
|
|
125
|
+
await page.waitForChanges();
|
|
126
|
+
expect(page.root).toMatchSnapshot();
|
|
127
|
+
});
|
|
128
|
+
test.each(['fr', 'xx'])('display error message with locale: %s', async (lang) => {
|
|
129
|
+
const args = { identifier: 'identifier', lang };
|
|
130
|
+
const slot = getSlottedContent();
|
|
131
|
+
// Set all elements required
|
|
132
|
+
slot.forEach(s => {
|
|
133
|
+
s.$attrs$.required = true;
|
|
134
|
+
});
|
|
135
|
+
const page = await getPage(args, slot);
|
|
136
|
+
const mgForm = page.doc.querySelector('mg-form');
|
|
137
|
+
// Mock all input validity
|
|
138
|
+
const mgInputs = Array.from(mgForm.querySelectorAll('*')).filter((node) => node.nodeName.startsWith('MG-INPUT-') && node.nodeName !== 'MG-INPUT-TOGGLE');
|
|
139
|
+
mgInputs.forEach(input => {
|
|
140
|
+
if (input.nodeName.includes('CHECKBOX'))
|
|
141
|
+
setMgInputChecboxeInvalid(input);
|
|
142
|
+
setCheckValitidy(input);
|
|
143
|
+
});
|
|
144
|
+
await page.waitForChanges();
|
|
145
|
+
await mgForm.displayError();
|
|
146
|
+
await page.waitForChanges();
|
|
147
|
+
expect(page.root).toMatchSnapshot();
|
|
148
|
+
});
|
|
149
|
+
test.each([undefined, ...buttonTypes])('Should only emit "submit" event for <mg-button type="submit">, case type is %s', async (type) => {
|
|
150
|
+
const args = { identifier: 'identifier' };
|
|
151
|
+
const slot = [
|
|
152
|
+
...getSlottedContent(),
|
|
153
|
+
h("div", { slot: "actions" }, h("mg-button", { type: type }, "Submit")),
|
|
154
|
+
];
|
|
155
|
+
const page = await getPage(args, slot);
|
|
156
|
+
const mgForm = page.doc.querySelector('mg-form');
|
|
157
|
+
const form = mgForm.shadowRoot.querySelector('form');
|
|
158
|
+
const mgButton = page.doc.querySelector('mg-button');
|
|
159
|
+
const formSpy = jest.spyOn(form, 'dispatchEvent');
|
|
160
|
+
const mgFormSpy = jest.spyOn(page.rootInstance.formSubmit, 'emit');
|
|
161
|
+
mgButton.dispatchEvent(new Event('click', { bubbles: true }));
|
|
162
|
+
await page.waitForChanges();
|
|
163
|
+
if ([undefined, 'submit'].includes(type)) {
|
|
164
|
+
expect(formSpy).toHaveBeenCalledWith(expect.objectContaining({
|
|
165
|
+
type: 'submit',
|
|
166
|
+
cancelable: true,
|
|
167
|
+
}));
|
|
168
|
+
expect(mgFormSpy).toHaveBeenCalled();
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
expect(formSpy).not.toHaveBeenCalled();
|
|
172
|
+
expect(mgFormSpy).not.toHaveBeenCalled();
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
test('Should update input list when element is added to DOM', async () => {
|
|
176
|
+
const args = { identifier: 'identifier' };
|
|
177
|
+
const slot = getSlottedContent();
|
|
178
|
+
const page = await getPage(args, slot);
|
|
179
|
+
spyOn(page.rootInstance, 'setMgInputs');
|
|
180
|
+
expect(page.rootInstance.setMgInputs).not.toHaveBeenCalled();
|
|
181
|
+
fireMo([]);
|
|
182
|
+
await page.waitForChanges();
|
|
183
|
+
expect(page.rootInstance.setMgInputs).toHaveBeenCalled();
|
|
184
|
+
});
|
|
185
|
+
test.each(['readonly', 'disabled'])('Should update input list when attribute % change', async (attribute) => {
|
|
186
|
+
const args = { identifier: 'identifier' };
|
|
187
|
+
const slot = getSlottedContent();
|
|
188
|
+
const page = await getPage(args, slot);
|
|
189
|
+
const mgForm = page.doc.querySelector('mg-form');
|
|
190
|
+
spyOn(page.rootInstance, 'setMgInputs');
|
|
191
|
+
spyOn(page.rootInstance, 'setRequiredMessage');
|
|
192
|
+
expect(page.rootInstance.setMgInputs).not.toHaveBeenCalled();
|
|
193
|
+
expect(page.rootInstance.setRequiredMessage).not.toHaveBeenCalled();
|
|
194
|
+
mgForm[attribute] = true;
|
|
195
|
+
await page.waitForChanges();
|
|
196
|
+
expect(page.rootInstance.setMgInputs).toHaveBeenCalled();
|
|
197
|
+
expect(page.rootInstance.setRequiredMessage).toHaveBeenCalled();
|
|
198
|
+
});
|
|
199
|
+
test.each([
|
|
200
|
+
{
|
|
201
|
+
slot: () => [h("mg-input-text", { identifier: "mg-input-text", label: "mg-input-text label" })],
|
|
202
|
+
message: null,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
slot: () => [
|
|
206
|
+
h("mg-input-text", { identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
207
|
+
h("mg-input-toggle", { identifier: "mg-input-toggle", label: "mg-input-toggle label", items: [
|
|
208
|
+
{ title: 'non', value: false },
|
|
209
|
+
{ title: 'oui', value: true },
|
|
210
|
+
] }, h("span", { slot: "item-1" }, "non"), h("span", { slot: "item-2" }, "oui")),
|
|
211
|
+
],
|
|
212
|
+
message: null,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
slot: () => [h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" })],
|
|
216
|
+
message: 'The field is required',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
slot: () => [
|
|
220
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
221
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
222
|
+
],
|
|
223
|
+
message: 'All fields are required',
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
slot: () => [
|
|
227
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
228
|
+
h("mg-input-text", { identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
229
|
+
],
|
|
230
|
+
message: 'Field with a <strong class="is-asterisk">*</strong> is required',
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
slot: () => [
|
|
234
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
235
|
+
h("mg-input-text", { identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
236
|
+
h("mg-input-toggle", { identifier: "mg-input-toggle", label: "mg-input-toggle label", items: [
|
|
237
|
+
{ title: 'non', value: false },
|
|
238
|
+
{ title: 'oui', value: true },
|
|
239
|
+
] }, h("span", { slot: "item-1" }, "non"), h("span", { slot: "item-2" }, "oui")),
|
|
240
|
+
],
|
|
241
|
+
message: 'Field with a <strong class="is-asterisk">*</strong> is required',
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
slot: () => [
|
|
245
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
246
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
247
|
+
h("mg-input-toggle", { identifier: "mg-input-toggle", label: "mg-input-toggle label", items: [
|
|
248
|
+
{ title: 'non', value: false },
|
|
249
|
+
{ title: 'oui', value: true },
|
|
250
|
+
] }, h("span", { slot: "item-1" }, "non"), h("span", { slot: "item-2" }, "oui")),
|
|
251
|
+
],
|
|
252
|
+
message: 'All fields are required',
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
slot: () => [
|
|
256
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
257
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
258
|
+
h("mg-input-text", { identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
259
|
+
],
|
|
260
|
+
message: 'Fields with a <strong class="is-asterisk">*</strong> are required',
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
slot: () => [
|
|
264
|
+
h("mg-input-text", { required: true, identifier: "mg-input-text", label: "mg-input-text label" }),
|
|
265
|
+
h("mg-input-toggle", { identifier: "mg-input-toggle", label: "mg-input-toggle label", items: [
|
|
266
|
+
{ title: 'non', value: false },
|
|
267
|
+
{ title: 'oui', value: true },
|
|
268
|
+
] }, h("span", { slot: "item-1" }, "non"), h("span", { slot: "item-2" }, "oui")),
|
|
269
|
+
],
|
|
270
|
+
message: 'Field with a <strong class="is-asterisk">*</strong> is required',
|
|
271
|
+
},
|
|
272
|
+
])('Should display needeed required message', async ({ slot, message }) => {
|
|
273
|
+
const page = await getPage({ identifier: 'identifier' }, slot());
|
|
274
|
+
expect(page.rootInstance.requiredMessage).toBe(message);
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
//# sourceMappingURL=mg-form.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mg-form.spec.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-form/test/mg-form.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { MgForm } from '../mg-form';\nimport { MgButton } from '../../../atoms/mg-button/mg-button';\nimport { buttonTypes } from '../../../atoms/mg-button/mg-button.conf';\nimport { MgInputCheckbox } from '../../inputs/mg-input-checkbox/mg-input-checkbox';\nimport { MgInputDate } from '../../inputs/mg-input-date/mg-input-date';\nimport { MgInputNumeric } from '../../inputs/mg-input-numeric/mg-input-numeric';\nimport { MgInputPassword } from '../../inputs/mg-input-password/mg-input-password';\nimport { MgInputRadio } from '../../inputs/mg-input-radio/mg-input-radio';\nimport { MgInputSelect } from '../../inputs/mg-input-select/mg-input-select';\nimport { MgInputText } from '../../inputs/mg-input-text/mg-input-text';\nimport { MgInputTextarea } from '../../inputs/mg-input-textarea/mg-input-textarea';\nimport { MgInputToggle } from '../../inputs/mg-input-toggle/mg-input-toggle';\nimport { HTMLMgInputsElement } from '../../inputs/MgInput.conf';\nimport { setupMutationObserverMock, setupSubmitEventMock } from '../../../../utils/unit.test.utils';\n\nconst getPage = (args, content?) => {\n const page = newSpecPage({\n components: [MgForm, MgInputCheckbox, MgInputDate, MgInputNumeric, MgInputPassword, MgInputRadio, MgInputSelect, MgInputText, MgInputTextarea, MgInputToggle, MgButton],\n template: () => <mg-form {...args}>{content}</mg-form>,\n });\n\n jest.runAllTimers();\n\n return page;\n};\n\nconst getSlottedContent = () => [\n <mg-input-checkbox\n identifier=\"mg-input-checkbox\"\n label=\"mg-input-checkbox label\"\n value={[\n { title: 'oui', value: true },\n { title: 'non', value: false },\n ]}\n ></mg-input-checkbox>,\n <mg-input-date identifier=\"mg-input-date\" label=\"mg-input-date label\"></mg-input-date>,\n <mg-input-numeric identifier=\"mg-input-numeric\" label=\"mg-input-numeric label\"></mg-input-numeric>,\n <mg-input-password identifier=\"mg-input-password\" label=\"mg-input-password label\"></mg-input-password>,\n <mg-input-radio identifier=\"mg-input-radio\" label=\"mg-input-radio label\" items={['blu', 'bli', 'bla', 'blo']}></mg-input-radio>,\n <mg-input-select identifier=\"mg-input-select\" label=\"mg-input-select label\" items={['blu', 'bli', 'bla', 'blo']}></mg-input-select>,\n <mg-input-text identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-textarea identifier=\"mg-input-textarea\" label=\"mg-input-textarea label\"></mg-input-textarea>,\n <mg-input-toggle\n identifier=\"mg-input-toggle\"\n label=\"mg-input-toggle label\"\n items={[\n { title: 'non', value: false },\n { title: 'oui', value: true },\n ]}\n >\n <span slot=\"item-1\">non</span>\n <span slot=\"item-2\">oui</span>\n </mg-input-toggle>,\n];\n\nconst setCheckValitidy = (input: HTMLMgInputsElement): void => {\n const shadowInputs = input.shadowRoot.querySelectorAll('input, textarea, select') as NodeListOf<HTMLInputElement>;\n shadowInputs.forEach(input => {\n input.checkValidity = jest.fn(() => false);\n Object.defineProperty(input, 'validity', {\n get: jest.fn(() => ({\n valueMissing: true,\n })),\n });\n });\n};\n\nconst setMgInputChecboxeInvalid = (input: HTMLMgInputCheckboxElement): void => {\n input.required = true;\n input.value = [\n { title: 'oui', value: false },\n { title: 'non', value: false },\n ];\n};\n\ndescribe('mg-form', () => {\n let fireMo;\n\n beforeEach(() => {\n jest.useFakeTimers();\n\n setupMutationObserverMock({\n observe: function () {\n fireMo = this.cb;\n },\n disconnect: function () {\n return null;\n },\n takeRecords: () => [],\n });\n setupSubmitEventMock();\n });\n\n afterEach(() => jest.runOnlyPendingTimers());\n\n test.each([\n { args: { identifier: 'identifier' } },\n { args: { identifier: 'identifier', readonly: true } },\n { args: { identifier: 'identifier', disabled: true } },\n { args: { identifier: 'identifier' }, required: 'one' },\n { args: { identifier: 'identifier' }, required: 'all' },\n { args: { identifier: 'identifier' }, required: 'multiple' },\n { args: { identifier: 'identifier' }, required: 'single' },\n { args: { identifier: 'identifier' }, readonly: true },\n ])('Should render with args %o:', async ({ args, required, readonly }) => {\n const slot = required === 'single' ? getSlottedContent()[0] : getSlottedContent();\n if (required === 'one') slot[0].$attrs$.required = true;\n else if (required === 'all')\n slot.forEach(s => {\n s.$attrs$.required = true;\n });\n else if (required === 'multiple') {\n slot[0].$attrs$.required = true;\n slot[1].$attrs$.required = true;\n } else if (required === 'single') slot.$attrs$.required = true;\n\n if (readonly)\n slot.forEach(s => {\n s.$attrs$.readonly = true;\n });\n\n const { root } = await getPage(args, slot);\n expect(root).toMatchSnapshot();\n });\n\n test.each([false, true])('Should display components errors (readonly: %s)', async readonly => {\n const args = { identifier: 'identifier', readonly };\n\n const slot = getSlottedContent();\n // Set all elements required\n slot.forEach(s => {\n s.$attrs$.required = true;\n });\n\n const page = await getPage(args, slot);\n const mgForm = page.doc.querySelector('mg-form');\n\n if (!readonly) {\n // Mock all input validity\n const mgInputs = Array.from(mgForm.querySelectorAll('*')).filter(\n (node: Node) => node.nodeName.startsWith('MG-INPUT-') && node.nodeName !== 'MG-INPUT-TOGGLE',\n ) as HTMLMgInputsElement[];\n mgInputs.forEach(input => {\n if (input.nodeName.includes('CHECKBOX')) setMgInputChecboxeInvalid(input as HTMLMgInputCheckboxElement);\n setCheckValitidy(input);\n });\n await page.waitForChanges();\n\n await mgForm.displayError();\n }\n\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n });\n\n test.each(['fr', 'xx'])('display error message with locale: %s', async lang => {\n const args = { identifier: 'identifier', lang };\n\n const slot = getSlottedContent();\n // Set all elements required\n slot.forEach(s => {\n s.$attrs$.required = true;\n });\n\n const page = await getPage(args, slot);\n const mgForm = page.doc.querySelector('mg-form');\n\n // Mock all input validity\n const mgInputs = Array.from(mgForm.querySelectorAll('*')).filter(\n (node: Node) => node.nodeName.startsWith('MG-INPUT-') && node.nodeName !== 'MG-INPUT-TOGGLE',\n ) as HTMLMgInputsElement[];\n mgInputs.forEach(input => {\n if (input.nodeName.includes('CHECKBOX')) setMgInputChecboxeInvalid(input as HTMLMgInputCheckboxElement);\n setCheckValitidy(input);\n });\n await page.waitForChanges();\n\n await mgForm.displayError();\n\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n });\n\n test.each([undefined, ...buttonTypes])('Should only emit \"submit\" event for <mg-button type=\"submit\">, case type is %s', async type => {\n const args = { identifier: 'identifier' };\n const slot = [\n ...getSlottedContent(),\n <div slot=\"actions\">\n <mg-button type={type}>Submit</mg-button>\n </div>,\n ];\n const page = await getPage(args, slot);\n\n const mgForm = page.doc.querySelector('mg-form');\n const form = mgForm.shadowRoot.querySelector('form');\n const mgButton = page.doc.querySelector('mg-button');\n\n const formSpy = jest.spyOn(form, 'dispatchEvent');\n const mgFormSpy = jest.spyOn(page.rootInstance.formSubmit, 'emit');\n\n mgButton.dispatchEvent(new Event('click', { bubbles: true }));\n\n await page.waitForChanges();\n\n if ([undefined, 'submit'].includes(type)) {\n expect(formSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'submit',\n cancelable: true,\n }),\n );\n expect(mgFormSpy).toHaveBeenCalled();\n } else {\n expect(formSpy).not.toHaveBeenCalled();\n expect(mgFormSpy).not.toHaveBeenCalled();\n }\n });\n\n test('Should update input list when element is added to DOM', async () => {\n const args = { identifier: 'identifier' };\n const slot = getSlottedContent();\n const page = await getPage(args, slot);\n\n spyOn(page.rootInstance, 'setMgInputs');\n\n expect(page.rootInstance.setMgInputs).not.toHaveBeenCalled();\n\n fireMo([]);\n await page.waitForChanges();\n\n expect(page.rootInstance.setMgInputs).toHaveBeenCalled();\n });\n\n test.each(['readonly', 'disabled'])('Should update input list when attribute % change', async attribute => {\n const args = { identifier: 'identifier' };\n const slot = getSlottedContent();\n const page = await getPage(args, slot);\n const mgForm = page.doc.querySelector('mg-form');\n\n spyOn(page.rootInstance, 'setMgInputs');\n spyOn(page.rootInstance, 'setRequiredMessage');\n\n expect(page.rootInstance.setMgInputs).not.toHaveBeenCalled();\n expect(page.rootInstance.setRequiredMessage).not.toHaveBeenCalled();\n\n mgForm[attribute] = true;\n await page.waitForChanges();\n\n expect(page.rootInstance.setMgInputs).toHaveBeenCalled();\n expect(page.rootInstance.setRequiredMessage).toHaveBeenCalled();\n });\n\n test.each([\n {\n slot: () => [<mg-input-text identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>],\n message: null,\n },\n {\n slot: () => [\n <mg-input-text identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-toggle\n identifier=\"mg-input-toggle\"\n label=\"mg-input-toggle label\"\n items={[\n { title: 'non', value: false },\n { title: 'oui', value: true },\n ]}\n >\n <span slot=\"item-1\">non</span>\n <span slot=\"item-2\">oui</span>\n </mg-input-toggle>,\n ],\n message: null,\n },\n {\n slot: () => [<mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>],\n message: 'The field is required',\n },\n {\n slot: () => [\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n ],\n message: 'All fields are required',\n },\n {\n slot: () => [\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-text identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n ],\n message: 'Field with a <strong class=\"is-asterisk\">*</strong> is required',\n },\n {\n slot: () => [\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-text identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-toggle\n identifier=\"mg-input-toggle\"\n label=\"mg-input-toggle label\"\n items={[\n { title: 'non', value: false },\n { title: 'oui', value: true },\n ]}\n >\n <span slot=\"item-1\">non</span>\n <span slot=\"item-2\">oui</span>\n </mg-input-toggle>,\n ],\n message: 'Field with a <strong class=\"is-asterisk\">*</strong> is required',\n },\n {\n slot: () => [\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-toggle\n identifier=\"mg-input-toggle\"\n label=\"mg-input-toggle label\"\n items={[\n { title: 'non', value: false },\n { title: 'oui', value: true },\n ]}\n >\n <span slot=\"item-1\">non</span>\n <span slot=\"item-2\">oui</span>\n </mg-input-toggle>,\n ],\n message: 'All fields are required',\n },\n {\n slot: () => [\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-text identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n ],\n message: 'Fields with a <strong class=\"is-asterisk\">*</strong> are required',\n },\n {\n slot: () => [\n <mg-input-text required identifier=\"mg-input-text\" label=\"mg-input-text label\"></mg-input-text>,\n <mg-input-toggle\n identifier=\"mg-input-toggle\"\n label=\"mg-input-toggle label\"\n items={[\n { title: 'non', value: false },\n { title: 'oui', value: true },\n ]}\n >\n <span slot=\"item-1\">non</span>\n <span slot=\"item-2\">oui</span>\n </mg-input-toggle>,\n ],\n message: 'Field with a <strong class=\"is-asterisk\">*</strong> is required',\n },\n ])('Should display needeed required message', async ({ slot, message }) => {\n const page = await getPage({ identifier: 'identifier' }, slot());\n\n expect(page.rootInstance.requiredMessage).toBe(message);\n });\n});\n"]}
|
package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h } from
|
|
2
|
-
import { isTagName } from
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { isTagName } from "../../../utils/components.utils";
|
|
3
3
|
export class MgIllustratedMessage {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.size = 'regular';
|
|
@@ -89,3 +89,4 @@ export class MgIllustratedMessage {
|
|
|
89
89
|
}
|
|
90
90
|
static get elementRef() { return "element"; }
|
|
91
91
|
}
|
|
92
|
+
//# sourceMappingURL=mg-illustrated-message.js.map
|
package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mg-illustrated-message.js","sourceRoot":"","sources":["../../../../src/components/molecules/mg-illustrated-message/mg-illustrated-message.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAO5D,MAAM,OAAO,oBAAoB;;gBAaK,SAAS;qBAKE,UAAU;;EAEzD;;iBAEe;EAEf;;KAEG;EACH,gBAAgB;IACd,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAEpF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,EAAE;MACzE,MAAM,IAAI,KAAK,CAAC,6DAA6D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxG;SAAM,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;MAC5C,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;KAC9F;IAED,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;EAC9D,CAAC;EAED;;;KAGG;EACH,MAAM;IACJ,OAAO,CACL,WACE,KAAK,EAAE;QACL,wBAAwB,EAAE,IAAI;QAC9B,oCAAoC,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY;OACtE;MAED,WACE,KAAK,EAAE;UACL,sCAAsC,EAAE,IAAI;UAC5C,6CAA6C,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;SACrE;QAED,YAAM,IAAI,EAAC,cAAc,GAAQ,CAC7B;MACN,WAAK,KAAK,EAAC,+BAA+B;QACxC,WAAK,KAAK,EAAC,+BAA+B;UACxC,YAAM,IAAI,EAAC,OAAO,GAAQ,CACtB;QACN,WAAK,KAAK,EAAC,iCAAiC;UAC1C,YAAM,IAAI,EAAC,SAAS,GAAQ,CACxB,CACF,CACF,CACP,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, h, Prop } from '@stencil/core';\nimport { isTagName } from '../../../utils/components.utils';\n\n@Component({\n tag: 'mg-illustrated-message',\n styleUrl: 'mg-illustrated-message.scss',\n shadow: true,\n})\nexport class MgIllustratedMessage {\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgIllustratedMessageElement;\n\n /**\n * Define illustration size\n */\n @Prop() size: 'regular' | 'small' = 'regular';\n\n /**\n * Define component orientation\n */\n @Prop() direction: 'vertical' | 'horizontal' = 'vertical';\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are well configured on init\n */\n componentDidLoad(): void {\n const headingTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n const slottedIllustrations = this.element.querySelectorAll('[slot=\"illustration\"]');\n\n if (!isTagName(this.element.querySelector('[slot=\"title\"]'), headingTags)) {\n throw new Error(`<mg-illustrated-message> Slotted title must be a heading: ${headingTags.join(', ')}`);\n } else if (slottedIllustrations.length !== 1) {\n throw new Error('<mg-illustrated-message> Slotted illustration must be present and unique.');\n }\n\n slottedIllustrations[0].setAttribute('aria-hidden', 'true');\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <div\n class={{\n 'mg-illustrated-message': true,\n 'mg-illustrated-message--horizontal': this.direction === 'horizontal',\n }}\n >\n <div\n class={{\n 'mg-illustrated-message__illustration': true,\n 'mg-illustrated-message__illustration--small': this.size === 'small',\n }}\n >\n <slot name=\"illustration\"></slot>\n </div>\n <div class=\"mg-illustrated-message__slots\">\n <div class=\"mg-illustrated-message__title\">\n <slot name=\"title\"></slot>\n </div>\n <div class=\"mg-illustrated-message__details\">\n <slot name=\"details\"></slot>\n </div>\n </div>\n </div>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createPage } from "../../../../utils/stencil.e2e.test.utils";
|
|
2
|
+
const template = (size = 'regular', direction = 'vertical') => `<mg-illustrated-message size="${size}" direction="${direction}">
|
|
3
|
+
<svg slot="illustration" width="190" height="350" viewBox="0 0 190 350" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
+
<path
|
|
5
|
+
fill-rule="evenodd"
|
|
6
|
+
clip-rule="evenodd"
|
|
7
|
+
d="M0 0H15C23.2843 0 30 6.71573 30 15V290H40V15C40 6.71573 46.7157 0 55 0C63.2843 0 70 6.71573 70 15V275C70 277.761 67.7615 280 65 280H60V40H50V340H60V290H65C67.7615 290 70 292.239 70 295V340H80V295C80 291.158 78.5558 287.654 76.1805 285C78.5558 282.346 80 278.842 80 275V0H95C103.284 0 110 6.71573 110 15V25C110 28.8418 108.556 32.3462 106.181 35C108.556 37.6538 110 41.1582 110 45V305C110 307.761 107.761 310 105 310H100V45C100 42.2386 97.7615 40 95 40H90V325C90 333.284 96.7157 340 105 340H120V330H105C102.239 330 100 327.761 100 325V320H105C113.284 320 120 313.284 120 305V15C120 6.71573 126.716 0 135 0C143.284 0 150 6.71573 150 15V330H140V15C140 12.2386 137.761 10 135 10C132.239 10 130 12.2386 130 15V340H165C173.284 340 180 333.284 180 325V15C180 12.2386 177.761 10 175 10H170V325C170 327.761 167.761 330 165 330H160V0H175C183.284 0 190 6.71573 190 15V350H0V0ZM10 325C10 333.284 16.7157 340 25 340C33.2843 340 40 333.284 40 325V300H30V325C30 327.761 27.7615 330 25 330C22.2385 330 20 327.761 20 325V15C20 12.2386 17.7615 10 15 10H10V325ZM60 15V30H50V15C50 12.2386 52.2385 10 55 10C57.7615 10 60 12.2386 60 15ZM95 30H90V10H95C97.7615 10 100 12.2386 100 15V25C100 27.7614 97.7615 30 95 30Z"
|
|
8
|
+
fill="black"
|
|
9
|
+
/>
|
|
10
|
+
</svg>
|
|
11
|
+
<h2 slot="title">Lorem Ipsum</h2>
|
|
12
|
+
<h3 slot="details">The standard Lorem Ipsum passage, used since the 1500s</h3>
|
|
13
|
+
<div slot="details">
|
|
14
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
|
|
15
|
+
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
|
|
16
|
+
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
17
|
+
</div>
|
|
18
|
+
</mg-illustrated-message>`;
|
|
19
|
+
describe('mg-illustrated-message', () => {
|
|
20
|
+
test.each(['regular', 'small'])('renders size %', async (size) => {
|
|
21
|
+
const page = await createPage(template(size));
|
|
22
|
+
const element = await page.find('mg-illustrated-message');
|
|
23
|
+
expect(element).toHaveClass('hydrated');
|
|
24
|
+
const screenshot = await page.screenshot();
|
|
25
|
+
expect(screenshot).toMatchImageSnapshot();
|
|
26
|
+
});
|
|
27
|
+
test('renders horizontal', async () => {
|
|
28
|
+
const page = await createPage(template(undefined, 'horizontal'));
|
|
29
|
+
const element = await page.find('mg-illustrated-message');
|
|
30
|
+
expect(element).toHaveClass('hydrated');
|
|
31
|
+
await page.setViewport({ width: 800, height: 300 });
|
|
32
|
+
const screenshot = await page.screenshot();
|
|
33
|
+
expect(screenshot).toMatchImageSnapshot();
|
|
34
|
+
await page.setViewport({ width: 600, height: 600 });
|
|
35
|
+
const screenshotResponsive = await page.screenshot();
|
|
36
|
+
expect(screenshotResponsive).toMatchImageSnapshot();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=mg-illustrated-message.e2e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mg-illustrated-message.e2e.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-illustrated-message/test/mg-illustrated-message.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAEtE,MAAM,QAAQ,GAAG,CAAC,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,UAAU,EAAE,EAAE,CAAC,iCAAiC,IAAI,gBAAgB,SAAS;;;;;;;;;;;;;;;;0BAgBnG,CAAC;AAE3B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;EACtC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;IAC7D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;EAC5C,CAAC,CAAC,CAAC;EAEH,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAExC,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAE1C,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAEpD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACrD,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,EAAE,CAAC;EACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { createPage } from '../../../../utils/stencil.e2e.test.utils';\n\nconst template = (size = 'regular', direction = 'vertical') => `<mg-illustrated-message size=\"${size}\" direction=\"${direction}\">\n<svg slot=\"illustration\" width=\"190\" height=\"350\" viewBox=\"0 0 190 350\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M0 0H15C23.2843 0 30 6.71573 30 15V290H40V15C40 6.71573 46.7157 0 55 0C63.2843 0 70 6.71573 70 15V275C70 277.761 67.7615 280 65 280H60V40H50V340H60V290H65C67.7615 290 70 292.239 70 295V340H80V295C80 291.158 78.5558 287.654 76.1805 285C78.5558 282.346 80 278.842 80 275V0H95C103.284 0 110 6.71573 110 15V25C110 28.8418 108.556 32.3462 106.181 35C108.556 37.6538 110 41.1582 110 45V305C110 307.761 107.761 310 105 310H100V45C100 42.2386 97.7615 40 95 40H90V325C90 333.284 96.7157 340 105 340H120V330H105C102.239 330 100 327.761 100 325V320H105C113.284 320 120 313.284 120 305V15C120 6.71573 126.716 0 135 0C143.284 0 150 6.71573 150 15V330H140V15C140 12.2386 137.761 10 135 10C132.239 10 130 12.2386 130 15V340H165C173.284 340 180 333.284 180 325V15C180 12.2386 177.761 10 175 10H170V325C170 327.761 167.761 330 165 330H160V0H175C183.284 0 190 6.71573 190 15V350H0V0ZM10 325C10 333.284 16.7157 340 25 340C33.2843 340 40 333.284 40 325V300H30V325C30 327.761 27.7615 330 25 330C22.2385 330 20 327.761 20 325V15C20 12.2386 17.7615 10 15 10H10V325ZM60 15V30H50V15C50 12.2386 52.2385 10 55 10C57.7615 10 60 12.2386 60 15ZM95 30H90V10H95C97.7615 10 100 12.2386 100 15V25C100 27.7614 97.7615 30 95 30Z\"\n fill=\"black\"\n />\n</svg>\n<h2 slot=\"title\">Lorem Ipsum</h2>\n<h3 slot=\"details\">The standard Lorem Ipsum passage, used since the 1500s</h3>\n<div slot=\"details\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud\n exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla\n pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n</div>\n</mg-illustrated-message>`;\n\ndescribe('mg-illustrated-message', () => {\n test.each(['regular', 'small'])('renders size %', async size => {\n const page = await createPage(template(size));\n\n const element = await page.find('mg-illustrated-message');\n expect(element).toHaveClass('hydrated');\n\n const screenshot = await page.screenshot();\n expect(screenshot).toMatchImageSnapshot();\n });\n\n test('renders horizontal', async () => {\n const page = await createPage(template(undefined, 'horizontal'));\n\n const element = await page.find('mg-illustrated-message');\n expect(element).toHaveClass('hydrated');\n\n await page.setViewport({ width: 800, height: 300 });\n\n const screenshot = await page.screenshot();\n expect(screenshot).toMatchImageSnapshot();\n\n await page.setViewport({ width: 600, height: 600 });\n\n const screenshotResponsive = await page.screenshot();\n expect(screenshotResponsive).toMatchImageSnapshot();\n });\n});\n"]}
|