@watermarkinsights/ripple 5.30.0 → 5.31.0-alpha.1
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/app-globals-df7ca137.js +103 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/priv-calendar.cjs.entry.js +27 -27
- package/dist/cjs/priv-chart-popover-old.cjs.entry.js +2 -2
- package/dist/cjs/priv-chart-popover_2.cjs.entry.js +3 -3
- package/dist/cjs/priv-navigator-button.cjs.entry.js +1 -1
- package/dist/cjs/priv-navigator-item.cjs.entry.js +1 -1
- package/dist/cjs/priv-option-list.cjs.entry.js +1 -1
- package/dist/cjs/ripple.cjs.js +1 -1
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +5 -4
- package/dist/cjs/wm-button.cjs.entry.js +1 -1
- package/dist/cjs/wm-chart-bar.cjs.entry.js +1 -1
- package/dist/cjs/wm-chart-column.cjs.entry.js +1 -1
- package/dist/cjs/wm-chart.cjs.entry.js +1 -1
- package/dist/cjs/wm-date-range.cjs.entry.js +25 -9
- package/dist/cjs/wm-datepicker.cjs.entry.js +37 -11
- package/dist/cjs/wm-file-list.cjs.entry.js +1 -1
- package/dist/cjs/wm-file.cjs.entry.js +1 -1
- package/dist/cjs/wm-flyout.cjs.entry.js +6 -1
- package/dist/cjs/wm-input.cjs.entry.js +1 -1
- package/dist/cjs/wm-line-chart.cjs.entry.js +1 -1
- package/dist/cjs/wm-modal-pss_3.cjs.entry.js +4 -4
- package/dist/cjs/wm-modal_3.cjs.entry.js +19 -4
- package/dist/cjs/wm-navigation_3.cjs.entry.js +4 -4
- package/dist/cjs/wm-navigator.cjs.entry.js +1 -1
- package/dist/cjs/wm-nested-select.cjs.entry.js +3 -3
- package/dist/cjs/wm-optgroup.cjs.entry.js +11 -1
- package/dist/cjs/wm-option_2.cjs.entry.js +5 -5
- package/dist/cjs/wm-pagination.cjs.entry.js +1 -1
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +2 -2
- package/dist/cjs/wm-search.cjs.entry.js +2 -2
- package/dist/cjs/wm-snackbar.cjs.entry.js +2 -2
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +6 -6
- package/dist/cjs/wm-tag-input.cjs.entry.js +2 -2
- package/dist/cjs/wm-tag-option.cjs.entry.js +8 -0
- package/dist/cjs/wm-textarea.cjs.entry.js +1 -1
- package/dist/cjs/wm-timepicker.cjs.entry.js +14 -2
- package/dist/cjs/wm-toggletip.cjs.entry.js +3 -3
- package/dist/cjs/wm-uploader.cjs.entry.js +2 -2
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +7 -2
- package/dist/collection/components/charts/priv-chart-popover-old/priv-chart-popover-old.js +7 -2
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +58 -6
- package/dist/collection/components/charts/wm-chart/wm-chart.js +139 -13
- package/dist/collection/components/charts/wm-chart-bar/wm-chart-bar.js +134 -7
- package/dist/collection/components/charts/wm-chart-column/wm-chart-column.js +102 -8
- package/dist/collection/components/charts/wm-chart-legend/wm-chart-legend.js +90 -8
- package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +153 -17
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +63 -7
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +85 -5
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +52 -6
- package/dist/collection/components/datepickers/priv-calendar/priv-calendar.css +47 -47
- package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +33 -29
- package/dist/collection/components/datepickers/wm-date-range.js +246 -29
- package/dist/collection/components/datepickers/wm-datepicker.js +254 -30
- package/dist/collection/components/selects/priv-option-list/priv-option-list.js +7 -1
- package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +193 -17
- package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +116 -11
- package/dist/collection/components/selects/wm-option/wm-option.js +153 -18
- package/dist/collection/components/selects/wm-select/wm-select.js +187 -21
- package/dist/collection/components/wm-action-menu/wm-action-menu.js +148 -12
- package/dist/collection/components/wm-button/wm-button.js +212 -18
- package/dist/collection/components/wm-file/wm-file.js +108 -14
- package/dist/collection/components/wm-file-list/wm-file-list.js +74 -2
- package/dist/collection/components/wm-flyout/wm-flyout.js +215 -16
- package/dist/collection/components/wm-input/wm-input.js +195 -20
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +62 -5
- package/dist/collection/components/wm-modal/wm-modal-footer.js +63 -6
- package/dist/collection/components/wm-modal/wm-modal-header.js +34 -3
- package/dist/collection/components/wm-modal/wm-modal.js +181 -14
- package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +5 -1
- package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +5 -1
- package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +6 -2
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +37 -3
- package/dist/collection/components/wm-navigation/wm-navigation-item.js +47 -5
- package/dist/collection/components/wm-navigation/wm-navigation.js +54 -4
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +5 -1
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +5 -1
- package/dist/collection/components/wm-navigator/wm-navigator.js +102 -9
- package/dist/collection/components/wm-pagination/wm-pagination.js +106 -9
- package/dist/collection/components/wm-search/wm-search.js +182 -16
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +96 -5
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +66 -10
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +96 -5
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +42 -6
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +205 -17
- package/dist/collection/components/wm-tag-input/wm-tag-option/wm-tag-option.js +97 -12
- package/dist/collection/components/wm-textarea/wm-textarea.js +116 -13
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +190 -16
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +87 -8
- package/dist/collection/components/wm-uploader/wm-uploader.js +142 -14
- package/dist/collection/components/wm-wrapper/wm-wrapper.js +3 -0
- package/dist/collection/global/services/__mocks__/http-service.js +1 -1
- package/dist/docs/docs.d.ts +435 -0
- package/dist/docs/docs.json +13915 -0
- package/dist/docs/props-reference.json +2028 -0
- package/dist/docs/skill/index.md +32 -0
- package/dist/docs/skill/wm-action-menu.md +93 -0
- package/dist/docs/skill/wm-button.md +103 -0
- package/dist/docs/skill/wm-chart-bar.md +129 -0
- package/dist/docs/skill/wm-chart-column.md +96 -0
- package/dist/docs/skill/wm-chart-legend.md +67 -0
- package/dist/docs/skill/wm-chart-slice.md +55 -0
- package/dist/docs/skill/wm-chart.md +92 -0
- package/dist/docs/skill/wm-date-range.md +153 -0
- package/dist/docs/skill/wm-datepicker.md +134 -0
- package/dist/docs/skill/wm-file-list.md +97 -0
- package/dist/docs/skill/wm-file.md +78 -0
- package/dist/docs/skill/wm-flyout.md +174 -0
- package/dist/docs/skill/wm-input.md +126 -0
- package/dist/docs/skill/wm-line-chart.md +108 -0
- package/dist/docs/skill/wm-menuitem.md +72 -0
- package/dist/docs/skill/wm-modal-footer.md +73 -0
- package/dist/docs/skill/wm-modal-header.md +65 -0
- package/dist/docs/skill/wm-modal.md +137 -0
- package/dist/docs/skill/wm-navigation-hamburger.md +56 -0
- package/dist/docs/skill/wm-navigation-item.md +69 -0
- package/dist/docs/skill/wm-navigation.md +66 -0
- package/dist/docs/skill/wm-navigator.md +91 -0
- package/dist/docs/skill/wm-nested-select.md +149 -0
- package/dist/docs/skill/wm-optgroup.md +71 -0
- package/dist/docs/skill/wm-option.md +68 -0
- package/dist/docs/skill/wm-pagination.md +95 -0
- package/dist/docs/skill/wm-progress-indicator.md +49 -0
- package/dist/docs/skill/wm-progress-monitor.md +93 -0
- package/dist/docs/skill/wm-progress-slice.md +41 -0
- package/dist/docs/skill/wm-search.md +157 -0
- package/dist/docs/skill/wm-select.md +148 -0
- package/dist/docs/skill/wm-snackbar.md +101 -0
- package/dist/docs/skill/wm-tab-item.md +35 -0
- package/dist/docs/skill/wm-tab-list.md +112 -0
- package/dist/docs/skill/wm-tab-panel.md +33 -0
- package/dist/docs/skill/wm-tag-input.md +165 -0
- package/dist/docs/skill/wm-tag-option.md +59 -0
- package/dist/docs/skill/wm-textarea.md +94 -0
- package/dist/docs/skill/wm-timepicker.md +139 -0
- package/dist/docs/skill/wm-toggletip.md +92 -0
- package/dist/docs/skill/wm-uploader.md +129 -0
- package/dist/docs/skill/wm-wrapper.md +6 -0
- package/dist/docs/wm-action-menu.md +111 -0
- package/dist/docs/wm-button.md +137 -0
- package/dist/docs/wm-chart-bar.md +23 -0
- package/dist/docs/wm-chart-column.md +26 -0
- package/dist/docs/wm-chart-legend.md +31 -0
- package/dist/docs/wm-chart-slice.md +14 -0
- package/dist/docs/wm-chart.md +30 -0
- package/dist/docs/wm-date-range.md +215 -0
- package/dist/docs/wm-datepicker.md +210 -0
- package/dist/docs/wm-file-list.md +95 -0
- package/dist/docs/wm-file.md +34 -0
- package/dist/docs/wm-flyout.md +123 -0
- package/dist/docs/wm-input.md +120 -0
- package/dist/docs/wm-line-chart.md +32 -0
- package/dist/docs/wm-menuitem.md +38 -0
- package/dist/docs/wm-modal-footer.md +106 -0
- package/dist/docs/wm-modal-header.md +100 -0
- package/dist/docs/wm-modal.md +127 -0
- package/dist/docs/wm-navigation-hamburger.md +91 -0
- package/dist/docs/wm-navigation-item.md +98 -0
- package/dist/docs/wm-navigation.md +101 -0
- package/dist/docs/wm-navigator.md +99 -0
- package/dist/docs/wm-nested-select.md +107 -0
- package/dist/docs/wm-optgroup.md +28 -0
- package/dist/docs/wm-option.md +24 -0
- package/dist/docs/wm-pagination.md +94 -0
- package/dist/docs/wm-progress-indicator.md +23 -0
- package/dist/docs/wm-progress-monitor.md +27 -0
- package/dist/docs/wm-progress-slice.md +16 -0
- package/dist/docs/wm-search.md +119 -0
- package/dist/docs/wm-select.md +120 -0
- package/dist/docs/wm-snackbar.md +87 -0
- package/dist/docs/wm-tab-item.md +23 -0
- package/dist/docs/wm-tab-list.md +98 -0
- package/dist/docs/wm-tab-panel.md +18 -0
- package/dist/docs/wm-tag-input.md +123 -0
- package/dist/docs/wm-tag-option.md +33 -0
- package/dist/docs/wm-textarea.md +101 -0
- package/dist/docs/wm-timepicker.md +122 -0
- package/dist/docs/wm-toggletip.md +86 -0
- package/dist/docs/wm-uploader.md +114 -0
- package/dist/docs/wm-wrapper.md +7 -0
- package/dist/esm/app-globals-466ed44b.js +101 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/priv-calendar.entry.js +27 -27
- package/dist/esm/priv-chart-popover-old.entry.js +2 -2
- package/dist/esm/priv-chart-popover_2.entry.js +3 -3
- package/dist/esm/priv-navigator-button.entry.js +1 -1
- package/dist/esm/priv-navigator-item.entry.js +1 -1
- package/dist/esm/priv-option-list.entry.js +1 -1
- package/dist/esm/ripple.js +1 -1
- package/dist/esm/wm-action-menu_2.entry.js +5 -4
- package/dist/esm/wm-button.entry.js +1 -1
- package/dist/esm/wm-chart-bar.entry.js +1 -1
- package/dist/esm/wm-chart-column.entry.js +1 -1
- package/dist/esm/wm-chart.entry.js +1 -1
- package/dist/esm/wm-date-range.entry.js +25 -9
- package/dist/esm/wm-datepicker.entry.js +37 -11
- package/dist/esm/wm-file-list.entry.js +1 -1
- package/dist/esm/wm-file.entry.js +1 -1
- package/dist/esm/wm-flyout.entry.js +6 -1
- package/dist/esm/wm-input.entry.js +1 -1
- package/dist/esm/wm-line-chart.entry.js +1 -1
- package/dist/esm/wm-modal-pss_3.entry.js +4 -4
- package/dist/esm/wm-modal_3.entry.js +19 -4
- package/dist/esm/wm-navigation_3.entry.js +4 -4
- package/dist/esm/wm-navigator.entry.js +1 -1
- package/dist/esm/wm-nested-select.entry.js +3 -3
- package/dist/esm/wm-optgroup.entry.js +11 -1
- package/dist/esm/wm-option_2.entry.js +5 -5
- package/dist/esm/wm-pagination.entry.js +1 -1
- package/dist/esm/wm-progress-indicator_3.entry.js +2 -2
- package/dist/esm/wm-search.entry.js +2 -2
- package/dist/esm/wm-snackbar.entry.js +2 -2
- package/dist/esm/wm-tab-item_3.entry.js +6 -6
- package/dist/esm/wm-tag-input.entry.js +2 -2
- package/dist/esm/wm-tag-option.entry.js +8 -0
- package/dist/esm/wm-textarea.entry.js +1 -1
- package/dist/esm/wm-timepicker.entry.js +14 -2
- package/dist/esm/wm-toggletip.entry.js +3 -3
- package/dist/esm/wm-uploader.entry.js +2 -2
- package/dist/esm-es5/app-globals-466ed44b.js +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/priv-calendar.entry.js +1 -1
- package/dist/esm-es5/priv-chart-popover-old.entry.js +1 -1
- package/dist/esm-es5/priv-chart-popover_2.entry.js +1 -1
- package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
- package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
- package/dist/esm-es5/priv-option-list.entry.js +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-button.entry.js +1 -1
- package/dist/esm-es5/wm-chart-bar.entry.js +1 -1
- package/dist/esm-es5/wm-chart-column.entry.js +1 -1
- package/dist/esm-es5/wm-chart.entry.js +1 -1
- package/dist/esm-es5/wm-date-range.entry.js +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js +1 -1
- package/dist/esm-es5/wm-file-list.entry.js +1 -1
- package/dist/esm-es5/wm-file.entry.js +1 -1
- package/dist/esm-es5/wm-flyout.entry.js +1 -1
- package/dist/esm-es5/wm-input.entry.js +1 -1
- package/dist/esm-es5/wm-line-chart.entry.js +1 -1
- package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -1
- package/dist/esm-es5/wm-modal_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigator.entry.js +1 -1
- package/dist/esm-es5/wm-nested-select.entry.js +1 -1
- package/dist/esm-es5/wm-optgroup.entry.js +1 -1
- package/dist/esm-es5/wm-option_2.entry.js +1 -1
- package/dist/esm-es5/wm-pagination.entry.js +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
- package/dist/esm-es5/wm-search.entry.js +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js +1 -1
- package/dist/esm-es5/wm-textarea.entry.js +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js +1 -1
- package/dist/esm-es5/wm-uploader.entry.js +1 -1
- package/dist/ripple/{p-1fc894ac.system.entry.js → p-012bd307.system.entry.js} +1 -1
- package/dist/ripple/p-03f352dc.entry.js +1 -0
- package/dist/ripple/{p-4f53544d.entry.js → p-03ff4f41.entry.js} +1 -1
- package/dist/ripple/{p-2a03f658.entry.js → p-045aa27f.entry.js} +1 -1
- package/dist/ripple/{p-709d1765.entry.js → p-057ffccb.entry.js} +1 -1
- package/dist/ripple/p-06c3dc14.system.entry.js +1 -0
- package/dist/ripple/{p-ff6fd274.system.entry.js → p-09a80f59.system.entry.js} +1 -1
- package/dist/ripple/{p-3bd8537c.entry.js → p-09fb0a09.entry.js} +1 -1
- package/dist/ripple/p-0a05d3a3.js +1 -0
- package/dist/ripple/{p-3f69041f.entry.js → p-0ab9bac7.entry.js} +1 -1
- package/dist/ripple/{p-332a3e3d.system.entry.js → p-1059cdb9.system.entry.js} +1 -1
- package/dist/ripple/{p-dbdae848.system.entry.js → p-106a9459.system.entry.js} +1 -1
- package/dist/ripple/{p-e1a6ee77.entry.js → p-16381033.entry.js} +1 -1
- package/dist/ripple/{p-b11abb0d.system.entry.js → p-181109f0.system.entry.js} +1 -1
- package/dist/ripple/{p-bb9f54cf.system.entry.js → p-1855c3b1.system.entry.js} +1 -1
- package/dist/ripple/{p-4533241f.entry.js → p-1c25838e.entry.js} +1 -1
- package/dist/ripple/{p-fb6aee09.entry.js → p-1f67b172.entry.js} +1 -1
- package/dist/ripple/{p-a3dd5204.system.entry.js → p-22703bcd.system.entry.js} +1 -1
- package/dist/ripple/{p-a6aef87d.system.entry.js → p-237388c5.system.entry.js} +1 -1
- package/dist/ripple/p-237f5977.system.entry.js +1 -0
- package/dist/ripple/p-25d6cc45.system.js +1 -0
- package/dist/ripple/{p-09d5381c.entry.js → p-299d2d8b.entry.js} +1 -1
- package/dist/ripple/{p-e78f9572.system.entry.js → p-2c1d219f.system.entry.js} +1 -1
- package/dist/ripple/{p-84e04896.entry.js → p-2dbf9636.entry.js} +1 -1
- package/dist/ripple/{p-05dae6a0.entry.js → p-2dc1071a.entry.js} +1 -1
- package/dist/ripple/{p-39bac42a.entry.js → p-3216e2e7.entry.js} +1 -1
- package/dist/ripple/p-3252c04b.system.entry.js +1 -0
- package/dist/ripple/{p-7ca0bb68.system.entry.js → p-32bac954.system.entry.js} +1 -1
- package/dist/ripple/p-33eeaa18.entry.js +1 -0
- package/dist/ripple/p-3441da90.entry.js +1 -0
- package/dist/ripple/p-3502fd33.system.entry.js +1 -0
- package/dist/ripple/{p-f51404f5.entry.js → p-351000b9.entry.js} +1 -1
- package/dist/ripple/{p-bf3eef42.entry.js → p-3c0062c5.entry.js} +1 -1
- package/dist/ripple/{p-c1abc58e.entry.js → p-3d3836ad.entry.js} +1 -1
- package/dist/ripple/p-3e8bfc68.system.entry.js +1 -0
- package/dist/ripple/p-3f403a64.system.entry.js +1 -0
- package/dist/ripple/{p-b974a535.system.entry.js → p-43e8d384.system.entry.js} +1 -1
- package/dist/ripple/p-49dc64ba.entry.js +1 -0
- package/dist/ripple/{p-9d345fc7.system.entry.js → p-4a942d74.system.entry.js} +1 -1
- package/dist/ripple/p-4cc09fa3.system.entry.js +1 -0
- package/dist/ripple/p-5177d4fa.entry.js +1 -0
- package/dist/ripple/p-51fff3a7.system.entry.js +1 -0
- package/dist/ripple/p-54ba0eae.entry.js +1 -0
- package/dist/ripple/{p-c04d0eeb.system.entry.js → p-5609bde2.system.entry.js} +1 -1
- package/dist/ripple/{p-86148143.system.entry.js → p-56e1a71d.system.entry.js} +1 -1
- package/dist/ripple/{p-f94af31c.entry.js → p-578b5443.entry.js} +1 -1
- package/dist/ripple/p-57901fc3.entry.js +1 -0
- package/dist/ripple/{p-463be5be.entry.js → p-57a0cb5f.entry.js} +1 -1
- package/dist/ripple/{p-0db033c3.system.entry.js → p-59b3f92b.system.entry.js} +1 -1
- package/dist/ripple/p-5a533e7c.entry.js +1 -0
- package/dist/ripple/{p-5f092b39.system.entry.js → p-61a0ba92.system.entry.js} +1 -1
- package/dist/ripple/{p-6de83c6f.entry.js → p-623b89e0.entry.js} +1 -1
- package/dist/ripple/{p-6479b06b.entry.js → p-668c0758.entry.js} +1 -1
- package/dist/ripple/p-6a6e98c7.entry.js +1 -0
- package/dist/ripple/{p-b654743f.system.entry.js → p-6c46dd9a.system.entry.js} +1 -1
- package/dist/ripple/{p-4e7ae2c5.system.entry.js → p-6ea254d2.system.entry.js} +1 -1
- package/dist/ripple/p-6f875608.system.entry.js +1 -0
- package/dist/ripple/{p-d05b7cd3.entry.js → p-71a38bd2.entry.js} +1 -1
- package/dist/ripple/{p-dab54a9d.entry.js → p-73a2389d.entry.js} +1 -1
- package/dist/ripple/p-759d87de.entry.js +1 -0
- package/dist/ripple/{p-227b0af9.entry.js → p-75c5ec39.entry.js} +1 -1
- package/dist/ripple/{p-ee729037.system.entry.js → p-7bc3b4ee.system.entry.js} +1 -1
- package/dist/ripple/p-7c7988a3.entry.js +1 -0
- package/dist/ripple/p-81735196.entry.js +1 -0
- package/dist/ripple/{p-a0aba3e0.system.entry.js → p-8376699e.system.entry.js} +1 -1
- package/dist/ripple/{p-503330c1.system.entry.js → p-865208b7.system.entry.js} +1 -1
- package/dist/ripple/{p-28b8a12e.system.entry.js → p-8715d758.system.entry.js} +1 -1
- package/dist/ripple/p-8bfb7664.entry.js +1 -0
- package/dist/ripple/{p-680f5703.entry.js → p-8deb22bc.entry.js} +1 -1
- package/dist/ripple/p-8e32e9de.system.entry.js +1 -0
- package/dist/ripple/{p-bdb10d37.entry.js → p-92e3bf68.entry.js} +1 -1
- package/dist/ripple/{p-0feaaae9.system.entry.js → p-942b323c.system.entry.js} +1 -1
- package/dist/ripple/{p-5173359e.entry.js → p-94fd1dcc.entry.js} +1 -1
- package/dist/ripple/p-991455a2.system.entry.js +1 -0
- package/dist/ripple/p-99a112c8.system.entry.js +1 -0
- package/dist/ripple/p-9a8d91d6.entry.js +1 -0
- package/dist/ripple/{p-e0c0e8b0.system.entry.js → p-9afb642d.system.entry.js} +1 -1
- package/dist/ripple/p-9c850273.system.js +1 -0
- package/dist/ripple/p-a3f9e257.entry.js +1 -0
- package/dist/ripple/p-a5b07241.entry.js +1 -0
- package/dist/ripple/{p-d55bd2b9.entry.js → p-a7a6cf55.system.entry.js} +1 -1
- package/dist/ripple/{p-6f2d3297.system.entry.js → p-a917ea86.system.entry.js} +1 -1
- package/dist/ripple/p-ab5664cd.entry.js +1 -0
- package/dist/ripple/{p-cc028323.entry.js → p-acb04e6e.entry.js} +1 -1
- package/dist/ripple/p-b2624d8f.system.entry.js +1 -0
- package/dist/ripple/p-b5b37960.entry.js +1 -0
- package/dist/ripple/p-b713b6de.system.entry.js +1 -0
- package/dist/ripple/p-b75e9e5f.entry.js +1 -0
- package/dist/ripple/{p-b1924539.system.entry.js → p-b7969fd7.system.entry.js} +1 -1
- package/dist/ripple/{p-a7e637a5.system.entry.js → p-b9596bfc.system.entry.js} +1 -1
- package/dist/ripple/p-b9d3d967.system.entry.js +1 -0
- package/dist/ripple/{p-aafced54.system.entry.js → p-bd365c44.system.entry.js} +1 -1
- package/dist/ripple/p-bd9ab5ae.system.entry.js +1 -0
- package/dist/ripple/p-c0028f4d.system.entry.js +1 -0
- package/dist/ripple/p-c7d3ee52.entry.js +1 -0
- package/dist/ripple/p-c8e4e95b.entry.js +1 -0
- package/dist/ripple/p-c996ade8.entry.js +1 -0
- package/dist/ripple/p-ca8378b0.entry.js +1 -0
- package/dist/ripple/{p-bd37dd6f.entry.js → p-cc2176ad.entry.js} +1 -1
- package/dist/ripple/p-cd496e63.entry.js +1 -0
- package/dist/ripple/p-d0653c32.entry.js +1 -0
- package/dist/ripple/{p-9a5d11cb.entry.js → p-d11e5029.entry.js} +1 -1
- package/dist/ripple/p-d3d0b626.entry.js +1 -0
- package/dist/ripple/p-d4899263.entry.js +1 -0
- package/dist/ripple/p-dc82f194.entry.js +1 -0
- package/dist/ripple/{p-a6ef995c.system.entry.js → p-ddfb976f.system.entry.js} +1 -1
- package/dist/ripple/{p-ee26ba53.entry.js → p-e1899945.entry.js} +1 -1
- package/dist/ripple/p-e26b9711.system.entry.js +1 -0
- package/dist/ripple/{p-10aea5ee.system.entry.js → p-e31f597a.system.entry.js} +1 -1
- package/dist/ripple/p-e35de3cd.system.entry.js +1 -0
- package/dist/ripple/p-e3effa1a.system.entry.js +1 -0
- package/dist/ripple/p-e674e6a7.system.entry.js +1 -0
- package/dist/ripple/{p-8e6e868a.entry.js → p-e7ffd796.entry.js} +1 -1
- package/dist/ripple/p-e800717d.entry.js +1 -0
- package/dist/ripple/p-eab35bea.entry.js +1 -0
- package/dist/ripple/{p-df9d5b14.system.entry.js → p-ebdf16fa.system.entry.js} +1 -1
- package/dist/ripple/p-ed9fc1c1.system.entry.js +1 -0
- package/dist/ripple/p-eda49f0e.entry.js +1 -0
- package/dist/ripple/p-ee33fd7f.system.entry.js +1 -0
- package/dist/ripple/p-ee5f43fe.system.entry.js +1 -0
- package/dist/ripple/{p-928b3e5e.entry.js → p-f0ee3616.entry.js} +1 -1
- package/dist/ripple/{p-02c8bf15.system.entry.js → p-f1215c25.system.entry.js} +1 -1
- package/dist/ripple/p-f148ae9d.system.entry.js +1 -0
- package/dist/ripple/p-f307aabe.entry.js +1 -0
- package/dist/ripple/p-f4f6c904.system.entry.js +1 -0
- package/dist/ripple/p-f58833ae.system.entry.js +1 -0
- package/dist/ripple/p-f7fc6350.system.js +1 -1
- package/dist/ripple/p-f881cdc8.system.entry.js +1 -0
- package/dist/ripple/{p-444feb7d.system.entry.js → p-fbb37b4b.system.entry.js} +1 -1
- package/dist/ripple/{p-40e8071c.system.entry.js → p-fc905b2f.system.entry.js} +1 -1
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +5 -0
- package/dist/types/components/charts/priv-chart-popover-old/priv-chart-popover-old.d.ts +5 -0
- package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +52 -0
- package/dist/types/components/charts/wm-chart/wm-chart.d.ts +111 -0
- package/dist/types/components/charts/wm-chart-bar/wm-chart-bar.d.ts +131 -0
- package/dist/types/components/charts/wm-chart-column/wm-chart-column.d.ts +100 -0
- package/dist/types/components/charts/wm-chart-legend/wm-chart-legend.d.ts +77 -0
- package/dist/types/components/charts/wm-line-chart/wm-line-chart.d.ts +134 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +52 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +84 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +44 -0
- package/dist/types/components/datepickers/priv-calendar/priv-calendar.d.ts +6 -2
- package/dist/types/components/datepickers/wm-date-range.d.ts +186 -0
- package/dist/types/components/datepickers/wm-datepicker.d.ts +170 -2
- package/dist/types/components/selects/priv-option-list/priv-option-list.d.ts +6 -0
- package/dist/types/components/selects/wm-nested-select/wm-nested-select.d.ts +162 -0
- package/dist/types/components/selects/wm-optgroup/wm-optgroup.d.ts +87 -0
- package/dist/types/components/selects/wm-option/wm-option.d.ts +117 -0
- package/dist/types/components/selects/wm-select/wm-select.d.ts +164 -0
- package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +122 -0
- package/dist/types/components/wm-button/wm-button.d.ts +170 -2
- package/dist/types/components/wm-file/wm-file.d.ts +92 -0
- package/dist/types/components/wm-file-list/wm-file-list.d.ts +71 -0
- package/dist/types/components/wm-flyout/wm-flyout.d.ts +193 -0
- package/dist/types/components/wm-input/wm-input.d.ts +158 -0
- package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +58 -0
- package/dist/types/components/wm-modal/wm-modal-footer.d.ts +54 -0
- package/dist/types/components/wm-modal/wm-modal-header.d.ts +30 -0
- package/dist/types/components/wm-modal/wm-modal.d.ts +148 -0
- package/dist/types/components/wm-modal-pss/wm-modal-pss-footer.d.ts +4 -0
- package/dist/types/components/wm-modal-pss/wm-modal-pss-header.d.ts +4 -0
- package/dist/types/components/wm-modal-pss/wm-modal-pss.d.ts +4 -0
- package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +34 -0
- package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +41 -0
- package/dist/types/components/wm-navigation/wm-navigation.d.ts +50 -0
- package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +4 -0
- package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +4 -0
- package/dist/types/components/wm-navigator/wm-navigator.d.ts +91 -3
- package/dist/types/components/wm-pagination/wm-pagination.d.ts +90 -0
- package/dist/types/components/wm-search/wm-search.d.ts +148 -5
- package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +94 -0
- package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +43 -2
- package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +93 -0
- package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +28 -2
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +185 -0
- package/dist/types/components/wm-tag-input/wm-tag-option/wm-tag-option.d.ts +68 -0
- package/dist/types/components/wm-textarea/wm-textarea.d.ts +97 -0
- package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +145 -0
- package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +74 -0
- package/dist/types/components/wm-uploader/wm-uploader.d.ts +128 -0
- package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +3 -0
- package/dist/types/components.d.ts +10513 -57
- package/package.json +2 -2
- package/dist/ripple/p-065b0134.entry.js +0 -1
- package/dist/ripple/p-210773eb.entry.js +0 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
### Flyout
|
|
2
|
+
- **Element:** `<wm-flyout>`
|
|
3
|
+
- **Status:** stable
|
|
4
|
+
|
|
5
|
+
**Purpose:** Slide-in panel that renders over the main content as a modal dialog. Used for detail views,
|
|
6
|
+
multi-step workflows, and forms that require focus without navigating away from the page.
|
|
7
|
+
|
|
8
|
+
**When to use:**
|
|
9
|
+
|
|
10
|
+
- **Completing a single, focused task without losing page context** -- when a user needs to fill out a form, make selections, or take action on an item while the underlying page remains visible behind them, use a Flyout to keep that context intact rather than navigating to a new page.
|
|
11
|
+
- **Displaying supplementary details about a selected item** -- when a user clicks a row in a table or a card and needs to see more information or edit fields, a Flyout surfaces that content without displacing the list they came from.
|
|
12
|
+
- **Running a short multi-step workflow** -- when a task can be broken into 2-3 manageable steps (using breadcrumbs to navigate between them), a Flyout can host that progression while keeping the originating page visible. The patterns guidance caps this at 3-5 steps before the workflow becomes too complex.
|
|
13
|
+
- **Launching a task from a primary page or immersive view** -- Flyouts can be triggered from main pages and immersive layouts, making them the right container when an action on a parent view needs a dedicated working surface without a full page transition.
|
|
14
|
+
|
|
15
|
+
**Do not use for:**
|
|
16
|
+
|
|
17
|
+
- **Complex, content-heavy workflows** -- if there is too much content to display comfortably in one view, or the workflow is too involved, use a light immersive view instead; Flyouts are for simple, quick-to-complete tasks.
|
|
18
|
+
- **Launching from another Flyout, Modal, or Dialog** -- stacking containers creates disorienting layers that break focus management and user orientation.
|
|
19
|
+
- **Tasks where the user needs to reference main content alongside the panel** -- if the user is expected to actively compare or interact with the main content area while working in the panel, a side panel is the right choice.
|
|
20
|
+
|
|
21
|
+
**Variants / types:**
|
|
22
|
+
|
|
23
|
+
_None documented_
|
|
24
|
+
|
|
25
|
+
**Props:**
|
|
26
|
+
- `breadcrumb` -- Comma-separated list of breadcrumb labels rendered above the heading.
|
|
27
|
+
The last item is displayed as plain text (current step); earlier items are rendered as
|
|
28
|
+
buttons that fire `wmFlyoutBreadcrumbClicked`.
|
|
29
|
+
- `element-to-focus` -- Element to focus when the flyout opens. Pass `"primary"` or `"secondary"` to
|
|
30
|
+
focus the corresponding footer button, or an element `id` to focus a specific element in the
|
|
31
|
+
flyout body. Defaults to the close button.
|
|
32
|
+
- `eyebrow` -- Small label displayed above the heading. Useful for context like a category or record type.
|
|
33
|
+
- `flyout-width` -- CSS width value for the flyout panel. Capped at 90% of the viewport width,
|
|
34
|
+
and at 100% on viewports narrower than 534px.
|
|
35
|
+
- `heading` -- Heading text displayed at the top of the flyout. Also used as the dialog's accessible name. _(required)_
|
|
36
|
+
- `info-text` -- Informational text displayed in the lower-left corner of the footer
|
|
37
|
+
(e.g. `"* Required fields"`).
|
|
38
|
+
- `open` -- Controls the open/closed state of the flyout. Always render the component on
|
|
39
|
+
page load and toggle this prop rather than conditionally mounting/unmounting the element.
|
|
40
|
+
- `primary-text` -- Label for the primary footer button. When set, a primary button is rendered
|
|
41
|
+
in the footer. Fires `wmFlyoutPrimaryTriggered` when clicked.
|
|
42
|
+
- `secondary-text` -- Label for the secondary footer button. When set, a secondary button is rendered
|
|
43
|
+
in the footer. Fires `wmFlyoutSecondaryTriggered` when clicked.
|
|
44
|
+
- `subheading` -- Subtitle text displayed below the heading.
|
|
45
|
+
|
|
46
|
+
**Events:**
|
|
47
|
+
- `wmFlyoutBreadcrumbClicked`
|
|
48
|
+
- `wmFlyoutCloseTriggered`
|
|
49
|
+
- `wmFlyoutPrimaryTriggered`
|
|
50
|
+
- `wmFlyoutSecondaryTriggered`
|
|
51
|
+
|
|
52
|
+
**Methods:**
|
|
53
|
+
- `focusHeading() => Promise<void>`
|
|
54
|
+
|
|
55
|
+
**Accessibility:**
|
|
56
|
+
|
|
57
|
+
- Rendered as a `<dialog>` element with `aria-labelledby` pointing to the heading.
|
|
58
|
+
- Focus is trapped inside the flyout while open and returns to the trigger element on close.
|
|
59
|
+
- Call `focusHeading()` after updating content in a multi-step workflow so screen readers
|
|
60
|
+
announce the new heading.
|
|
61
|
+
- **Keyboard:** - **Escape**: Fires `wmFlyoutCloseTriggered` (the host application is responsible for setting `open` to false).
|
|
62
|
+
- **Tab**: Cycles forward through focusable elements; wraps from the last element back to the first.
|
|
63
|
+
- **Shift+Tab**: Cycles backward; wraps from the first element to the last footer button.
|
|
64
|
+
|
|
65
|
+
**Related components:**
|
|
66
|
+
|
|
67
|
+
- Side Panel -- if the user needs to actively reference or interact with the main content area while the panel is open, use a side panel (which pushes content rather than overlaying it); if focus should be on the panel task alone, use Flyout.
|
|
68
|
+
- `<wm-modal>` -- if the task is short, self-contained, and requires the user to complete or dismiss it before doing anything else, use Modal; if the task is longer or should coexist with the underlying page, use Flyout.
|
|
69
|
+
- Light Immersive Layout -- if the workflow is too complex or content-heavy for a Flyout (more than 3-5 steps), escalate to a light immersive view instead.
|
|
70
|
+
|
|
71
|
+
**Code example:**
|
|
72
|
+
|
|
73
|
+
_Basic flyout_
|
|
74
|
+
|
|
75
|
+
```html
|
|
76
|
+
<button onclick="document.getElementById('edit-profile').open = true">Open flyout</button>
|
|
77
|
+
|
|
78
|
+
<wm-flyout id="edit-profile" heading="Edit profile" eyebrow="Student"
|
|
79
|
+
subheading="Update your information below"
|
|
80
|
+
primary-text="Save" secondary-text="Cancel" info-text="* Required fields">
|
|
81
|
+
<div class="flyout-content">
|
|
82
|
+
<wm-input label="First name *"></wm-input>
|
|
83
|
+
<wm-input label="Last name *"></wm-input>
|
|
84
|
+
<wm-input label="Email" type="email"></wm-input>
|
|
85
|
+
</div>
|
|
86
|
+
</wm-flyout>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
_Basic flyout_
|
|
90
|
+
|
|
91
|
+
```react
|
|
92
|
+
// Set open imperatively via ref -- use onClick on the trigger, not onWmButtonClicked.
|
|
93
|
+
const flyoutRef = useRef(null);
|
|
94
|
+
|
|
95
|
+
const openFlyout = () => { flyoutRef.current.open = true; };
|
|
96
|
+
const closeFlyout = () => { flyoutRef.current.open = false; };
|
|
97
|
+
|
|
98
|
+
<WmButton onClick={openFlyout}>Open flyout</WmButton>
|
|
99
|
+
|
|
100
|
+
<WmFlyout
|
|
101
|
+
ref={flyoutRef}
|
|
102
|
+
heading="Edit profile"
|
|
103
|
+
eyebrow="Student"
|
|
104
|
+
subheading="Update your information below"
|
|
105
|
+
primaryText="Save"
|
|
106
|
+
secondaryText="Cancel"
|
|
107
|
+
infoText="* Required fields"
|
|
108
|
+
onWmFlyoutCloseTriggered={closeFlyout}
|
|
109
|
+
onWmFlyoutSecondaryTriggered={closeFlyout}
|
|
110
|
+
onWmFlyoutPrimaryTriggered={closeFlyout}
|
|
111
|
+
>
|
|
112
|
+
<div className="flyout-content">
|
|
113
|
+
<WmInput label="First name *" />
|
|
114
|
+
<WmInput label="Last name *" />
|
|
115
|
+
<WmInput label="Email" type="email" />
|
|
116
|
+
</div>
|
|
117
|
+
</WmFlyout>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
_Multi-step flyout with breadcrumbs_
|
|
121
|
+
|
|
122
|
+
```html
|
|
123
|
+
<button onclick="document.getElementById('multi-step').open = true">Open multi-step flyout</button>
|
|
124
|
+
|
|
125
|
+
<wm-flyout id="multi-step" heading="Vestibulum convallis"
|
|
126
|
+
breadcrumb="Vestibulum convallis"
|
|
127
|
+
primary-text="Next" secondary-text="Cancel">
|
|
128
|
+
<div id="step1" class="flyout-content"><p>Step 1 content</p></div>
|
|
129
|
+
<div id="step2" class="flyout-content" style="display:none"><p>Step 2 content</p></div>
|
|
130
|
+
</wm-flyout>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
_Multi-step flyout with breadcrumbs_
|
|
134
|
+
|
|
135
|
+
```react
|
|
136
|
+
// Drive heading/breadcrumb/primaryText/secondaryText from step state so React keeps them
|
|
137
|
+
// in sync on re-render. Use useEffect to call focusHeading() after the DOM has updated.
|
|
138
|
+
const flyoutRef = useRef(null);
|
|
139
|
+
const [step, setStep] = useState(0);
|
|
140
|
+
const [focusHeading, setFocusHeading] = useState(false);
|
|
141
|
+
|
|
142
|
+
const steps = [
|
|
143
|
+
{ heading: "Vestibulum convallis", breadcrumb: "Vestibulum convallis", primaryText: "Next", secondaryText: "Cancel" },
|
|
144
|
+
{ heading: "Dignissim magna", breadcrumb: "Vestibulum convallis,Dignissim magna", primaryText: "Submit", secondaryText: "Back" },
|
|
145
|
+
];
|
|
146
|
+
|
|
147
|
+
useEffect(() => {
|
|
148
|
+
if (focusHeading) {
|
|
149
|
+
flyoutRef.current.focusHeading();
|
|
150
|
+
setFocusHeading(false);
|
|
151
|
+
}
|
|
152
|
+
}, [step, focusHeading]);
|
|
153
|
+
|
|
154
|
+
const goToStep = (idx) => { setStep(idx); setFocusHeading(true); };
|
|
155
|
+
const handlePrimary = () => { step === 0 ? goToStep(1) : (flyoutRef.current.open = false); };
|
|
156
|
+
const handleSecondary = () => { step === 0 ? (flyoutRef.current.open = false) : goToStep(0); };
|
|
157
|
+
|
|
158
|
+
<WmButton onClick={() => { setStep(0); flyoutRef.current.open = true; }}>Open flyout</WmButton>
|
|
159
|
+
|
|
160
|
+
<WmFlyout
|
|
161
|
+
ref={flyoutRef}
|
|
162
|
+
heading={steps[step].heading}
|
|
163
|
+
breadcrumb={steps[step].breadcrumb}
|
|
164
|
+
primaryText={steps[step].primaryText}
|
|
165
|
+
secondaryText={steps[step].secondaryText}
|
|
166
|
+
onWmFlyoutPrimaryTriggered={handlePrimary}
|
|
167
|
+
onWmFlyoutSecondaryTriggered={handleSecondary}
|
|
168
|
+
onWmFlyoutCloseTriggered={() => { flyoutRef.current.open = false; }}
|
|
169
|
+
onWmFlyoutBreadcrumbClicked={(ev) => goToStep(ev.detail.index)}
|
|
170
|
+
>
|
|
171
|
+
{step === 0 && <div className="flyout-content"><WmInput label="Program name *" /></div>}
|
|
172
|
+
{step === 1 && <div className="flyout-content"><WmInput label="Start date" /></div>}
|
|
173
|
+
</WmFlyout>
|
|
174
|
+
```
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
### Input
|
|
2
|
+
- **Element:** `<wm-input>`
|
|
3
|
+
- **Status:** stable
|
|
4
|
+
|
|
5
|
+
**Purpose:** Accessible single-line text input. Supports text and number types, character limits,
|
|
6
|
+
symbol prefixes/suffixes, and inline info/error messaging. Use instead of a native
|
|
7
|
+
`<input>` in all Watermark UI.
|
|
8
|
+
|
|
9
|
+
**When to use:**
|
|
10
|
+
|
|
11
|
+
- **Collecting a short, free-form text value** -- when a user needs to type a name, title, identifier, URL, or any other brief string that does not fit a more specialized input (date, time, search), Input is the default choice.
|
|
12
|
+
- **Displaying a value with a unit or currency symbol** -- when the field has a fixed prefix or suffix that is part of the value's meaning (e.g., "$" before a dollar amount, "%" after a score), use symbol-before or symbol-after to attach it inline.
|
|
13
|
+
- **Enforcing a character limit with live feedback** -- when a field has a maximum length the user should be aware of while typing (e.g., a short title with a cap), use character-limit to display the running count and prevent overrun.
|
|
14
|
+
|
|
15
|
+
**Do not use for:**
|
|
16
|
+
|
|
17
|
+
- **Multi-line or long-form text** -- if the user needs to write a paragraph or any text that may wrap across multiple lines, use wm-textarea instead; Input is a single-line field and will not expand.
|
|
18
|
+
- **Date or time entry** -- if the value is a date or time, use wm-datepicker or wm-timepicker; plain Input has no calendar, no format enforcement, and no date validation utilities.
|
|
19
|
+
- **Search interactions** -- if the field's purpose is to filter or search a dataset, use wm-search instead, which is purpose-built for that interaction pattern.
|
|
20
|
+
|
|
21
|
+
**Variants / types:**
|
|
22
|
+
|
|
23
|
+
- `type="text"` -- default; accepts any string input
|
|
24
|
+
- `type="number"` -- numeric input with optional min, max, and step constraints
|
|
25
|
+
|
|
26
|
+
**Props:**
|
|
27
|
+
- `character-limit` -- Maximum number of characters the user can type. Displays a live character counter and announces warnings via an `aria-live` region. Disabled when unset.
|
|
28
|
+
- `disabled` -- Disables the input, preventing interaction.
|
|
29
|
+
- `error-message` -- Puts the component in an error state and displays this message below the input. Set to a non-empty string to activate; clear to remove.
|
|
30
|
+
- `info` -- Hint text displayed below the input field. Read by screen readers when the field is focused.
|
|
31
|
+
- `input-width` -- CSS width value for the input element itself, independent of the component's overall width (which includes the label, info, and error). Useful when you want the label wider than the input.
|
|
32
|
+
- `is-submit` -- When true, pressing Enter when the input is focused submits the containing form.
|
|
33
|
+
- `label` -- Visible label for the input. Required even when `label-position` is `'none'` -- used as the aria label for screen readers. _(required)_
|
|
34
|
+
- `label-position` -- Position of the label relative to the input. `'none'` hides the label visually but keeps it accessible.
|
|
35
|
+
- `max` -- For use with `type='number'`. The maximum value reachable with the stepper.
|
|
36
|
+
- `min` -- For use with `type='number'`. The minimum value reachable with the stepper.
|
|
37
|
+
- `placeholder` -- Placeholder text shown inside the empty input field.
|
|
38
|
+
- `required-field` -- Displays a required-field asterisk (*) next to the label and sets `aria-required="true"` on the input.
|
|
39
|
+
- `step` -- For use with `type='number'`. The interval between values when stepping.
|
|
40
|
+
- `symbol-after` -- String displayed after the input value (e.g. `'%'` for a percentage field).
|
|
41
|
+
- `symbol-before` -- String displayed before the input value (e.g. `'$'` for a currency field).
|
|
42
|
+
- `text-after` -- Text displayed after the input element (outside it). Keep to 55 characters or fewer.
|
|
43
|
+
- `type` -- The input type. Use `'number'` for numeric fields; pair with `min`, `max`, and `step`.
|
|
44
|
+
- `value` -- The initial value of the input field, or its current value when reading from the component.
|
|
45
|
+
|
|
46
|
+
**Events:**
|
|
47
|
+
- `wmInputValueChanged`
|
|
48
|
+
|
|
49
|
+
**Accessibility:**
|
|
50
|
+
|
|
51
|
+
- `label` is required even when `label-position` is `"none"` -- it becomes the input's aria label.
|
|
52
|
+
- Error messages and character-limit warnings are announced via an `aria-live` region.
|
|
53
|
+
- Info text is associated via `aria-describedby` and read when the field receives focus.
|
|
54
|
+
- `required-field` sets `aria-required="true"` on the underlying input.
|
|
55
|
+
- **Keyboard:** - **Enter**: Submits the containing form when `is-submit` is true.
|
|
56
|
+
|
|
57
|
+
**Related components:**
|
|
58
|
+
|
|
59
|
+
- `<wm-textarea>` -- if the expected value spans multiple lines or requires significant length, use Textarea; Input is single-line only.
|
|
60
|
+
- `<wm-search>` -- if the field drives a search or filter interaction rather than collecting a stored form value, use Search; Input has no search-specific behavior or affordances.
|
|
61
|
+
- `<wm-datepicker>` / `<wm-timepicker>` -- if the value is a date or time, use the dedicated components; Input provides no format guidance, calendar navigation, or date validation.
|
|
62
|
+
- `<wm-tag-input>` -- if the user needs to enter multiple discrete values (tags, names, identifiers) as a list rather than a single string, use Tag Input instead.
|
|
63
|
+
|
|
64
|
+
**Code example:**
|
|
65
|
+
|
|
66
|
+
_Basic input_
|
|
67
|
+
|
|
68
|
+
```html
|
|
69
|
+
<wm-input label="First name"></wm-input>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
_Basic input_
|
|
73
|
+
|
|
74
|
+
```react
|
|
75
|
+
<WmInput label="First name" />
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
_Required field with error_
|
|
79
|
+
|
|
80
|
+
```html
|
|
81
|
+
<wm-input label="Email" required-field error-message="Please enter a valid email address"></wm-input>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
_Form with submit validation and blur error clearing_
|
|
85
|
+
|
|
86
|
+
```react
|
|
87
|
+
// wmInputValueChanged fires on blur only when the value has changed.
|
|
88
|
+
// event.detail.value is the current string value.
|
|
89
|
+
// Validate required fields on submit; clear individual errors on blur once the user provides a value.
|
|
90
|
+
const [name, setName] = useState("");
|
|
91
|
+
const [email, setEmail] = useState("");
|
|
92
|
+
const [errors, setErrors] = useState({ name: "", email: "" });
|
|
93
|
+
|
|
94
|
+
const setError = (field, message) =>
|
|
95
|
+
setErrors((prev) => ({ ...prev, [field]: message }));
|
|
96
|
+
|
|
97
|
+
const handleNameBlur = (e) => {
|
|
98
|
+
const val = e.detail.value;
|
|
99
|
+
setName(val);
|
|
100
|
+
if (val) setError("name", "");
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const handleEmailBlur = (e) => {
|
|
104
|
+
const val = e.detail.value;
|
|
105
|
+
setEmail(val);
|
|
106
|
+
if (!val) setError("email", "");
|
|
107
|
+
else if (!val.includes("@")) setError("email", "Please enter a valid email address.");
|
|
108
|
+
else setError("email", "");
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const handleSubmit = () => {
|
|
112
|
+
const newErrors = {
|
|
113
|
+
name: name ? "" : "Full name is required.",
|
|
114
|
+
email: !email ? "Email is required." : !email.includes("@") ? "Please enter a valid email address." : "",
|
|
115
|
+
};
|
|
116
|
+
setErrors(newErrors);
|
|
117
|
+
if (Object.values(newErrors).every((e) => e === "")) { handleFormSubmit(); }
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
<WmInput label="Full name" requiredField={true} value={name}
|
|
121
|
+
errorMessage={errors.name} onWmInputValueChanged={handleNameBlur} />
|
|
122
|
+
<WmInput label="Email" requiredField={true} value={email}
|
|
123
|
+
errorMessage={errors.email} onWmInputValueChanged={handleEmailBlur} />
|
|
124
|
+
<WmButton buttonType="secondary" onClick={handleCancel}>Cancel</WmButton>
|
|
125
|
+
<WmButton buttonType="primary" onClick={handleSubmit}>Submit</WmButton>
|
|
126
|
+
```
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
### Line Chart
|
|
2
|
+
- **Element:** `<wm-line-chart>`
|
|
3
|
+
- **Status:** stable
|
|
4
|
+
|
|
5
|
+
**Purpose:** Visualizes how data changes over time. Ideal for trend analysis -- tracking one or more
|
|
6
|
+
metrics across chronological intervals such as semesters, academic years, or months.
|
|
7
|
+
Supports up to 7 lines, each differentiated by both color and symbol. Data is set via the
|
|
8
|
+
`line-data` prop (JSON string or object). Minimum width of 562 px; horizontally scrollable
|
|
9
|
+
at smaller viewports.
|
|
10
|
+
|
|
11
|
+
**Variants / types:**
|
|
12
|
+
|
|
13
|
+
- `line-data` expects a JSON object where keys are line labels and values are objects mapping
|
|
14
|
+
x-axis values (strings) to y-axis values (numbers or `null` for missing data points).
|
|
15
|
+
In HTML, set it as a JSON string attribute; in JavaScript/React, set it as an object.
|
|
16
|
+
- Up to 7 lines are supported -- each is automatically assigned a color and symbol from
|
|
17
|
+
the built-in palette.
|
|
18
|
+
- `spotlight-data` adds a single reference line spanning the whole chart. Provide an object
|
|
19
|
+
with a `label` key and one x-value key mapping to the y-value.
|
|
20
|
+
|
|
21
|
+
**Props:**
|
|
22
|
+
- `decimal-places` -- Number of decimal places for data point values and y-axis interval labels.
|
|
23
|
+
If omitted, the component infers an appropriate number from the data.
|
|
24
|
+
- `description` -- Accessible description appended to the keyboard instructions read to screen
|
|
25
|
+
readers. Recommended -- use it to summarize the key takeaway of the chart.
|
|
26
|
+
- `highlight-end` -- x-axis value where the highlighted background area ends.
|
|
27
|
+
- `highlight-qualifier` -- Screen reader qualifier appended to the `aria-label` of data points that fall
|
|
28
|
+
within a highlighted section (e.g. `"projected"`).
|
|
29
|
+
- `highlight-start` -- x-axis value where the highlighted background area begins. If used without
|
|
30
|
+
`highlight-end`, the highlight extends to the right edge of the chart.
|
|
31
|
+
- `label` -- Accessible label for the chart, used as the `aria-label` on the chart
|
|
32
|
+
container. Required for accessibility. _(required)_
|
|
33
|
+
- `label-width` -- CSS width of the y-axis interval label column.
|
|
34
|
+
- `line-data` -- Chart data. Each key is a line label (shown in the legend); each value is an
|
|
35
|
+
object mapping x-axis values (strings) to y-axis values (numbers or `null` for missing
|
|
36
|
+
data points). Can be set as a JSON string (HTML attribute) or as an object (JavaScript).
|
|
37
|
+
Example: `{ "Biology": { "2022-23": 310, "2023-24": 420 } }`. _(required)_
|
|
38
|
+
- `show-deltas` -- When true, a "Change since [previous x-value]" column appears in each data
|
|
39
|
+
point's popover, showing the percentage change from the preceding data point.
|
|
40
|
+
- `show-grid` -- When true, renders horizontal and vertical grid lines.
|
|
41
|
+
- `spotlightData` -- Adds a reference data point and a spanning horizontal line across the chart.
|
|
42
|
+
Must include a `label` key and exactly one x-value key mapping to the y-value.
|
|
43
|
+
Example: `{ label: "Target", "2024-25": 500 }`.
|
|
44
|
+
- `units` -- Two comma-separated unit labels for the x and y axes, shown in parentheses
|
|
45
|
+
after axis labels and inside popovers. Use `null` for no unit.
|
|
46
|
+
Example: `"null,students"` or `"semester,percent"`.
|
|
47
|
+
- `visibility-toggles` -- When true, renders hide/show toggle buttons in the legend, allowing users to
|
|
48
|
+
hide individual lines.
|
|
49
|
+
- `x-axis-label` -- Label for the x-axis (the time dimension, e.g. `"Term"`, `"Academic Year"`).
|
|
50
|
+
Required for accessibility. _(required)_
|
|
51
|
+
- `y-axis-label` -- Label for the y-axis (the measured value, e.g. `"Enrollment"`, `"Score"`).
|
|
52
|
+
Required for accessibility. _(required)_
|
|
53
|
+
- `y-range` -- Comma-separated numbers that explicitly define the y-axis tick values.
|
|
54
|
+
Overrides automatic range and interval calculation.
|
|
55
|
+
Example: `"0,100,200,300"`.
|
|
56
|
+
|
|
57
|
+
**Accessibility:**
|
|
58
|
+
|
|
59
|
+
- `label`, `x-axis-label`, and `y-axis-label` are required for accessibility.
|
|
60
|
+
- Each data point renders as `role="img"` with a detailed `aria-label` including the line
|
|
61
|
+
name, x-value, y-value, units, and (if `show-deltas`) the percentage change from the
|
|
62
|
+
previous point.
|
|
63
|
+
- An `aria-live` region announces the line name and data point count when keyboard focus
|
|
64
|
+
moves to a new line.
|
|
65
|
+
- The `description` prop is appended to the chart instructions read to screen readers --
|
|
66
|
+
use it to summarize the key takeaway.
|
|
67
|
+
- **Keyboard:** - **Tab** (into chart): If `visibility-toggles` is enabled, focuses the first toggle button;
|
|
68
|
+
otherwise focuses the first data point.
|
|
69
|
+
- **Tab** (on toggle button): Moves to the first data point of the first visible line.
|
|
70
|
+
- **Shift+Tab** (on first data point, with toggles): Returns focus to the toggle buttons.
|
|
71
|
+
- **Arrow Up / Down** (on data point): Moves focus vertically to the same x-interval on
|
|
72
|
+
the previous/next line.
|
|
73
|
+
- **Arrow Left / Right** (on data point): Moves focus to the previous/next data point on
|
|
74
|
+
the same line.
|
|
75
|
+
- **Arrow Left / Right** (on toggle button): Cycles between toggle buttons.
|
|
76
|
+
|
|
77
|
+
**Code example:**
|
|
78
|
+
|
|
79
|
+
_Basic line chart_
|
|
80
|
+
|
|
81
|
+
```html
|
|
82
|
+
<wm-line-chart label="Enrollment trend" x-axis-label="Term" y-axis-label="Students"
|
|
83
|
+
line-data='{"Biology": {"Fall 2022": 310, "Fall 2023": 340}}'></wm-line-chart>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
_Basic line chart_
|
|
87
|
+
|
|
88
|
+
```react
|
|
89
|
+
<WmLineChart label="Enrollment trend" xAxisLabel="Term" yAxisLabel="Students"
|
|
90
|
+
lineData={{ Biology: { "Fall 2022": 310, "Fall 2023": 340 } }} />
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
_Multi-line with delta comparisons_
|
|
94
|
+
|
|
95
|
+
```html
|
|
96
|
+
<wm-line-chart label="Retention rates" x-axis-label="Year" y-axis-label="Rate"
|
|
97
|
+
units="null,percent" show-deltas
|
|
98
|
+
line-data='{"Biology": {"2022": 85, "2023": 88}, "English": {"2022": 79, "2023": 82}}'>
|
|
99
|
+
</wm-line-chart>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
_Multi-line with delta comparisons_
|
|
103
|
+
|
|
104
|
+
```react
|
|
105
|
+
<WmLineChart label="Retention rates" xAxisLabel="Year" yAxisLabel="Rate"
|
|
106
|
+
units="null,percent" showDeltas={true}
|
|
107
|
+
lineData={{ Biology: { "2022": 85, "2023": 88 }, English: { "2022": 79, "2023": 82 } }} />
|
|
108
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
### Menuitem
|
|
2
|
+
- **Element:** `<wm-menuitem>`
|
|
3
|
+
- **Status:** stable
|
|
4
|
+
|
|
5
|
+
**Purpose:** A single item within a wm-action-menu dropdown. Always used as a direct child of
|
|
6
|
+
wm-action-menu -- never rendered in isolation.
|
|
7
|
+
|
|
8
|
+
**Variants / types:**
|
|
9
|
+
|
|
10
|
+
- `description` is limited to 100 characters and is incompatible with `icon`.
|
|
11
|
+
- When disabled, the host element's `onclick` handler is temporarily removed and restored
|
|
12
|
+
when re-enabled, so that click handlers set before the prop change are not lost.
|
|
13
|
+
|
|
14
|
+
**Props:**
|
|
15
|
+
- `description` -- Secondary descriptive text displayed below the label. Maximum 100 characters.
|
|
16
|
+
Incompatible with `icon`.
|
|
17
|
+
- `disabled` -- Disables the menu item, preventing activation. The item remains visible and focusable.
|
|
18
|
+
- `icon` -- Icon to display before the label. Accepts the same formats as wm-button:
|
|
19
|
+
`'#icon-name'` for a Ripple icon, `'/path/to/file.svg#symbol-id'` for a local SVG sprite,
|
|
20
|
+
or an MDI character code (deprecated). Incompatible with `description`.
|
|
21
|
+
|
|
22
|
+
**Events:**
|
|
23
|
+
- `wmEndKeyPressed`
|
|
24
|
+
- `wmEscKeyPressed`
|
|
25
|
+
- `wmHomeKeyPressed`
|
|
26
|
+
- `wmKeyDownPressed`
|
|
27
|
+
- `wmKeyUpPressed`
|
|
28
|
+
- `wmLetterPressed`
|
|
29
|
+
- `wmMenuitemBlurred`
|
|
30
|
+
- `wmMenuitemClicked`
|
|
31
|
+
- `wmPageDownItems`
|
|
32
|
+
- `wmPageUpItems`
|
|
33
|
+
- `wmTabKeyPressed`
|
|
34
|
+
|
|
35
|
+
**Accessibility:**
|
|
36
|
+
|
|
37
|
+
- Rendered with `role="menuitem"` and `aria-disabled` when disabled.
|
|
38
|
+
- Keyboard events (Arrow keys, Home, End, Tab, Escape, character keys) are captured and
|
|
39
|
+
re-emitted as custom events consumed by the parent wm-action-menu to manage focus and
|
|
40
|
+
menu state -- do not listen to these events directly in application code.
|
|
41
|
+
|
|
42
|
+
**Code example:**
|
|
43
|
+
|
|
44
|
+
_Basic menu items_
|
|
45
|
+
|
|
46
|
+
```html
|
|
47
|
+
<wm-action-menu tooltip="Actions">
|
|
48
|
+
<wm-menuitem>Edit</wm-menuitem>
|
|
49
|
+
<wm-menuitem>Delete</wm-menuitem>
|
|
50
|
+
</wm-action-menu>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
_Basic menu items_
|
|
54
|
+
|
|
55
|
+
```react
|
|
56
|
+
<WmActionMenu tooltip="Actions">
|
|
57
|
+
<WmMenuitem>Edit</WmMenuitem>
|
|
58
|
+
<WmMenuitem>Delete</WmMenuitem>
|
|
59
|
+
</WmActionMenu>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
_Menu item with icon_
|
|
63
|
+
|
|
64
|
+
```html
|
|
65
|
+
<wm-menuitem icon="#edit">Edit</wm-menuitem>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
_Disabled menu item_
|
|
69
|
+
|
|
70
|
+
```react
|
|
71
|
+
<WmMenuitem disabled={true}>Export</WmMenuitem>
|
|
72
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
### Modal Footer
|
|
2
|
+
- **Element:** `<wm-modal-footer>`
|
|
3
|
+
- **Status:** stable
|
|
4
|
+
|
|
5
|
+
**Purpose:** Footer section for a wm-modal. Renders a primary action button, an optional secondary
|
|
6
|
+
button, and optional informational text. Button clicks delegate to the parent modal's
|
|
7
|
+
`emitPrimaryEvent()` and `emitSecondaryEvent()` methods, which fire
|
|
8
|
+
`wmModalPrimaryTriggered` and `wmModalSecondaryTriggered` respectively. Always used as a
|
|
9
|
+
direct child of wm-modal -- never rendered in isolation.
|
|
10
|
+
|
|
11
|
+
**When to use:**
|
|
12
|
+
|
|
13
|
+
- **Collecting or editing a focused set of information** -- when a user needs to fill out a short form or make a confined set of edits that must be completed or explicitly dismissed before anything else can happen, Modal creates the necessary interruption and focus.
|
|
14
|
+
- **Confirming a consequential or destructive action** -- when the user has initiated something that warrants deliberate confirmation (such as permanently deleting a record), use Modal with deleteStyle on the footer to signal danger and require an explicit choice before proceeding.
|
|
15
|
+
- **Running a short sequential workflow** -- when a task can be broken into a small number of steps using a stepper, Modal can host that progression, provided the workflow is compact enough that a full-page view is not warranted.
|
|
16
|
+
- **Triggering a secondary confirmation from a primary action** -- a Modal's primary action can open an additional Modal, so a two-stage confirmation (e.g., submit then confirm submission) is a supported and appropriate use.
|
|
17
|
+
|
|
18
|
+
**Do not use for:**
|
|
19
|
+
|
|
20
|
+
- **Content that is too large for a centered overlay** -- if there is too much content to display comfortably, use a Flyout or light immersive view instead; Modal is not designed to host expansive content.
|
|
21
|
+
- **More than one primary action** -- if more than one distinct action can be taken, break the workflow into separate Modals or reconsider the pattern entirely.
|
|
22
|
+
- **Launching a Flyout or side panel from within a Modal** -- stacking containers at this level breaks user orientation and focus management.
|
|
23
|
+
|
|
24
|
+
**Variants / types:**
|
|
25
|
+
|
|
26
|
+
- `modal-type="modal"` -- full overlay for task completion with forms and richer content
|
|
27
|
+
- `modal-type="dialog"` -- lighter variant for simpler, message-style interactions
|
|
28
|
+
|
|
29
|
+
**Props:**
|
|
30
|
+
- `delete-style` -- Renders the primary button in the wm-button `permanently-delete` destructive
|
|
31
|
+
style. Use for irreversible actions.
|
|
32
|
+
- `info-text` -- Additional feedback or status text displayed in the lower-left corner of the
|
|
33
|
+
footer. Should not be used when the parent modal has `modal-type="dialog"`.
|
|
34
|
+
- `primary-action-disabled` -- Disables the primary action button.
|
|
35
|
+
- `primary-text` -- Label for the primary action button.
|
|
36
|
+
- `secondary-text` -- Label for the secondary action button. Omit to render the footer with only
|
|
37
|
+
a primary button.
|
|
38
|
+
|
|
39
|
+
**Accessibility:**
|
|
40
|
+
|
|
41
|
+
- Conditional DOM rendering based on open state: Modal must always be present in the DOM; use the open prop to control visibility. Removing it from the DOM can permanently break page scrolling.
|
|
42
|
+
|
|
43
|
+
**Related components:**
|
|
44
|
+
|
|
45
|
+
- Dialog (modal-type="dialog") -- Dialog is the lighter variant of the same component, intended for simpler message-style interactions; Modal is for task completion with forms and richer content.
|
|
46
|
+
- `<wm-flyout>` -- if the task is longer, benefits from more horizontal space, or should coexist alongside the underlying page rather than block it entirely, use Flyout; Modal is for short, blocking, self-contained tasks.
|
|
47
|
+
- Light Immersive Layout -- if the workflow is too complex or content-heavy for a Modal, escalate to a light immersive view; Modal is not suited to multi-faceted or lengthy workflows.
|
|
48
|
+
|
|
49
|
+
**Code example:**
|
|
50
|
+
|
|
51
|
+
_Basic footer_
|
|
52
|
+
|
|
53
|
+
```html
|
|
54
|
+
<wm-modal-footer primary-text="Save" secondary-text="Cancel"></wm-modal-footer>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
_Basic footer_
|
|
58
|
+
|
|
59
|
+
```react
|
|
60
|
+
<WmModalFooter primaryText="Save" secondaryText="Cancel" />
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
_Delete-style footer_
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<wm-modal-footer primary-text="Delete" secondary-text="Cancel" delete-style></wm-modal-footer>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
_Delete-style footer_
|
|
70
|
+
|
|
71
|
+
```react
|
|
72
|
+
<WmModalFooter primaryText="Delete" secondaryText="Cancel" deleteStyle={true} />
|
|
73
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
### Modal Header
|
|
2
|
+
- **Element:** `<wm-modal-header>`
|
|
3
|
+
- **Status:** stable
|
|
4
|
+
|
|
5
|
+
**Purpose:** Header section for a wm-modal. Renders the modal title, an optional subheading, and the
|
|
6
|
+
close button. Always used as a direct child of wm-modal -- never rendered in isolation.
|
|
7
|
+
|
|
8
|
+
**When to use:**
|
|
9
|
+
|
|
10
|
+
- **Collecting or editing a focused set of information** -- when a user needs to fill out a short form or make a confined set of edits that must be completed or explicitly dismissed before anything else can happen, Modal creates the necessary interruption and focus.
|
|
11
|
+
- **Confirming a consequential or destructive action** -- when the user has initiated something that warrants deliberate confirmation (such as permanently deleting a record), use Modal with deleteStyle on the footer to signal danger and require an explicit choice before proceeding.
|
|
12
|
+
- **Running a short sequential workflow** -- when a task can be broken into a small number of steps using a stepper, Modal can host that progression, provided the workflow is compact enough that a full-page view is not warranted.
|
|
13
|
+
- **Triggering a secondary confirmation from a primary action** -- a Modal's primary action can open an additional Modal, so a two-stage confirmation (e.g., submit then confirm submission) is a supported and appropriate use.
|
|
14
|
+
|
|
15
|
+
**Do not use for:**
|
|
16
|
+
|
|
17
|
+
- **Content that is too large for a centered overlay** -- if there is too much content to display comfortably, use a Flyout or light immersive view instead; Modal is not designed to host expansive content.
|
|
18
|
+
- **More than one primary action** -- if more than one distinct action can be taken, break the workflow into separate Modals or reconsider the pattern entirely.
|
|
19
|
+
- **Launching a Flyout or side panel from within a Modal** -- stacking containers at this level breaks user orientation and focus management.
|
|
20
|
+
|
|
21
|
+
**Variants / types:**
|
|
22
|
+
|
|
23
|
+
- `modal-type="modal"` -- full overlay for task completion with forms and richer content
|
|
24
|
+
- `modal-type="dialog"` -- lighter variant for simpler, message-style interactions
|
|
25
|
+
|
|
26
|
+
**Props:**
|
|
27
|
+
- `heading` -- The main title text displayed in the modal header.
|
|
28
|
+
- `subheading` -- Optional descriptive text displayed below the heading. Should not be used
|
|
29
|
+
when the parent modal has `modal-type="dialog"`.
|
|
30
|
+
|
|
31
|
+
**Accessibility:**
|
|
32
|
+
|
|
33
|
+
- Conditional DOM rendering based on open state: Modal must always be present in the DOM; use the open prop to control visibility. Removing it from the DOM can permanently break page scrolling.
|
|
34
|
+
|
|
35
|
+
**Related components:**
|
|
36
|
+
|
|
37
|
+
- Dialog (modal-type="dialog") -- Dialog is the lighter variant of the same component, intended for simpler message-style interactions; Modal is for task completion with forms and richer content.
|
|
38
|
+
- `<wm-flyout>` -- if the task is longer, benefits from more horizontal space, or should coexist alongside the underlying page rather than block it entirely, use Flyout; Modal is for short, blocking, self-contained tasks.
|
|
39
|
+
- Light Immersive Layout -- if the workflow is too complex or content-heavy for a Modal, escalate to a light immersive view; Modal is not suited to multi-faceted or lengthy workflows.
|
|
40
|
+
|
|
41
|
+
**Code example:**
|
|
42
|
+
|
|
43
|
+
_Basic header_
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<wm-modal-header heading="Confirm action"></wm-modal-header>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
_Basic header_
|
|
50
|
+
|
|
51
|
+
```react
|
|
52
|
+
<WmModalHeader heading="Confirm action" />
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
_Header with subheading_
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<wm-modal-header heading="Export data" subheading="This may take a few minutes."></wm-modal-header>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
_Header with subheading_
|
|
62
|
+
|
|
63
|
+
```react
|
|
64
|
+
<WmModalHeader heading="Export data" subheading="This may take a few minutes." />
|
|
65
|
+
```
|