@mgdis/mg-components 5.17.0 → 5.19.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/{mg-menu.conf-43aacf30.js → components.utils-dc9c8a53.js} +160 -7
- package/dist/cjs/components.utils-dc9c8a53.js.map +1 -0
- package/dist/cjs/index-c042e24b.js +18 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mg-action-more_34.cjs.entry.js +761 -582
- package/dist/cjs/mg-action-more_34.cjs.entry.js.map +1 -1
- package/dist/cjs/mg-components.cjs.js +1 -1
- package/dist/cjs/mg-item-more.cjs.entry.js +5 -5
- package/dist/cjs/mg-item-more.cjs.entry.js.map +1 -1
- package/dist/collection/components/atoms/mg-badge/mg-badge.js +9 -9
- package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +1 -1
- package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js +5 -5
- package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js.map +1 -1
- package/dist/collection/components/atoms/mg-button/mg-button.js +12 -12
- package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -1
- package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js +4 -4
- package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js.map +1 -1
- package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js +3 -3
- package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js.map +1 -1
- package/dist/collection/components/atoms/mg-card/mg-card.js +9 -9
- package/dist/collection/components/atoms/mg-card/mg-card.js.map +1 -1
- package/dist/collection/components/atoms/mg-character-left/mg-character-left.js +3 -3
- package/dist/collection/components/atoms/mg-character-left/mg-character-left.js.map +1 -1
- package/dist/collection/components/atoms/mg-divider/mg-divider.js +4 -4
- package/dist/collection/components/atoms/mg-divider/mg-divider.js.map +1 -1
- package/dist/collection/components/atoms/mg-icon/mg-icon.js +13 -15
- package/dist/collection/components/atoms/mg-icon/mg-icon.js.map +1 -1
- package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js +4 -4
- package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js.map +1 -1
- package/dist/collection/components/atoms/mg-input-title/mg-input-title.js +5 -4
- package/dist/collection/components/atoms/mg-input-title/mg-input-title.js.map +1 -1
- package/dist/collection/components/atoms/mg-tag/mg-tag.js +9 -9
- package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +1 -1
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.playwright.js +23 -0
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.playwright.js.map +1 -0
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js +5 -5
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js.map +1 -1
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +2 -2
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js.map +1 -1
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +37 -17
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -1
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js +7 -1
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js.map +1 -1
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js +9 -1
- package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/MgInput.js +12 -11
- package/dist/collection/components/molecules/inputs/MgInput.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js +4 -4
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +2 -2
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +111 -38
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js +21 -27
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js +62 -6
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +84 -13
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.spec.js +55 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +115 -44
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.spec.js +55 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +88 -15
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.spec.js +55 -0
- package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +87 -14
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.spec.js +60 -0
- package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +87 -14
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.spec.js +55 -0
- package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.conf.js +5 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.conf.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +151 -34
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.playwright.js +147 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js +80 -7
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +110 -36
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js +69 -6
- package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +9 -9
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js +2 -2
- package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js.map +1 -1
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +2 -2
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js.map +1 -1
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +8 -9
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js.map +1 -1
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +6 -6
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -1
- package/dist/collection/components/molecules/mg-details/mg-details.js +5 -4
- package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -1
- package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js +1 -1
- package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js.map +1 -1
- package/dist/collection/components/molecules/mg-form/mg-form.js +6 -6
- package/dist/collection/components/molecules/mg-form/mg-form.js.map +1 -1
- package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js +4 -4
- package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js.map +1 -1
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +7 -7
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +1 -1
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +5 -4
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.js.map +1 -1
- package/dist/collection/components/molecules/mg-message/mg-message.js +8 -8
- package/dist/collection/components/molecules/mg-message/mg-message.js.map +1 -1
- package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js +11 -11
- package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js.map +1 -1
- package/dist/collection/components/molecules/mg-modal/mg-modal.js +8 -8
- package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -1
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js +7 -7
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js.map +1 -1
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js +3 -3
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js.map +1 -1
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js +1 -1
- package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js.map +1 -1
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +3 -3
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -1
- package/dist/collection/components/molecules/mg-panel/mg-panel.js +17 -15
- package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +1 -1
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js +3 -3
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js.map +1 -1
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js +11 -21
- package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js.map +1 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +4 -4
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js.map +1 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover.js +36 -16
- package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -1
- package/dist/collection/components/molecules/mg-popover/test/{mg-popover.e2e.js → mg-popover.e2e.playwright.js} +54 -62
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.playwright.js.map +1 -0
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.spec.js +12 -0
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.spec.js.map +1 -1
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +5 -6
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js.map +1 -1
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +34 -34
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -1
- package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js +13 -13
- package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js.map +1 -1
- package/dist/collection/locales/en/messages.json +3 -3
- package/dist/collection/locales/fr/messages.json +3 -3
- package/dist/collection/utils/components.utils.js +16 -0
- package/dist/collection/utils/components.utils.js.map +1 -1
- package/dist/collection/utils/components.utils.spec.js +22 -1
- package/dist/collection/utils/components.utils.spec.js.map +1 -1
- package/dist/collection/variables.css +1 -275
- package/dist/components/MgInput.js +17 -16
- package/dist/components/MgInput.js.map +1 -1
- package/dist/components/components.utils.js +17 -1
- package/dist/components/components.utils.js.map +1 -1
- package/dist/components/index2.js +6 -6
- package/dist/components/mg-action-more.js +5 -5
- package/dist/components/mg-action-more.js.map +1 -1
- package/dist/components/mg-badge2.js +8 -8
- package/dist/components/mg-badge2.js.map +1 -1
- package/dist/components/mg-button2.js +11 -11
- package/dist/components/mg-button2.js.map +1 -1
- package/dist/components/mg-card2.js +8 -8
- package/dist/components/mg-card2.js.map +1 -1
- package/dist/components/mg-character-left2.js +1 -1
- package/dist/components/mg-character-left2.js.map +1 -1
- package/dist/components/mg-details.js +4 -3
- package/dist/components/mg-details.js.map +1 -1
- package/dist/components/mg-divider.js +3 -3
- package/dist/components/mg-divider.js.map +1 -1
- package/dist/components/mg-form.js +4 -4
- package/dist/components/mg-form.js.map +1 -1
- package/dist/components/mg-icon2.js +12 -14
- package/dist/components/mg-icon2.js.map +1 -1
- package/dist/components/mg-illustrated-message.js +7 -7
- package/dist/components/mg-illustrated-message.js.map +1 -1
- package/dist/components/mg-input-checkbox-paginated2.js +8 -8
- package/dist/components/mg-input-checkbox-paginated2.js.map +1 -1
- package/dist/components/mg-input-checkbox.js +70 -34
- package/dist/components/mg-input-checkbox.js.map +1 -1
- package/dist/components/mg-input-date.js +45 -12
- package/dist/components/mg-input-date.js.map +1 -1
- package/dist/components/mg-input-numeric.js +76 -43
- package/dist/components/mg-input-numeric.js.map +1 -1
- package/dist/components/mg-input-password.js +49 -14
- package/dist/components/mg-input-password.js.map +1 -1
- package/dist/components/mg-input-radio.js +48 -13
- package/dist/components/mg-input-radio.js.map +1 -1
- package/dist/components/mg-input-select2.js +48 -13
- package/dist/components/mg-input-select2.js.map +1 -1
- package/dist/components/mg-input-text2.js +83 -33
- package/dist/components/mg-input-text2.js.map +1 -1
- package/dist/components/mg-input-textarea.js +69 -35
- package/dist/components/mg-input-textarea.js.map +1 -1
- package/dist/components/mg-input-title2.js +4 -3
- package/dist/components/mg-input-title2.js.map +1 -1
- package/dist/components/mg-input-toggle.js +9 -9
- package/dist/components/mg-input-toggle.js.map +1 -1
- package/dist/components/mg-item-more.js +4 -3
- package/dist/components/mg-item-more.js.map +1 -1
- package/dist/components/mg-menu-item2.js +7 -8
- package/dist/components/mg-menu-item2.js.map +1 -1
- package/dist/components/mg-menu2.js +1 -1
- package/dist/components/mg-menu2.js.map +1 -1
- package/dist/components/mg-message.js +7 -7
- package/dist/components/mg-message.js.map +1 -1
- package/dist/components/mg-modal.js +7 -7
- package/dist/components/mg-modal.js.map +1 -1
- package/dist/components/mg-pagination2.js +2 -2
- package/dist/components/mg-pagination2.js.map +1 -1
- package/dist/components/mg-panel.js +16 -15
- package/dist/components/mg-panel.js.map +1 -1
- package/dist/components/mg-popover-content2.js +4 -4
- package/dist/components/mg-popover-content2.js.map +1 -1
- package/dist/components/mg-popover2.js +33 -14
- package/dist/components/mg-popover2.js.map +1 -1
- package/dist/components/mg-skip-links.js +4 -5
- package/dist/components/mg-skip-links.js.map +1 -1
- package/dist/components/mg-tabs.js +33 -33
- package/dist/components/mg-tabs.js.map +1 -1
- package/dist/components/mg-tag.js +8 -8
- package/dist/components/mg-tag.js.map +1 -1
- package/dist/components/mg-tooltip-content2.js +1 -1
- package/dist/components/mg-tooltip-content2.js.map +1 -1
- package/dist/components/mg-tooltip2.js +34 -15
- package/dist/components/mg-tooltip2.js.map +1 -1
- package/dist/esm/{mg-menu.conf-012fc9b4.js → components.utils-0f76010d.js} +153 -8
- package/dist/esm/components.utils-0f76010d.js.map +1 -0
- package/dist/esm/index-ce01e63b.js +18 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/mg-action-more_34.entry.js +697 -518
- package/dist/esm/mg-action-more_34.entry.js.map +1 -1
- package/dist/esm/mg-components.js +1 -1
- package/dist/esm/mg-item-more.entry.js +4 -4
- package/dist/esm/mg-item-more.entry.js.map +1 -1
- package/dist/mg-components/locales/en/messages.json +3 -3
- package/dist/mg-components/locales/fr/messages.json +3 -3
- package/dist/mg-components/mg-components.css +1 -1
- package/dist/mg-components/mg-components.esm.js +1 -1
- package/dist/mg-components/mg-components.esm.js.map +1 -1
- package/dist/mg-components/p-768fc594.entry.js +2 -0
- package/dist/mg-components/p-768fc594.entry.js.map +1 -0
- package/dist/mg-components/p-c9e2c669.js +2 -0
- package/dist/mg-components/p-c9e2c669.js.map +1 -0
- package/dist/mg-components/p-d2d6afec.entry.js +2 -0
- package/dist/mg-components/p-d2d6afec.entry.js.map +1 -0
- package/dist/mg-components/variables.css +1 -275
- package/dist/types/components/atoms/mg-card/mg-card.d.ts +1 -1
- package/dist/types/components/atoms/mg-input-title/mg-input-title.d.ts +1 -1
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +4 -3
- package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.d.ts +1 -1
- package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.d.ts +4 -4
- package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.d.ts +22 -1
- package/dist/types/components/molecules/inputs/mg-input-date/mg-input-date.d.ts +17 -2
- package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +35 -20
- package/dist/types/components/molecules/inputs/mg-input-password/mg-input-password.d.ts +16 -1
- package/dist/types/components/molecules/inputs/mg-input-radio/mg-input-radio.d.ts +16 -1
- package/dist/types/components/molecules/inputs/mg-input-select/mg-input-select.d.ts +16 -1
- package/dist/types/components/molecules/inputs/mg-input-text/mg-input-text.conf.d.ts +12 -0
- package/dist/types/components/molecules/inputs/mg-input-text/mg-input-text.d.ts +30 -6
- package/dist/types/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/inputs/mg-input-textarea/mg-input-textarea.d.ts +17 -5
- package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +2 -1
- package/dist/types/components/molecules/mg-form/mg-form.d.ts +1 -1
- package/dist/types/components/molecules/mg-panel/mg-panel.d.ts +3 -3
- package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +2 -1
- package/dist/types/components/molecules/mg-popover/test/mg-popover.e2e.playwright.d.ts +1 -0
- package/dist/types/components/molecules/mg-tabs/mg-tabs.d.ts +6 -5
- package/dist/types/components.d.ts +71 -13
- package/dist/types/utils/components.utils.d.ts +12 -0
- package/package.json +17 -18
- package/readme.md +0 -31
- package/dist/cjs/mg-menu.conf-43aacf30.js.map +0 -1
- package/dist/collection/components/atoms/mg-badge/mg-badge.css +0 -116
- package/dist/collection/components/atoms/mg-button/mg-button.css +0 -182
- package/dist/collection/components/atoms/mg-card/mg-card.css +0 -75
- package/dist/collection/components/atoms/mg-character-left/mg-character-left.css +0 -3
- package/dist/collection/components/atoms/mg-divider/mg-divider.css +0 -9
- package/dist/collection/components/atoms/mg-icon/mg-icon.css +0 -138
- package/dist/collection/components/atoms/mg-input-title/mg-input-title.css +0 -12
- package/dist/collection/components/atoms/mg-tag/mg-tag.css +0 -131
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js +0 -37
- package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js.map +0 -1
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.css +0 -43
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.css +0 -3
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.css +0 -268
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.css +0 -211
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.css +0 -257
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.css +0 -254
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.css +0 -179
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.css +0 -264
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.css +0 -304
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js +0 -171
- package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js.map +0 -1
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.css +0 -303
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.css +0 -233
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.css +0 -37
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.css +0 -377
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.css +0 -39
- package/dist/collection/components/molecules/mg-details/mg-details.css +0 -64
- package/dist/collection/components/molecules/mg-form/mg-form.css +0 -19
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.css +0 -45
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.css +0 -30
- package/dist/collection/components/molecules/mg-message/mg-message.css +0 -82
- package/dist/collection/components/molecules/mg-modal/mg-modal.css +0 -67
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.css +0 -47
- package/dist/collection/components/molecules/mg-panel/mg-panel.css +0 -64
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.css +0 -135
- package/dist/collection/components/molecules/mg-popover/mg-popover.css +0 -11
- package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.js.map +0 -1
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.css +0 -28
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.css +0 -99
- package/dist/collection/styles/a11y.scss +0 -36
- package/dist/collection/styles/fonts.scss +0 -21
- package/dist/collection/styles/form.scss +0 -3
- package/dist/collection/styles/global.scss +0 -80
- package/dist/collection/styles/layout.scss +0 -29
- package/dist/collection/styles/main.scss +0 -23
- package/dist/collection/styles/mg-icon-animation.scss +0 -6
- package/dist/collection/styles/navigation-button.scss +0 -77
- package/dist/collection/styles/reset-mg-card-slotted-variables.scss +0 -11
- package/dist/collection/styles/typography.scss +0 -82
- package/dist/collection/styles/utilities.scss +0 -21
- package/dist/collection/test/typography.e2e.playwright.js +0 -12
- package/dist/collection/test/typography.e2e.playwright.js.map +0 -1
- package/dist/esm/mg-menu.conf-012fc9b4.js.map +0 -1
- package/dist/mg-components/p-1d7d6fa0.js +0 -2
- package/dist/mg-components/p-1d7d6fa0.js.map +0 -1
- package/dist/mg-components/p-9257e8f1.entry.js +0 -2
- package/dist/mg-components/p-9257e8f1.entry.js.map +0 -1
- package/dist/mg-components/p-caafc9cf.entry.js +0 -2
- package/dist/mg-components/p-caafc9cf.entry.js.map +0 -1
- package/dist/mg-components/styles/a11y.scss +0 -36
- package/dist/mg-components/styles/fonts.scss +0 -21
- package/dist/mg-components/styles/form.scss +0 -3
- package/dist/mg-components/styles/global.scss +0 -80
- package/dist/mg-components/styles/layout.scss +0 -29
- package/dist/mg-components/styles/main.scss +0 -23
- package/dist/mg-components/styles/mg-icon-animation.scss +0 -6
- package/dist/mg-components/styles/navigation-button.scss +0 -77
- package/dist/mg-components/styles/reset-mg-card-slotted-variables.scss +0 -11
- package/dist/mg-components/styles/typography.scss +0 -82
- package/dist/mg-components/styles/utilities.scss +0 -21
- /package/dist/types/{test/typography.e2e.playwright.d.ts → components/atoms/mg-tag/test/mg-tag.e2e.playwright.d.ts} +0 -0
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
import { MgInput } from "../MgInput";
|
|
3
|
-
import { ClassList } from "../../../../utils/components.utils";
|
|
3
|
+
import { ClassList, isValidString } from "../../../../utils/components.utils";
|
|
4
4
|
import { initLocales } from "../../../../locales";
|
|
5
|
+
const isDatalistOption = (options) => Array.isArray(options) && options.every(option => typeof option === 'string');
|
|
5
6
|
export class MgInputText {
|
|
6
7
|
constructor() {
|
|
7
8
|
/************
|
|
8
9
|
* Internal *
|
|
9
10
|
************/
|
|
10
11
|
// Classes
|
|
11
|
-
this.classFocus = 'is-focused';
|
|
12
|
-
this.classIsInputGroupAppend = 'mg-input--is-input-group-append';
|
|
13
|
-
this.classHasIcon = 'mg-input--has-icon';
|
|
12
|
+
this.classFocus = 'mg-u-is-focused';
|
|
13
|
+
this.classIsInputGroupAppend = 'mg-c-input--is-input-group-append';
|
|
14
|
+
this.classHasIcon = 'mg-c-input--has-icon';
|
|
14
15
|
// hasDisplayedError (triggered by blur event)
|
|
15
16
|
this.hasDisplayedError = false;
|
|
16
17
|
/**
|
|
@@ -45,19 +46,21 @@ export class MgInputText {
|
|
|
45
46
|
*/
|
|
46
47
|
this.checkValidity = () => {
|
|
47
48
|
var _a;
|
|
48
|
-
this.
|
|
49
|
-
this.invalid = !this.valid;
|
|
50
|
-
// We need to send valid event even if it is the same value
|
|
51
|
-
this.inputValid.emit(this.valid);
|
|
49
|
+
this.setValidity(this.readonly || this.disabled || (((_a = this.input) === null || _a === void 0 ? void 0 : _a.checkValidity) !== undefined ? this.input.checkValidity() : true));
|
|
52
50
|
};
|
|
53
51
|
/**
|
|
54
52
|
* Set input error message
|
|
53
|
+
* @param errorMessage - errorMessage override
|
|
55
54
|
*/
|
|
56
|
-
this.setErrorMessage = () => {
|
|
55
|
+
this.setErrorMessage = (errorMessage) => {
|
|
57
56
|
// Set error message
|
|
58
57
|
this.errorMessage = undefined;
|
|
58
|
+
// Does have a custom error message
|
|
59
|
+
if (!this.valid && errorMessage !== undefined) {
|
|
60
|
+
this.errorMessage = errorMessage;
|
|
61
|
+
}
|
|
59
62
|
// Does not match pattern
|
|
60
|
-
if (!this.valid && this.input.validity.patternMismatch) {
|
|
63
|
+
else if (!this.valid && this.input.validity.patternMismatch) {
|
|
61
64
|
this.errorMessage = this.patternErrorMessage;
|
|
62
65
|
}
|
|
63
66
|
// required
|
|
@@ -65,30 +68,24 @@ export class MgInputText {
|
|
|
65
68
|
this.errorMessage = this.messages.errors.required;
|
|
66
69
|
}
|
|
67
70
|
};
|
|
68
|
-
/**
|
|
69
|
-
* Validate pattern configuration
|
|
70
|
-
*/
|
|
71
|
-
this.validatePattern = () => {
|
|
72
|
-
if (this.pattern !== undefined &&
|
|
73
|
-
typeof this.pattern === 'string' &&
|
|
74
|
-
this.pattern !== '' &&
|
|
75
|
-
(this.patternErrorMessage === undefined || typeof this.patternErrorMessage !== 'string' || this.patternErrorMessage === '')) {
|
|
76
|
-
throw new Error('<mg-input-text> prop "pattern" must be paired with the prop "patternErrorMessage"');
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
71
|
/**
|
|
80
72
|
* Validate append slot
|
|
81
73
|
*/
|
|
82
74
|
this.validateAppendSlot = () => {
|
|
83
75
|
const slotAppendInput = Array.from(this.element.querySelectorAll('[slot="append-input"]'));
|
|
84
76
|
if (slotAppendInput.length === 1) {
|
|
85
|
-
this.classCollection.add(slotAppendInput[0].nodeName === 'MG-BUTTON' ? this.classIsInputGroupAppend : 'mg-input--is-append-input-slot-content');
|
|
77
|
+
this.classCollection.add(slotAppendInput[0].nodeName === 'MG-BUTTON' ? this.classIsInputGroupAppend : 'mg-c-input--is-append-input-slot-content');
|
|
86
78
|
}
|
|
87
79
|
else if (slotAppendInput.filter(slot => slot.nodeName === 'MG-BUTTON').length > 1) {
|
|
88
80
|
this.classCollection.add(this.classIsInputGroupAppend);
|
|
89
|
-
this.classCollection.add('mg-input--has-buttons-group-append');
|
|
81
|
+
this.classCollection.add('mg-c-input--has-buttons-group-append');
|
|
90
82
|
}
|
|
91
83
|
};
|
|
84
|
+
/**
|
|
85
|
+
* Methode to control datalist display condition
|
|
86
|
+
* @returns true if display condition success
|
|
87
|
+
*/
|
|
88
|
+
this.hasDatalist = () => isDatalistOption(this.datalistoptions) && this.datalistoptions.length > 0;
|
|
92
89
|
this.value = undefined;
|
|
93
90
|
this.identifier = undefined;
|
|
94
91
|
this.name = this.identifier;
|
|
@@ -98,6 +95,7 @@ export class MgInputText {
|
|
|
98
95
|
this.labelOnTop = undefined;
|
|
99
96
|
this.labelHide = false;
|
|
100
97
|
this.placeholder = undefined;
|
|
98
|
+
this.datalistoptions = undefined;
|
|
101
99
|
this.maxlength = 400;
|
|
102
100
|
this.required = false;
|
|
103
101
|
this.readonly = false;
|
|
@@ -110,7 +108,7 @@ export class MgInputText {
|
|
|
110
108
|
this.helpText = undefined;
|
|
111
109
|
this.valid = undefined;
|
|
112
110
|
this.invalid = undefined;
|
|
113
|
-
this.classCollection = new ClassList(['mg-input--text']);
|
|
111
|
+
this.classCollection = new ClassList(['mg-c-input--text']);
|
|
114
112
|
this.errorMessage = undefined;
|
|
115
113
|
}
|
|
116
114
|
handleValue(newValue) {
|
|
@@ -124,6 +122,11 @@ export class MgInputText {
|
|
|
124
122
|
this.classCollection.delete(this.classHasIcon);
|
|
125
123
|
}
|
|
126
124
|
}
|
|
125
|
+
validateDatalistoptions(newValue) {
|
|
126
|
+
if (Boolean(newValue) && !isDatalistOption(newValue)) {
|
|
127
|
+
throw new Error('<mg-input-text> prop "datalistoptions" values must be the same type, DatalistOption.');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
127
130
|
handleValidityChange(newValue, _oldValue, prop) {
|
|
128
131
|
if (this.input !== undefined) {
|
|
129
132
|
this.input[prop] = newValue;
|
|
@@ -134,6 +137,11 @@ export class MgInputText {
|
|
|
134
137
|
}
|
|
135
138
|
}
|
|
136
139
|
}
|
|
140
|
+
validatePattern(newValue) {
|
|
141
|
+
if (newValue !== undefined && !(isValidString(this.pattern) && isValidString(this.patternErrorMessage))) {
|
|
142
|
+
throw new Error('<mg-input-text> props "pattern" and "patternErrorMessage" must be non-empty string and paired.');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
137
145
|
/**
|
|
138
146
|
* Public method to play input focus
|
|
139
147
|
*/
|
|
@@ -141,13 +149,44 @@ export class MgInputText {
|
|
|
141
149
|
this.input.focus();
|
|
142
150
|
}
|
|
143
151
|
/**
|
|
144
|
-
*
|
|
152
|
+
* Display input error if it exists.
|
|
145
153
|
*/
|
|
146
154
|
async displayError() {
|
|
147
155
|
this.checkValidity();
|
|
148
156
|
this.setErrorMessage();
|
|
149
157
|
this.hasDisplayedError = this.invalid;
|
|
150
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Set an error and display a custom error message.
|
|
161
|
+
* This method can be used to set the component's error state from its context by passing a boolean value to the `valid` parameter.
|
|
162
|
+
* It must be paired with an error message to display for the given context.
|
|
163
|
+
* When used to set validity to `false`, you should use this method again to reset the validity to `true`.
|
|
164
|
+
* @param valid - value indicating the validity
|
|
165
|
+
* @param errorMessage - the error message to display
|
|
166
|
+
*/
|
|
167
|
+
async setError(valid, errorMessage) {
|
|
168
|
+
if (typeof valid !== 'boolean') {
|
|
169
|
+
throw new Error('<mg-input-text> method "setError()" param "valid" must be a boolean');
|
|
170
|
+
}
|
|
171
|
+
else if (!isValidString(errorMessage)) {
|
|
172
|
+
throw new Error('<mg-input-text> method "setError()" param "errorMessage" must be a string');
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
this.setValidity(valid);
|
|
176
|
+
this.setErrorMessage(valid ? undefined : errorMessage);
|
|
177
|
+
this.hasDisplayedError = this.invalid;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Method to set validity values
|
|
182
|
+
* @param newValue - valid new value
|
|
183
|
+
*/
|
|
184
|
+
setValidity(newValue) {
|
|
185
|
+
this.valid = newValue;
|
|
186
|
+
this.invalid = !this.valid;
|
|
187
|
+
// We need to send valid event even if it is the same value
|
|
188
|
+
this.inputValid.emit(this.valid);
|
|
189
|
+
}
|
|
151
190
|
/*************
|
|
152
191
|
* Lifecycle *
|
|
153
192
|
*************/
|
|
@@ -159,9 +198,12 @@ export class MgInputText {
|
|
|
159
198
|
// Get locales
|
|
160
199
|
this.messages = initLocales(this.element).messages;
|
|
161
200
|
this.characterLeftId = `${this.identifier}-character-left`;
|
|
201
|
+
this.datalistId = `${this.identifier}-datalist`;
|
|
162
202
|
// Validate
|
|
163
203
|
this.validateIcon(this.icon);
|
|
164
|
-
this.
|
|
204
|
+
this.validateDatalistoptions(this.datalistoptions);
|
|
205
|
+
this.validatePattern(this.pattern);
|
|
206
|
+
this.validatePattern(this.patternErrorMessage);
|
|
165
207
|
this.validateAppendSlot();
|
|
166
208
|
// Check validity when component is ready
|
|
167
209
|
// return a promise to process action only in the FIRST render().
|
|
@@ -175,25 +217,25 @@ export class MgInputText {
|
|
|
175
217
|
* @returns HTML Element
|
|
176
218
|
*/
|
|
177
219
|
render() {
|
|
178
|
-
return (h(MgInput, { identifier: this.identifier, classCollection: this.classCollection, ariaDescribedbyIDs: [this.characterLeftId], label: this.label, labelOnTop: this.labelOnTop, labelHide: this.labelHide, required: this.required, readonly: this.readonly, mgWidth: this.mgWidth, disabled: this.disabled, value: this.value, readonlyValue: undefined, tooltip: this.tooltip, helpText: this.helpText, errorMessage: this.errorMessage, isFieldset: false }, h("div", { class: "mg-input__with-character-left", style: {
|
|
220
|
+
return (h(MgInput, { identifier: this.identifier, classCollection: this.classCollection, ariaDescribedbyIDs: [this.characterLeftId], label: this.label, labelOnTop: this.labelOnTop, labelHide: this.labelHide, required: this.required, readonly: this.readonly, mgWidth: this.mgWidth, disabled: this.disabled, value: this.value, readonlyValue: undefined, tooltip: this.tooltip, helpText: this.helpText, errorMessage: this.errorMessage, isFieldset: false }, h("div", { class: "mg-c-input__with-character-left", style: {
|
|
179
221
|
'--mg-character-left-message-length': (this.displayCharacterLeft
|
|
180
222
|
? (this.maxlength - (this.value || '').length).toString().length + this.maxlength.toString().length + 1
|
|
181
223
|
: 0).toString(),
|
|
182
|
-
} }, this.icon !== undefined && h("mg-icon", { icon: this.icon }), h("input", { type: this.type, class: "mg-input__box", value: this.value, id: this.identifier, name: this.name, placeholder: this.placeholder, title: this.placeholder, maxlength: this.maxlength, disabled: this.disabled, required: this.required, pattern: this.pattern, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, ref: (el) => {
|
|
224
|
+
} }, this.icon !== undefined && h("mg-icon", { icon: this.icon }), h("input", { type: this.type, class: "mg-c-input__box", value: this.value, id: this.identifier, list: this.hasDatalist() ? this.datalistId : undefined, autocomplete: this.hasDatalist() ? 'off' : undefined, name: this.name, placeholder: this.placeholder, title: this.placeholder, maxlength: this.maxlength, disabled: this.disabled, required: this.required, pattern: this.pattern, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, ref: (el) => {
|
|
183
225
|
if (el !== null)
|
|
184
226
|
this.input = el;
|
|
185
|
-
} }), this.displayCharacterLeft && this.maxlength > 0 && (h("mg-character-left", { identifier: this.characterLeftId, characters: this.value, maxlength: this.maxlength }))), h("slot", { name: "append-input" })));
|
|
227
|
+
} }), this.hasDatalist() && (h("datalist", { id: this.datalistId }, this.datalistoptions.map(option => (h("option", { value: option, key: option }))))), this.displayCharacterLeft && this.maxlength > 0 && (h("mg-character-left", { identifier: this.characterLeftId, characters: this.value, maxlength: this.maxlength }))), h("slot", { name: "append-input" })));
|
|
186
228
|
}
|
|
187
229
|
static get is() { return "mg-input-text"; }
|
|
188
230
|
static get encapsulation() { return "shadow"; }
|
|
189
231
|
static get originalStyleUrls() {
|
|
190
232
|
return {
|
|
191
|
-
"$": ["mg-input-text.
|
|
233
|
+
"$": ["../../../../../node_modules/@mgdis/styles/dist/components/mg-input-text.css"]
|
|
192
234
|
};
|
|
193
235
|
}
|
|
194
236
|
static get styleUrls() {
|
|
195
237
|
return {
|
|
196
|
-
"$": ["mg-input-text.css"]
|
|
238
|
+
"$": ["../../../../../node_modules/@mgdis/styles/dist/components/mg-input-text.css"]
|
|
197
239
|
};
|
|
198
240
|
}
|
|
199
241
|
static get properties() {
|
|
@@ -271,9 +313,15 @@ export class MgInputText {
|
|
|
271
313
|
"type": "string",
|
|
272
314
|
"mutable": false,
|
|
273
315
|
"complexType": {
|
|
274
|
-
"original": "
|
|
316
|
+
"original": "TextType",
|
|
275
317
|
"resolved": "\"search\" | \"text\"",
|
|
276
|
-
"references": {
|
|
318
|
+
"references": {
|
|
319
|
+
"TextType": {
|
|
320
|
+
"location": "import",
|
|
321
|
+
"path": "./mg-input-text.conf",
|
|
322
|
+
"id": "src/components/molecules/inputs/mg-input-text/mg-input-text.conf.ts::TextType"
|
|
323
|
+
}
|
|
324
|
+
}
|
|
277
325
|
},
|
|
278
326
|
"required": false,
|
|
279
327
|
"optional": false,
|
|
@@ -354,6 +402,27 @@ export class MgInputText {
|
|
|
354
402
|
"attribute": "placeholder",
|
|
355
403
|
"reflect": false
|
|
356
404
|
},
|
|
405
|
+
"datalistoptions": {
|
|
406
|
+
"type": "unknown",
|
|
407
|
+
"mutable": false,
|
|
408
|
+
"complexType": {
|
|
409
|
+
"original": "DatalistOption[]",
|
|
410
|
+
"resolved": "string[]",
|
|
411
|
+
"references": {
|
|
412
|
+
"DatalistOption": {
|
|
413
|
+
"location": "import",
|
|
414
|
+
"path": "./mg-input-text.conf",
|
|
415
|
+
"id": "src/components/molecules/inputs/mg-input-text/mg-input-text.conf.ts::DatalistOption"
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
"required": false,
|
|
420
|
+
"optional": false,
|
|
421
|
+
"docs": {
|
|
422
|
+
"tags": [],
|
|
423
|
+
"text": "Define datalist options"
|
|
424
|
+
}
|
|
425
|
+
},
|
|
357
426
|
"maxlength": {
|
|
358
427
|
"type": "number",
|
|
359
428
|
"mutable": false,
|
|
@@ -643,9 +712,48 @@ export class MgInputText {
|
|
|
643
712
|
"return": "Promise<void>"
|
|
644
713
|
},
|
|
645
714
|
"docs": {
|
|
646
|
-
"text": "
|
|
715
|
+
"text": "Display input error if it exists.",
|
|
647
716
|
"tags": []
|
|
648
717
|
}
|
|
718
|
+
},
|
|
719
|
+
"setError": {
|
|
720
|
+
"complexType": {
|
|
721
|
+
"signature": "(valid: MgInputText['valid'], errorMessage: string) => Promise<void>",
|
|
722
|
+
"parameters": [{
|
|
723
|
+
"tags": [{
|
|
724
|
+
"name": "param",
|
|
725
|
+
"text": "valid - value indicating the validity"
|
|
726
|
+
}],
|
|
727
|
+
"text": "- value indicating the validity"
|
|
728
|
+
}, {
|
|
729
|
+
"tags": [{
|
|
730
|
+
"name": "param",
|
|
731
|
+
"text": "errorMessage - the error message to display"
|
|
732
|
+
}],
|
|
733
|
+
"text": "- the error message to display"
|
|
734
|
+
}],
|
|
735
|
+
"references": {
|
|
736
|
+
"Promise": {
|
|
737
|
+
"location": "global",
|
|
738
|
+
"id": "global::Promise"
|
|
739
|
+
},
|
|
740
|
+
"MgInputText": {
|
|
741
|
+
"location": "global",
|
|
742
|
+
"id": "global::MgInputText"
|
|
743
|
+
}
|
|
744
|
+
},
|
|
745
|
+
"return": "Promise<void>"
|
|
746
|
+
},
|
|
747
|
+
"docs": {
|
|
748
|
+
"text": "Set an error and display a custom error message.\nThis method can be used to set the component's error state from its context by passing a boolean value to the `valid` parameter.\nIt must be paired with an error message to display for the given context.\nWhen used to set validity to `false`, you should use this method again to reset the validity to `true`.",
|
|
749
|
+
"tags": [{
|
|
750
|
+
"name": "param",
|
|
751
|
+
"text": "valid - value indicating the validity"
|
|
752
|
+
}, {
|
|
753
|
+
"name": "param",
|
|
754
|
+
"text": "errorMessage - the error message to display"
|
|
755
|
+
}]
|
|
756
|
+
}
|
|
649
757
|
}
|
|
650
758
|
};
|
|
651
759
|
}
|
|
@@ -657,6 +765,9 @@ export class MgInputText {
|
|
|
657
765
|
}, {
|
|
658
766
|
"propName": "icon",
|
|
659
767
|
"methodName": "validateIcon"
|
|
768
|
+
}, {
|
|
769
|
+
"propName": "datalistoptions",
|
|
770
|
+
"methodName": "validateDatalistoptions"
|
|
660
771
|
}, {
|
|
661
772
|
"propName": "required",
|
|
662
773
|
"methodName": "handleValidityChange"
|
|
@@ -666,6 +777,12 @@ export class MgInputText {
|
|
|
666
777
|
}, {
|
|
667
778
|
"propName": "disabled",
|
|
668
779
|
"methodName": "handleValidityChange"
|
|
780
|
+
}, {
|
|
781
|
+
"propName": "pattern",
|
|
782
|
+
"methodName": "validatePattern"
|
|
783
|
+
}, {
|
|
784
|
+
"propName": "patternErrorMessage",
|
|
785
|
+
"methodName": "validatePattern"
|
|
669
786
|
}];
|
|
670
787
|
}
|
|
671
788
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mg-input-text.js","sourceRoot":"","sources":["../../../../../src/components/molecules/inputs/mg-input-text/mg-input-text.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, h, Prop, EventEmitter, State, Element, Method, Watch } from '@stencil/core';\nimport { MgInput } from '../MgInput';\nimport { Width } from '../MgInput.conf';\nimport { ClassList } from '../../../../utils/components.utils';\nimport { initLocales } from '../../../../locales';\n\n@Component({\n tag: 'mg-input-text',\n styleUrl: 'mg-input-text.scss',\n shadow: true,\n})\nexport class MgInputText {\n /************\n * Internal *\n ************/\n\n // Classes\n private classFocus = 'is-focused';\n private classIsInputGroupAppend = 'mg-input--is-input-group-append';\n private classHasIcon = 'mg-input--has-icon';\n\n // IDs\n private characterLeftId;\n\n // HTML selector\n private input: HTMLInputElement;\n\n // Locales\n private messages;\n\n // hasDisplayedError (triggered by blur event)\n private hasDisplayedError = false;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgInputTextElement;\n\n /**\n * Component value\n */\n @Prop({ mutable: true, reflect: true }) value: string;\n @Watch('value')\n handleValue(newValue: string): void {\n this.valueChange.emit(newValue);\n }\n\n /**\n * Identifier is used for the element ID (id is a reserved prop in Stencil.js)\n */\n @Prop() identifier!: string;\n\n /**\n * Input name\n * If not set the value equals the identifier\n */\n @Prop() name: string = this.identifier;\n\n /**\n * Input label\n */\n @Prop() label!: string;\n\n /**\n * Input type\n */\n @Prop() type: 'text' | 'search' = 'text';\n\n /**\n * Input icon\n */\n @Prop() icon: string;\n @Watch('icon')\n validateIcon(newValue: string): void {\n if (newValue !== undefined) {\n this.classCollection.add(this.classHasIcon);\n } else {\n this.classCollection.delete(this.classHasIcon);\n }\n }\n\n /**\n * Define if label is displayed on top\n */\n @Prop() labelOnTop: boolean;\n\n /**\n * Define if label is visible\n */\n @Prop() labelHide = false;\n\n /**\n * Input placeholder.\n * It should be a word or short phrase that demonstrates the expected type of data, not a replacement for labels or help text.\n */\n @Prop() placeholder: string;\n\n /**\n * Input max length\n */\n @Prop() maxlength = 400;\n\n /**\n * Define if input is required\n */\n @Prop() required = false;\n\n /**\n * Define if input is readonly\n */\n @Prop() readonly = false;\n\n /**\n * Define if input is disabled\n */\n @Prop() disabled = false;\n @Watch('required')\n @Watch('readonly')\n @Watch('disabled')\n handleValidityChange(newValue: boolean, _oldValue: boolean, prop: string): void {\n if (this.input !== undefined) {\n this.input[prop] = newValue;\n this.checkValidity();\n if (this.hasDisplayedError) {\n this.setErrorMessage();\n this.hasDisplayedError = false;\n }\n }\n }\n\n /**\n * Define input width\n */\n @Prop() mgWidth: Width = 'full';\n\n /**\n * Define input pattern to validate\n */\n @Prop() pattern: string;\n\n /**\n * Define input pattern error message\n */\n @Prop() patternErrorMessage: string;\n\n /**\n * Add a tooltip message next to the input\n */\n @Prop() tooltip: string;\n\n /**\n * Define if component should display character left\n */\n @Prop() displayCharacterLeft = true;\n\n /**\n * Add a help text under the input, usually expected data format and example\n */\n @Prop() helpText: string;\n\n /**\n * Define input valid state\n */\n @Prop({ mutable: true }) valid: boolean;\n\n /**\n * Define input invalid state\n */\n @Prop({ mutable: true }) invalid: boolean;\n\n /**\n * Component classes\n */\n @State() classCollection: ClassList = new ClassList(['mg-input--text']);\n\n /**\n * Error message to display\n */\n @State() errorMessage: string;\n\n /**\n * Emited event when value change\n */\n @Event({ eventName: 'value-change' }) valueChange: EventEmitter<string>;\n\n /**\n * Emited event when checking validity\n */\n @Event({ eventName: 'input-valid' }) inputValid: EventEmitter<boolean>;\n\n /**\n * Public method to play input focus\n */\n @Method()\n async setFocus(): Promise<void> {\n this.input.focus();\n }\n\n /**\n * Public method to display errors\n */\n @Method()\n async displayError(): Promise<void> {\n this.checkValidity();\n this.setErrorMessage();\n this.hasDisplayedError = this.invalid;\n }\n\n /**\n * Handle input event\n */\n private handleInput = (): void => {\n this.checkValidity();\n if (this.hasDisplayedError) {\n this.setErrorMessage();\n }\n this.value = this.input.value;\n };\n\n /**\n * Handle focus event\n */\n private handleFocus = (): void => {\n this.classCollection.add(this.classFocus);\n this.classCollection = new ClassList(this.classCollection.classes);\n };\n\n /**\n * Handle blur event\n */\n private handleBlur = (): void => {\n // Manage focus\n this.classCollection.delete(this.classFocus);\n this.classCollection = new ClassList(this.classCollection.classes);\n // Display Error\n this.displayError();\n };\n\n /**\n * Check if input is valid\n */\n private checkValidity = (): void => {\n this.valid = this.readonly || this.disabled || (this.input?.checkValidity !== undefined ? this.input.checkValidity() : true);\n this.invalid = !this.valid;\n // We need to send valid event even if it is the same value\n this.inputValid.emit(this.valid);\n };\n\n /**\n * Set input error message\n */\n private setErrorMessage = (): void => {\n // Set error message\n this.errorMessage = undefined;\n // Does not match pattern\n if (!this.valid && this.input.validity.patternMismatch) {\n this.errorMessage = this.patternErrorMessage;\n }\n // required\n else if (!this.valid && this.input.validity.valueMissing) {\n this.errorMessage = this.messages.errors.required;\n }\n };\n\n /**\n * Validate pattern configuration\n */\n private validatePattern = (): void => {\n if (\n this.pattern !== undefined &&\n typeof this.pattern === 'string' &&\n this.pattern !== '' &&\n (this.patternErrorMessage === undefined || typeof this.patternErrorMessage !== 'string' || this.patternErrorMessage === '')\n ) {\n throw new Error('<mg-input-text> prop \"pattern\" must be paired with the prop \"patternErrorMessage\"');\n }\n };\n\n /**\n * Validate append slot\n */\n private validateAppendSlot = (): void => {\n const slotAppendInput: HTMLSlotElement[] = Array.from(this.element.querySelectorAll('[slot=\"append-input\"]'));\n\n if (slotAppendInput.length === 1) {\n this.classCollection.add(slotAppendInput[0].nodeName === 'MG-BUTTON' ? this.classIsInputGroupAppend : 'mg-input--is-append-input-slot-content');\n } else if (slotAppendInput.filter(slot => slot.nodeName === 'MG-BUTTON').length > 1) {\n this.classCollection.add(this.classIsInputGroupAppend);\n this.classCollection.add('mg-input--has-buttons-group-append');\n }\n };\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are well configured on init\n * @returns timeout\n */\n componentWillLoad(): ReturnType<typeof setTimeout> {\n // Get locales\n this.messages = initLocales(this.element).messages;\n this.characterLeftId = `${this.identifier}-character-left`;\n // Validate\n this.validateIcon(this.icon);\n this.validatePattern();\n this.validateAppendSlot();\n // Check validity when component is ready\n // return a promise to process action only in the FIRST render().\n // https://stenciljs.com/docs/component-lifecycle#componentwillload\n return setTimeout(() => {\n this.checkValidity();\n }, 0);\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <MgInput\n identifier={this.identifier}\n classCollection={this.classCollection}\n ariaDescribedbyIDs={[this.characterLeftId]}\n label={this.label}\n labelOnTop={this.labelOnTop}\n labelHide={this.labelHide}\n required={this.required}\n readonly={this.readonly}\n mgWidth={this.mgWidth}\n disabled={this.disabled}\n value={this.value}\n readonlyValue={undefined}\n tooltip={this.tooltip}\n helpText={this.helpText}\n errorMessage={this.errorMessage}\n isFieldset={false}\n >\n <div\n class=\"mg-input__with-character-left\"\n style={{\n '--mg-character-left-message-length': (this.displayCharacterLeft\n ? (this.maxlength - (this.value || '').length).toString().length + this.maxlength.toString().length + 1\n : 0\n ).toString(),\n }}\n >\n {this.icon !== undefined && <mg-icon icon={this.icon}></mg-icon>}\n <input\n type={this.type}\n class=\"mg-input__box\"\n value={this.value}\n id={this.identifier}\n name={this.name}\n placeholder={this.placeholder}\n title={this.placeholder}\n maxlength={this.maxlength}\n disabled={this.disabled}\n required={this.required}\n pattern={this.pattern}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={(el: HTMLInputElement) => {\n if (el !== null) this.input = el;\n }}\n />\n {this.displayCharacterLeft && this.maxlength > 0 && (\n <mg-character-left identifier={this.characterLeftId} characters={this.value} maxlength={this.maxlength}></mg-character-left>\n )}\n </div>\n <slot name=\"append-input\"></slot>\n </MgInput>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mg-input-text.js","sourceRoot":"","sources":["../../../../../src/components/molecules/inputs/mg-input-text/mg-input-text.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, h, Prop, EventEmitter, State, Element, Method, Watch } from '@stencil/core';\nimport { MgInput } from '../MgInput';\nimport { Width } from '../MgInput.conf';\nimport { ClassList, isValidString } from '../../../../utils/components.utils';\nimport { initLocales } from '../../../../locales';\nimport { DatalistOption, TextType } from './mg-input-text.conf';\n\nconst isDatalistOption = (options: unknown[]): options is DatalistOption[] => Array.isArray(options) && options.every(option => typeof option === 'string');\n\n@Component({\n tag: 'mg-input-text',\n styleUrl: '../../../../../node_modules/@mgdis/styles/dist/components/mg-input-text.css',\n shadow: true,\n})\nexport class MgInputText {\n /************\n * Internal *\n ************/\n\n // Classes\n private classFocus = 'mg-u-is-focused';\n private classIsInputGroupAppend = 'mg-c-input--is-input-group-append';\n private classHasIcon = 'mg-c-input--has-icon';\n\n // IDs\n private characterLeftId;\n private datalistId;\n\n // HTML selector\n private input: HTMLInputElement;\n\n // Locales\n private messages;\n\n // hasDisplayedError (triggered by blur event)\n private hasDisplayedError = false;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgInputTextElement;\n\n /**\n * Component value\n */\n @Prop({ mutable: true, reflect: true }) value: string;\n @Watch('value')\n handleValue(newValue: string): void {\n this.valueChange.emit(newValue);\n }\n\n /**\n * Identifier is used for the element ID (id is a reserved prop in Stencil.js)\n */\n @Prop() identifier!: string;\n\n /**\n * Input name\n * If not set the value equals the identifier\n */\n @Prop() name: string = this.identifier;\n\n /**\n * Input label\n */\n @Prop() label!: string;\n\n /**\n * Input type\n */\n @Prop() type: TextType = 'text';\n\n /**\n * Input icon\n */\n @Prop() icon: string;\n @Watch('icon')\n validateIcon(newValue: string): void {\n if (newValue !== undefined) {\n this.classCollection.add(this.classHasIcon);\n } else {\n this.classCollection.delete(this.classHasIcon);\n }\n }\n\n /**\n * Define if label is displayed on top\n */\n @Prop() labelOnTop: boolean;\n\n /**\n * Define if label is visible\n */\n @Prop() labelHide = false;\n\n /**\n * Input placeholder.\n * It should be a word or short phrase that demonstrates the expected type of data, not a replacement for labels or help text.\n */\n @Prop() placeholder: string;\n\n /**\n * Define datalist options\n */\n @Prop() datalistoptions: DatalistOption[];\n @Watch('datalistoptions')\n validateDatalistoptions(newValue: MgInputText['datalistoptions']) {\n if (Boolean(newValue) && !isDatalistOption(newValue)) {\n throw new Error('<mg-input-text> prop \"datalistoptions\" values must be the same type, DatalistOption.');\n }\n }\n\n /**\n * Input max length\n */\n @Prop() maxlength = 400;\n\n /**\n * Define if input is required\n */\n @Prop() required = false;\n\n /**\n * Define if input is readonly\n */\n @Prop() readonly = false;\n\n /**\n * Define if input is disabled\n */\n @Prop() disabled = false;\n @Watch('required')\n @Watch('readonly')\n @Watch('disabled')\n handleValidityChange(newValue: boolean, _oldValue: boolean, prop: string): void {\n if (this.input !== undefined) {\n this.input[prop] = newValue;\n this.checkValidity();\n if (this.hasDisplayedError) {\n this.setErrorMessage();\n this.hasDisplayedError = false;\n }\n }\n }\n\n /**\n * Define input width\n */\n @Prop() mgWidth: Width = 'full';\n\n /**\n * Define input pattern to validate\n */\n @Prop() pattern: string;\n\n /**\n * Define input pattern error message\n */\n @Prop() patternErrorMessage: string;\n @Watch('pattern')\n @Watch('patternErrorMessage')\n validatePattern(newValue: string): void {\n if (newValue !== undefined && !(isValidString(this.pattern) && isValidString(this.patternErrorMessage))) {\n throw new Error('<mg-input-text> props \"pattern\" and \"patternErrorMessage\" must be non-empty string and paired.');\n }\n }\n\n /**\n * Add a tooltip message next to the input\n */\n @Prop() tooltip: string;\n\n /**\n * Define if component should display character left\n */\n @Prop() displayCharacterLeft = true;\n\n /**\n * Add a help text under the input, usually expected data format and example\n */\n @Prop() helpText: string;\n\n /**\n * Define input valid state\n */\n @Prop({ mutable: true }) valid: boolean;\n\n /**\n * Define input invalid state\n */\n @Prop({ mutable: true }) invalid: boolean;\n\n /**\n * Component classes\n */\n @State() classCollection: ClassList = new ClassList(['mg-c-input--text']);\n\n /**\n * Error message to display\n */\n @State() errorMessage: string;\n\n /**\n * Emited event when value change\n */\n @Event({ eventName: 'value-change' }) valueChange: EventEmitter<string>;\n\n /**\n * Emited event when checking validity\n */\n @Event({ eventName: 'input-valid' }) inputValid: EventEmitter<boolean>;\n\n /**\n * Public method to play input focus\n */\n @Method()\n async setFocus(): Promise<void> {\n this.input.focus();\n }\n\n /**\n * Display input error if it exists.\n */\n @Method()\n async displayError(): Promise<void> {\n this.checkValidity();\n this.setErrorMessage();\n this.hasDisplayedError = this.invalid;\n }\n\n /**\n * Set an error and display a custom error message.\n * This method can be used to set the component's error state from its context by passing a boolean value to the `valid` parameter.\n * It must be paired with an error message to display for the given context.\n * When used to set validity to `false`, you should use this method again to reset the validity to `true`.\n * @param valid - value indicating the validity\n * @param errorMessage - the error message to display\n */\n @Method()\n async setError(valid: MgInputText['valid'], errorMessage: string): Promise<void> {\n if (typeof valid !== 'boolean') {\n throw new Error('<mg-input-text> method \"setError()\" param \"valid\" must be a boolean');\n } else if (!isValidString(errorMessage)) {\n throw new Error('<mg-input-text> method \"setError()\" param \"errorMessage\" must be a string');\n } else {\n this.setValidity(valid);\n this.setErrorMessage(valid ? undefined : errorMessage);\n this.hasDisplayedError = this.invalid;\n }\n }\n\n /**\n * Method to set validity values\n * @param newValue - valid new value\n */\n private setValidity(newValue: MgInputText['valid']) {\n this.valid = newValue;\n this.invalid = !this.valid;\n // We need to send valid event even if it is the same value\n this.inputValid.emit(this.valid);\n }\n\n /**\n * Handle input event\n */\n private handleInput = (): void => {\n this.checkValidity();\n if (this.hasDisplayedError) {\n this.setErrorMessage();\n }\n this.value = this.input.value;\n };\n\n /**\n * Handle focus event\n */\n private handleFocus = (): void => {\n this.classCollection.add(this.classFocus);\n this.classCollection = new ClassList(this.classCollection.classes);\n };\n\n /**\n * Handle blur event\n */\n private handleBlur = (): void => {\n // Manage focus\n this.classCollection.delete(this.classFocus);\n this.classCollection = new ClassList(this.classCollection.classes);\n // Display Error\n this.displayError();\n };\n\n /**\n * Check if input is valid\n */\n private checkValidity = (): void => {\n this.setValidity(this.readonly || this.disabled || (this.input?.checkValidity !== undefined ? this.input.checkValidity() : true));\n };\n\n /**\n * Set input error message\n * @param errorMessage - errorMessage override\n */\n private setErrorMessage = (errorMessage?: string): void => {\n // Set error message\n this.errorMessage = undefined;\n // Does have a custom error message\n if (!this.valid && errorMessage !== undefined) {\n this.errorMessage = errorMessage;\n }\n // Does not match pattern\n else if (!this.valid && this.input.validity.patternMismatch) {\n this.errorMessage = this.patternErrorMessage;\n }\n // required\n else if (!this.valid && this.input.validity.valueMissing) {\n this.errorMessage = this.messages.errors.required;\n }\n };\n\n /**\n * Validate append slot\n */\n private validateAppendSlot = (): void => {\n const slotAppendInput: HTMLSlotElement[] = Array.from(this.element.querySelectorAll('[slot=\"append-input\"]'));\n\n if (slotAppendInput.length === 1) {\n this.classCollection.add(slotAppendInput[0].nodeName === 'MG-BUTTON' ? this.classIsInputGroupAppend : 'mg-c-input--is-append-input-slot-content');\n } else if (slotAppendInput.filter(slot => slot.nodeName === 'MG-BUTTON').length > 1) {\n this.classCollection.add(this.classIsInputGroupAppend);\n this.classCollection.add('mg-c-input--has-buttons-group-append');\n }\n };\n\n /**\n * Methode to control datalist display condition\n * @returns true if display condition success\n */\n private hasDatalist = (): boolean => isDatalistOption(this.datalistoptions) && this.datalistoptions.length > 0;\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are well configured on init\n * @returns timeout\n */\n componentWillLoad(): ReturnType<typeof setTimeout> {\n // Get locales\n this.messages = initLocales(this.element).messages;\n this.characterLeftId = `${this.identifier}-character-left`;\n this.datalistId = `${this.identifier}-datalist`;\n // Validate\n this.validateIcon(this.icon);\n this.validateDatalistoptions(this.datalistoptions);\n this.validatePattern(this.pattern);\n this.validatePattern(this.patternErrorMessage);\n this.validateAppendSlot();\n // Check validity when component is ready\n // return a promise to process action only in the FIRST render().\n // https://stenciljs.com/docs/component-lifecycle#componentwillload\n return setTimeout(() => {\n this.checkValidity();\n }, 0);\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <MgInput\n identifier={this.identifier}\n classCollection={this.classCollection}\n ariaDescribedbyIDs={[this.characterLeftId]}\n label={this.label}\n labelOnTop={this.labelOnTop}\n labelHide={this.labelHide}\n required={this.required}\n readonly={this.readonly}\n mgWidth={this.mgWidth}\n disabled={this.disabled}\n value={this.value}\n readonlyValue={undefined}\n tooltip={this.tooltip}\n helpText={this.helpText}\n errorMessage={this.errorMessage}\n isFieldset={false}\n >\n <div\n class=\"mg-c-input__with-character-left\"\n style={{\n '--mg-character-left-message-length': (this.displayCharacterLeft\n ? (this.maxlength - (this.value || '').length).toString().length + this.maxlength.toString().length + 1\n : 0\n ).toString(),\n }}\n >\n {this.icon !== undefined && <mg-icon icon={this.icon}></mg-icon>}\n <input\n type={this.type}\n class=\"mg-c-input__box\"\n value={this.value}\n id={this.identifier}\n list={this.hasDatalist() ? this.datalistId : undefined}\n autocomplete={this.hasDatalist() ? 'off' : undefined}\n name={this.name}\n placeholder={this.placeholder}\n title={this.placeholder}\n maxlength={this.maxlength}\n disabled={this.disabled}\n required={this.required}\n pattern={this.pattern}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={(el: HTMLInputElement) => {\n if (el !== null) this.input = el;\n }}\n />\n {this.hasDatalist() && (\n <datalist id={this.datalistId}>\n {this.datalistoptions.map(option => (\n <option value={option} key={option}></option>\n ))}\n </datalist>\n )}\n {this.displayCharacterLeft && this.maxlength > 0 && (\n <mg-character-left identifier={this.characterLeftId} characters={this.value} maxlength={this.maxlength}></mg-character-left>\n )}\n </div>\n <slot name=\"append-input\"></slot>\n </MgInput>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { renderAttributes, renderProperties } from "../../../../../utils/e2e.test.utils";
|
|
2
|
+
import { setPageContent, expect, describe, test, testEach, updateScreenshotClass, describeEach } from "../../../../../utils/playwright.e2e.test.utils";
|
|
3
|
+
const creatHtml = (props) => {
|
|
4
|
+
const slot = props.slot;
|
|
5
|
+
delete props.slot;
|
|
6
|
+
return `<mg-input-text ${renderAttributes(props)}>${slot}</mg-input-text><script>${renderProperties(props, `[identifier="${props.identifier}"]`)}</script>`;
|
|
7
|
+
};
|
|
8
|
+
const defaultProps = { identifier: 'identifier', label: 'label' };
|
|
9
|
+
describe('mg-input-text', () => {
|
|
10
|
+
describe('render', () => {
|
|
11
|
+
testEach([
|
|
12
|
+
Object.assign({}, defaultProps),
|
|
13
|
+
Object.assign(Object.assign({}, defaultProps), { labelOnTop: true }),
|
|
14
|
+
Object.assign(Object.assign({}, defaultProps), { labelHide: true }),
|
|
15
|
+
Object.assign(Object.assign({}, defaultProps), { placeholder: 'placeholder', helpText: 'HelpText Message' }),
|
|
16
|
+
])('without tooltip %s', async (page, props) => {
|
|
17
|
+
await setPageContent(page, creatHtml(props));
|
|
18
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
19
|
+
await element.waitFor({ timeout: 1000 });
|
|
20
|
+
const input = await page.locator('mg-input-text input');
|
|
21
|
+
// Hide caret for screenshots
|
|
22
|
+
await page.locator('mg-input-text input').evaluate(element => (element.style.caretColor = 'transparent'));
|
|
23
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
24
|
+
await page.keyboard.down('Tab');
|
|
25
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
26
|
+
await input.press('KeyB');
|
|
27
|
+
await input.press('KeyL');
|
|
28
|
+
await input.press('KeyU');
|
|
29
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
30
|
+
});
|
|
31
|
+
testEach([true, false])('with tooltip, case label-on-top %s', async (page, labelOnTop) => {
|
|
32
|
+
const args = Object.assign(Object.assign({}, defaultProps), { tooltip: 'Tooltip message', labelOnTop });
|
|
33
|
+
await setPageContent(page, creatHtml(args));
|
|
34
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
35
|
+
await element.waitFor({ timeout: 1000 });
|
|
36
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
37
|
+
await page.keyboard.down('Tab');
|
|
38
|
+
if (!labelOnTop) {
|
|
39
|
+
// Ensure to display tooltip
|
|
40
|
+
await page.setViewportSize({ height: 100, width: 500 });
|
|
41
|
+
await updateScreenshotClass(page, { height: '65px', width: '500px' });
|
|
42
|
+
// when label on top tooltip is on fist tab (next to label)
|
|
43
|
+
await page.keyboard.down('Tab');
|
|
44
|
+
}
|
|
45
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
46
|
+
});
|
|
47
|
+
testEach([
|
|
48
|
+
Object.assign(Object.assign({}, defaultProps), { readonly: true }),
|
|
49
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'blu' }),
|
|
50
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'blu', readonly: true }),
|
|
51
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'blu', readonly: true, labelOnTop: true }),
|
|
52
|
+
Object.assign(Object.assign({}, defaultProps), { disabled: true }),
|
|
53
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'blu', disabled: true }),
|
|
54
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'batman', helpText: '<mg-icon icon="user" size="small"></mg-icon> Welcome batman' }),
|
|
55
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'blu', helpText: 'HelpText Message', required: true }),
|
|
56
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'blu', helpText: 'HelpText Message', required: true, readonly: true }),
|
|
57
|
+
Object.assign(Object.assign({}, defaultProps), { value: 'blu', helpText: 'HelpText Message', required: true, disabled: true }),
|
|
58
|
+
])('Should render with template %s', async (page, args) => {
|
|
59
|
+
await setPageContent(page, creatHtml(args));
|
|
60
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
61
|
+
await element.waitFor({ timeout: 1000 });
|
|
62
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
63
|
+
});
|
|
64
|
+
testEach([
|
|
65
|
+
Object.assign(Object.assign({}, defaultProps), { required: true }),
|
|
66
|
+
Object.assign(Object.assign({}, defaultProps), { required: true, lang: 'fr' }),
|
|
67
|
+
])('Should render error when leaving an empty required input %s', async (page, args) => {
|
|
68
|
+
await setPageContent(page, creatHtml(args));
|
|
69
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
70
|
+
await element.waitFor({ timeout: 1000 });
|
|
71
|
+
await page.keyboard.down('Tab');
|
|
72
|
+
await page.keyboard.down('Tab');
|
|
73
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
74
|
+
});
|
|
75
|
+
testEach([16, 'full'])('Should render error when leaving input with a non matching pattern value, mg-width: %s', async (page, mgWidth) => {
|
|
76
|
+
await setPageContent(page, creatHtml(Object.assign(Object.assign({}, defaultProps), { mgWidth, pattern: '[a-z]*', patternErrorMessage: 'Vous ne pouvez saisir que des lettres minuscules.' })));
|
|
77
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
78
|
+
await element.waitFor({ timeout: 1000 });
|
|
79
|
+
const input = await page.locator('mg-input-text input');
|
|
80
|
+
expect(element).toHaveClass('hydrated');
|
|
81
|
+
await page.keyboard.down('Tab');
|
|
82
|
+
await input.press('KeyB');
|
|
83
|
+
await input.press('KeyL');
|
|
84
|
+
await input.press('KeyU');
|
|
85
|
+
await input.press('1');
|
|
86
|
+
await page.keyboard.down('Tab');
|
|
87
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
88
|
+
await page.keyboard.down('Tab');
|
|
89
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
90
|
+
});
|
|
91
|
+
testEach([
|
|
92
|
+
Object.assign(Object.assign({}, defaultProps), { label: 'long label long label long label long label long label long label long label long label long label long label long label', tooltip: 'tooltip message' }),
|
|
93
|
+
Object.assign(Object.assign({}, defaultProps), { label: 'long label long label long label long label long label long label long label long label long label long label long label', tooltip: 'tooltip message', labelOnTop: true }),
|
|
94
|
+
])('inside a div.mg-form-group %s', async (page, args) => {
|
|
95
|
+
await setPageContent(page, `<div class="mg-form-group">${creatHtml(args)}</div>`);
|
|
96
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
97
|
+
await element.waitFor({ timeout: 1000 });
|
|
98
|
+
await page.setViewportSize({ height: 100, width: 500 });
|
|
99
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
100
|
+
});
|
|
101
|
+
describeEach([true, false])('using append-input slot, case readonly %s', (readonly) => {
|
|
102
|
+
testEach([
|
|
103
|
+
Object.assign(Object.assign({}, defaultProps), { type: 'search', slot: `<mg-button slot="append-input" label="search">
|
|
104
|
+
<mg-icon icon="magnifying-glass"></mg-icon> Search
|
|
105
|
+
</mg-button>`, icon: 'magnifying-glass' }),
|
|
106
|
+
Object.assign(Object.assign({}, defaultProps), { type: 'text', slot: '<span slot="append-input">@dc.comics</span>' }),
|
|
107
|
+
Object.assign(Object.assign({}, defaultProps), { type: 'text', slot: `<mg-button is-icon slot="append-input" label="cancel" variant="secondary">
|
|
108
|
+
<mg-icon icon="cross"></mg-icon>
|
|
109
|
+
</mg-button>
|
|
110
|
+
<mg-button is-icon slot="append-input" label="validate" variant="secondary">
|
|
111
|
+
<mg-icon icon="check"></mg-icon>
|
|
112
|
+
</mg-button>
|
|
113
|
+
` }),
|
|
114
|
+
])('render slot %s', async (page, props) => {
|
|
115
|
+
await setPageContent(page, creatHtml(Object.assign(Object.assign({}, props), { placeholder: 'placeholder', value: 'bruce', readonly })));
|
|
116
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
117
|
+
await element.waitFor({ timeout: 1000 });
|
|
118
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describeEach([16, 4, 2])('with custom width: %s', (mgWidth) => {
|
|
122
|
+
testEach([false, true])('with label on top: %s', async (page, labelOnTop) => {
|
|
123
|
+
await setPageContent(page, creatHtml(Object.assign(Object.assign({}, defaultProps), { value: 'bruce', mgWidth,
|
|
124
|
+
labelOnTop })));
|
|
125
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
126
|
+
await element.waitFor({ timeout: 1000 });
|
|
127
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
testEach([false, true])('Ensure component fit in width 200px with label-on-top: %s', async (page, labelOnTop) => {
|
|
131
|
+
await setPageContent(page, creatHtml(Object.assign(Object.assign({}, defaultProps), { labelOnTop })));
|
|
132
|
+
const element = await page.locator('mg-input-text.hydrated');
|
|
133
|
+
await element.waitFor({ timeout: 1000 });
|
|
134
|
+
await page.setViewportSize({ height: 100, width: 200 });
|
|
135
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe('datalist', () => {
|
|
139
|
+
test('Should display datalist', async ({ page }) => {
|
|
140
|
+
const props = { identifier: 'identifier', label: 'label', datalistoptions: ['batman', 'robin'] };
|
|
141
|
+
await setPageContent(page, creatHtml(props));
|
|
142
|
+
await page.keyboard.down('Tab');
|
|
143
|
+
await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=mg-input-text.e2e.playwright.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mg-input-text.e2e.playwright.js","sourceRoot":"","sources":["../../../../../../src/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.playwright.ts"],"names":[],"mappings":"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","sourcesContent":["import { renderAttributes, renderProperties } from '../../../../../utils/e2e.test.utils';\nimport { setPageContent, expect, describe, test, testEach, PageType, updateScreenshotClass, describeEach } from '../../../../../utils/playwright.e2e.test.utils';\nimport { MgInputText } from '../mg-input-text';\n\nconst creatHtml = (props: Partial<MgInputText & { slot: string }>) => {\n const slot = props.slot;\n delete props.slot;\n return `<mg-input-text ${renderAttributes(props)}>${slot}</mg-input-text><script>${renderProperties(props, `[identifier=\"${props.identifier}\"]`)}</script>`;\n};\n\nconst defaultProps = { identifier: 'identifier', label: 'label' };\n\ndescribe('mg-input-text', () => {\n describe('render', () => {\n testEach([\n { ...defaultProps },\n { ...defaultProps, labelOnTop: true },\n { ...defaultProps, labelHide: true },\n { ...defaultProps, placeholder: 'placeholder', helpText: 'HelpText Message' },\n ])('without tooltip %s', async (page: PageType, props: MgInputText) => {\n await setPageContent(page, creatHtml(props));\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n const input = await page.locator('mg-input-text input');\n\n // Hide caret for screenshots\n await page.locator('mg-input-text input').evaluate(element => (element.style.caretColor = 'transparent'));\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n\n await page.keyboard.down('Tab');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n\n await input.press('KeyB');\n await input.press('KeyL');\n await input.press('KeyU');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n testEach([true, false])('with tooltip, case label-on-top %s', async (page: PageType, labelOnTop: boolean) => {\n const args: Partial<MgInputText> = { ...defaultProps, tooltip: 'Tooltip message', labelOnTop };\n await setPageContent(page, creatHtml(args));\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n\n await page.keyboard.down('Tab');\n if (!labelOnTop) {\n // Ensure to display tooltip\n await page.setViewportSize({ height: 100, width: 500 });\n await updateScreenshotClass(page, { height: '65px', width: '500px' });\n // when label on top tooltip is on fist tab (next to label)\n await page.keyboard.down('Tab');\n }\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n testEach([\n { ...defaultProps, readonly: true },\n { ...defaultProps, value: 'blu' },\n { ...defaultProps, value: 'blu', readonly: true },\n { ...defaultProps, value: 'blu', readonly: true, labelOnTop: true },\n { ...defaultProps, disabled: true },\n { ...defaultProps, value: 'blu', disabled: true },\n { ...defaultProps, value: 'batman', helpText: '<mg-icon icon=\"user\" size=\"small\"></mg-icon> Welcome batman' },\n { ...defaultProps, value: 'blu', helpText: 'HelpText Message', required: true },\n { ...defaultProps, value: 'blu', helpText: 'HelpText Message', required: true, readonly: true },\n { ...defaultProps, value: 'blu', helpText: 'HelpText Message', required: true, disabled: true },\n ])('Should render with template %s', async (page: PageType, args) => {\n await setPageContent(page, creatHtml(args));\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n testEach([\n { ...defaultProps, required: true },\n { ...defaultProps, required: true, lang: 'fr' },\n ])('Should render error when leaving an empty required input %s', async (page: PageType, args) => {\n await setPageContent(page, creatHtml(args));\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n\n await page.keyboard.down('Tab');\n await page.keyboard.down('Tab');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n testEach([16, 'full'])('Should render error when leaving input with a non matching pattern value, mg-width: %s', async (page: PageType, mgWidth: MgInputText['mgWidth']) => {\n await setPageContent(\n page,\n creatHtml({\n ...defaultProps,\n mgWidth,\n pattern: '[a-z]*',\n patternErrorMessage: 'Vous ne pouvez saisir que des lettres minuscules.',\n }),\n );\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n const input = await page.locator('mg-input-text input');\n\n expect(element).toHaveClass('hydrated');\n\n await page.keyboard.down('Tab');\n\n await input.press('KeyB');\n await input.press('KeyL');\n await input.press('KeyU');\n await input.press('1');\n\n await page.keyboard.down('Tab');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n\n await page.keyboard.down('Tab');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n testEach([\n {\n ...defaultProps,\n label: 'long label long label long label long label long label long label long label long label long label long label long label',\n tooltip: 'tooltip message',\n },\n {\n ...defaultProps,\n label: 'long label long label long label long label long label long label long label long label long label long label long label',\n tooltip: 'tooltip message',\n labelOnTop: true,\n },\n ])('inside a div.mg-form-group %s', async (page: PageType, args) => {\n await setPageContent(page, `<div class=\"mg-form-group\">${creatHtml(args)}</div>`);\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n\n await page.setViewportSize({ height: 100, width: 500 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n describeEach([true, false])('using append-input slot, case readonly %s', (readonly: boolean) => {\n testEach([\n {\n ...defaultProps,\n type: 'search',\n slot: `<mg-button slot=\"append-input\" label=\"search\">\n <mg-icon icon=\"magnifying-glass\"></mg-icon> Search\n </mg-button>`,\n icon: 'magnifying-glass',\n },\n {\n ...defaultProps,\n type: 'text',\n slot: '<span slot=\"append-input\">@dc.comics</span>',\n },\n {\n ...defaultProps,\n type: 'text',\n slot: `<mg-button is-icon slot=\"append-input\" label=\"cancel\" variant=\"secondary\">\n <mg-icon icon=\"cross\"></mg-icon>\n </mg-button>\n <mg-button is-icon slot=\"append-input\" label=\"validate\" variant=\"secondary\">\n <mg-icon icon=\"check\"></mg-icon>\n </mg-button>\n `,\n },\n ])('render slot %s', async (page: PageType, props: Record<string, unknown>) => {\n await setPageContent(\n page,\n creatHtml({\n ...props,\n placeholder: 'placeholder',\n value: 'bruce',\n readonly,\n }),\n );\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n });\n\n describeEach([16, 4, 2])('with custom width: %s', (mgWidth: MgInputText['mgWidth']) => {\n testEach([false, true])('with label on top: %s', async (page: PageType, labelOnTop: MgInputText['labelOnTop']) => {\n await setPageContent(\n page,\n creatHtml({\n ...defaultProps,\n value: 'bruce',\n mgWidth,\n labelOnTop,\n }),\n );\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n });\n\n testEach([false, true])('Ensure component fit in width 200px with label-on-top: %s', async (page: PageType, labelOnTop: MgInputText['labelOnTop']) => {\n await setPageContent(\n page,\n creatHtml({\n ...defaultProps,\n labelOnTop,\n }),\n );\n\n const element = await page.locator('mg-input-text.hydrated');\n await element.waitFor({ timeout: 1000 });\n\n await page.setViewportSize({ height: 100, width: 200 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n });\n\n describe('datalist', () => {\n test('Should display datalist', async ({ page }) => {\n const props = { identifier: 'identifier', label: 'label', datalistoptions: ['batman', 'robin'] };\n await setPageContent(page, creatHtml(props));\n\n await page.keyboard.down('Tab');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n });\n});\n"]}
|