@duetds/components 4.30.0 → 4.33.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/hydrate/index.js +1481 -434
- package/lib/cjs/{dom-e89ebf90.js → dom-c850c8d7.js} +1 -1
- package/lib/cjs/duet-alert.cjs.entry.js +4 -2
- package/lib/cjs/duet-badge.cjs.entry.js +2 -2
- package/lib/cjs/duet-button_2.cjs.entry.js +6 -5
- package/lib/cjs/duet-caption_4.cjs.entry.js +21 -15
- package/lib/cjs/duet-card.cjs.entry.js +6 -6
- package/lib/cjs/duet-checkbox.cjs.entry.js +2 -2
- package/lib/cjs/duet-choice_2.cjs.entry.js +56 -25
- package/lib/cjs/duet-collapsible.cjs.entry.js +5 -2
- package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
- package/lib/cjs/duet-date-picker.cjs.entry.js +23 -13
- package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-editable-table-button_3.cjs.entry.js +232 -0
- package/lib/cjs/{duet-table.cjs.entry.js → duet-editable-table_3.cjs.entry.js} +206 -2
- package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
- package/lib/cjs/duet-footer.cjs.entry.js +4 -4
- package/lib/cjs/duet-grid_2.cjs.entry.js +52 -4
- package/lib/cjs/duet-header_2.cjs.entry.js +26 -10
- package/lib/cjs/duet-hero.cjs.entry.js +6 -6
- package/lib/cjs/duet-icon.cjs.entry.js +6 -14
- package/lib/cjs/duet-input_2.cjs.entry.js +7 -7
- package/lib/cjs/duet-layout.cjs.entry.js +1 -1
- package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
- package/lib/cjs/duet-modal.cjs.entry.js +8 -7
- package/lib/cjs/duet-notification_2.cjs.entry.js +6 -5
- package/lib/cjs/duet-number-input.cjs.entry.js +36 -15
- package/lib/cjs/duet-progress.cjs.entry.js +75 -0
- package/lib/cjs/duet-radio_2.cjs.entry.js +2 -2
- package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
- package/lib/cjs/duet-select.cjs.entry.js +6 -6
- package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-tab_2.cjs.entry.js +12 -6
- package/lib/cjs/duet-textarea.cjs.entry.js +5 -5
- package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
- package/lib/cjs/duet-tooltip.cjs.entry.js +21 -10
- package/lib/cjs/duet-tray.cjs.entry.js +21 -10
- package/lib/cjs/duet-upload.cjs.entry.js +403 -180
- package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
- package/lib/cjs/duet.cjs.js +4 -4
- package/lib/cjs/{focus-utils-7605778f.js → focus-utils-a7a1fb8b.js} +1 -1
- package/lib/cjs/{index-0c949193.js → index-b724d698.js} +88 -77
- package/lib/cjs/js-utils-33a9dbe3.js +16 -0
- package/lib/cjs/{language-utils-70d6a9a4.js → language-utils-aa282901.js} +28 -9
- package/lib/cjs/loader.cjs.js +3 -3
- package/lib/cjs/{shadow-css-0c8c175b.js → shadow-css-e3edeed1.js} +9 -10
- package/lib/cjs/{string-utils-a6de43d8.js → string-utils-267e3dbb.js} +7 -0
- package/lib/cjs/{token-utils-13e5d13e.js → token-utils-63a9c8dc.js} +1 -1
- package/lib/cjs/{tokens.module-53b3bd92.js → tokens.module-6b2df1c2.js} +2 -0
- package/lib/cjs/{watch-options-3877c082.js → watch-options-d88afac0.js} +29 -6
- package/lib/collection/collection-manifest.json +15 -8
- package/lib/collection/components/duet-alert/duet-alert.js +12 -6
- package/lib/collection/components/duet-badge/duet-badge.css +1 -0
- package/lib/collection/components/duet-button/duet-button.js +17 -15
- package/lib/collection/components/duet-card/duet-card.css +30 -7
- package/lib/collection/components/duet-card/duet-card.js +4 -3
- package/lib/collection/components/duet-checkbox/duet-checkbox.css +1 -1
- package/lib/collection/components/duet-choice/duet-choice.css +16 -3
- package/lib/collection/components/duet-choice/duet-choice.js +123 -36
- package/lib/collection/components/duet-choice-group/duet-choice-group.css +1 -0
- package/lib/collection/components/duet-choice-group/duet-choice-group.js +4 -4
- package/lib/collection/components/duet-date-picker/duet-date-picker.css +1 -1
- package/lib/collection/components/duet-date-picker/duet-date-picker.js +78 -43
- package/lib/collection/components/duet-editable-table/duet-editable-table-button.css +32 -0
- package/lib/collection/components/duet-editable-table/duet-editable-table-button.js +218 -0
- package/lib/collection/components/duet-editable-table/duet-editable-table-item.css +36 -0
- package/lib/collection/components/duet-editable-table/duet-editable-table-item.js +203 -0
- package/lib/collection/components/duet-editable-table/duet-editable-table-tabledata.js +13 -0
- package/lib/collection/components/duet-editable-table/duet-editable-table.css +16 -0
- package/lib/collection/components/duet-editable-table/duet-editable-table.js +348 -0
- package/lib/collection/components/duet-footer/duet-footer.js +17 -15
- package/lib/collection/components/duet-grid/duet-grid.js +57 -6
- package/lib/collection/components/duet-grid-item/duet-grid-item.js +4 -4
- package/lib/collection/components/duet-header/duet-header.js +60 -35
- package/lib/collection/components/duet-heading/duet-heading.css +4 -0
- package/lib/collection/components/duet-heading/duet-heading.js +7 -6
- package/lib/collection/components/duet-hero/duet-hero.js +20 -15
- package/lib/collection/components/duet-icon/duet-icon.js +2 -6
- package/lib/collection/components/duet-icon/icon-utils.js +5 -8
- package/lib/collection/components/duet-input/duet-input.css +15 -0
- package/lib/collection/components/duet-input/duet-input.js +4 -4
- package/lib/collection/components/duet-label/duet-label.css +2 -0
- package/lib/collection/components/duet-link/duet-link.js +18 -19
- package/lib/collection/components/duet-logo/duet-logo.js +4 -4
- package/lib/collection/components/duet-modal/duet-modal.js +22 -17
- package/lib/collection/components/duet-notification/duet-notification.js +8 -8
- package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +20 -15
- package/lib/collection/components/duet-number-input/duet-number-input.js +153 -29
- package/lib/collection/components/duet-paragraph/duet-paragraph.css +6 -0
- package/lib/collection/components/duet-paragraph/duet-paragraph.js +34 -3
- package/lib/collection/components/duet-progress/duet-progress.css +103 -0
- package/lib/collection/components/duet-progress/duet-progress.js +240 -0
- package/lib/collection/components/duet-radio/duet-radio.js +6 -6
- package/lib/collection/components/duet-select/duet-select.css +15 -0
- package/lib/collection/components/duet-select/duet-select.js +3 -3
- package/lib/collection/components/duet-step/duet-step.js +8 -8
- package/lib/collection/components/duet-tab-group/duet-tab-group.css +2 -2
- package/lib/collection/components/duet-tab-group/duet-tab-group.js +43 -12
- package/lib/collection/components/duet-textarea/duet-textarea.css +19 -0
- package/lib/collection/components/duet-textarea/duet-textarea.js +5 -4
- package/lib/collection/components/duet-tooltip/duet-tooltip.js +82 -20
- package/lib/collection/components/duet-tray/duet-tray.js +79 -17
- package/lib/collection/components/duet-upload/duet-upload-aria-status.js +217 -0
- package/lib/collection/components/duet-upload/duet-upload-editable-item-error.js +16 -0
- package/lib/collection/components/duet-upload/duet-upload-editable-item-inprogres.js +8 -0
- package/lib/collection/components/duet-upload/duet-upload-editable-item-success.js +30 -0
- package/lib/collection/components/duet-upload/duet-upload.css +17 -86
- package/lib/collection/components/duet-upload/duet-upload.js +551 -153
- package/lib/collection/components/duet-upload/errorcodes.utils.js +16 -4
- package/lib/collection/components/duet-upload/xhr.helpers.js +2 -6
- package/lib/collection/utils/fixture-utils.js +7 -5
- package/lib/collection/utils/js-utils.js +12 -0
- package/lib/collection/utils/language-utils.js +26 -9
- package/lib/collection/utils/string-utils.js +6 -0
- package/lib/collection/utils/watch-options.js +35 -6
- package/lib/custom-elements-bundle/index.d.ts +30 -0
- package/lib/custom-elements-bundle/index.js +1603 -721
- package/lib/duet/duet.esm.js +1 -1
- package/lib/duet/duet.js +1 -1
- package/lib/duet/{p-4a7911fd.entry.js → p-00735436.entry.js} +1 -1
- package/lib/duet/p-060d79be.entry.js +4 -0
- package/lib/duet/p-0d22396e.system.js +16 -0
- package/lib/duet/p-10deead0.system.js +4 -0
- package/lib/duet/p-1208c84f.entry.js +4 -0
- package/lib/duet/p-12721178.js +4 -0
- package/lib/duet/p-155ef581.system.entry.js +4 -0
- package/lib/duet/p-16c48c5d.entry.js +4 -0
- package/lib/duet/p-1797df7b.system.entry.js +4 -0
- package/lib/duet/p-1a08fc22.system.entry.js +4 -0
- package/lib/duet/{p-d1817efe.system.entry.js → p-237e47b4.system.entry.js} +1 -1
- package/lib/duet/p-2443bdca.system.entry.js +4 -0
- package/lib/duet/p-263bc9cd.system.entry.js +4 -0
- package/lib/duet/p-2764f081.js +4 -0
- package/lib/duet/p-27d80cef.system.entry.js +4 -0
- package/lib/duet/p-28e02c08.entry.js +4 -0
- package/lib/duet/{p-f81d8534.entry.js → p-2bb1460c.entry.js} +1 -1
- package/lib/duet/p-33c58756.entry.js +4 -0
- package/lib/duet/{p-bd9a7d8f.js → p-35a3794e.js} +0 -0
- package/lib/duet/{p-bbc229d8.system.entry.js → p-374fb7e6.system.entry.js} +1 -1
- package/lib/duet/p-387823af.system.entry.js +4 -0
- package/lib/duet/p-3af5d66f.entry.js +4 -0
- package/lib/duet/{p-322d1c38.js → p-3c1971d8.js} +1 -1
- package/lib/duet/{p-7e108b7e.entry.js → p-4607af59.entry.js} +1 -1
- package/lib/duet/p-48d1eb1f.system.entry.js +4 -0
- package/lib/duet/p-4a87e9ab.system.entry.js +4 -0
- package/lib/duet/{p-031c2cd8.system.entry.js → p-4b6ebe40.system.entry.js} +1 -1
- package/lib/duet/p-4e28da18.system.entry.js +4 -0
- package/lib/duet/p-548d484e.js +4 -0
- package/lib/duet/p-5826523b.entry.js +4 -0
- package/lib/duet/{p-ce1374a4.system.entry.js → p-58750bae.system.entry.js} +1 -1
- package/lib/duet/p-597d99c7.entry.js +4 -0
- package/lib/duet/p-5ea0cd19.entry.js +4 -0
- package/lib/duet/p-63d5bf73.system.entry.js +4 -0
- package/lib/duet/p-67d9a9a9.system.entry.js +4 -0
- package/lib/duet/p-6a19b5ec.entry.js +4 -0
- package/lib/duet/p-6cc3be76.system.entry.js +4 -0
- package/lib/duet/p-6e363557.system.js +4 -0
- package/lib/duet/p-6e6e76db.system.entry.js +4 -0
- package/lib/duet/p-70fafc98.system.js +4 -0
- package/lib/duet/p-7368b14e.system.entry.js +4 -0
- package/lib/duet/p-751542a0.system.entry.js +4 -0
- package/lib/duet/p-794659ac.entry.js +4 -0
- package/lib/duet/p-7e8d5bb9.system.entry.js +4 -0
- package/lib/duet/p-7fee0d23.system.entry.js +4 -0
- package/lib/duet/p-81867417.system.js +4 -0
- package/lib/duet/p-86daec1c.entry.js +4 -0
- package/lib/duet/{p-4265de16.system.entry.js → p-8b5ca0e7.system.entry.js} +1 -1
- package/lib/duet/{p-66dde4d2.entry.js → p-8cb7416d.entry.js} +1 -1
- package/lib/duet/p-8f826843.system.entry.js +4 -0
- package/lib/duet/p-94169303.entry.js +4 -0
- package/lib/duet/{p-36007600.entry.js → p-9481e312.entry.js} +1 -1
- package/lib/duet/{p-f82709ba.entry.js → p-984576c9.entry.js} +1 -1
- package/lib/duet/p-986779fb.js +4 -0
- package/lib/duet/p-987edcd0.js +15 -0
- package/lib/duet/{p-35e45c19.system.js → p-9a945278.system.js} +1 -1
- package/lib/duet/p-9d73343a.entry.js +4 -0
- package/lib/duet/{p-e26116e0.system.entry.js → p-9dca5c22.system.entry.js} +1 -1
- package/lib/duet/p-a207b008.entry.js +4 -0
- package/lib/duet/p-a5b9c192.system.entry.js +4 -0
- package/lib/duet/p-a6a84ec6.entry.js +4 -0
- package/lib/duet/{p-2d2c45f9.entry.js → p-a890da72.entry.js} +1 -1
- package/lib/duet/p-a9859a82.entry.js +4 -0
- package/lib/duet/p-aba68b7b.entry.js +4 -0
- package/lib/duet/p-acc57c77.entry.js +4 -0
- package/lib/duet/{p-2826f987.js → p-ad07f399.js} +1 -1
- package/lib/duet/p-aee24388.system.entry.js +4 -0
- package/lib/duet/p-aef1b720.system.entry.js +4 -0
- package/lib/duet/{p-62806bb6.system.entry.js → p-af41d894.system.entry.js} +1 -1
- package/lib/duet/p-b25d3769.js +4 -0
- package/lib/duet/{p-dee41056.system.entry.js → p-b32224fe.system.entry.js} +1 -1
- package/lib/duet/p-b3744481.entry.js +4 -0
- package/lib/duet/{p-de2be65b.system.js → p-b42d81c3.system.js} +1 -1
- package/lib/duet/{p-27d538f7.system.entry.js → p-b4e87f02.system.entry.js} +1 -1
- package/lib/duet/{p-f71f12ed.entry.js → p-bf93a991.entry.js} +1 -1
- package/lib/duet/{p-fd98468a.system.js → p-c18a599e.system.js} +0 -0
- package/lib/duet/p-c2e77278.entry.js +4 -0
- package/lib/duet/p-c34329f3.entry.js +4 -0
- package/lib/duet/{p-59a07cf9.entry.js → p-c36b4da0.entry.js} +1 -1
- package/lib/duet/{p-a321a98c.entry.js → p-cdd70b93.entry.js} +1 -1
- package/lib/duet/p-d1c19f04.system.entry.js +4 -0
- package/lib/duet/{p-f71e337e.system.entry.js → p-d3a3c3c7.system.entry.js} +1 -1
- package/lib/duet/{p-345ea4f2.system.entry.js → p-d4118b6e.system.entry.js} +1 -1
- package/lib/duet/{p-3dc9d15d.system.entry.js → p-d744d188.system.entry.js} +1 -1
- package/lib/duet/p-ddb6344c.system.js +4 -0
- package/lib/duet/p-de07c7d7.entry.js +4 -0
- package/lib/duet/p-dfe79666.system.entry.js +4 -0
- package/lib/duet/p-e12f2b8b.system.js +4 -0
- package/lib/duet/p-e2a44156.js +4 -0
- package/lib/duet/p-e76b722f.entry.js +4 -0
- package/lib/duet/p-e964d062.entry.js +4 -0
- package/lib/duet/p-eb55ccd2.system.js +4 -0
- package/lib/duet/p-f0a4b68d.system.entry.js +4 -0
- package/lib/duet/p-f364eb96.entry.js +4 -0
- package/lib/duet/{p-a88df408.entry.js → p-f8ce39fb.entry.js} +1 -1
- package/lib/esm/{dom-21034390.js → dom-58cd15f6.js} +1 -1
- package/lib/esm/duet-alert.entry.js +4 -2
- package/lib/esm/duet-badge.entry.js +2 -2
- package/lib/esm/duet-button_2.entry.js +6 -5
- package/lib/esm/duet-caption_4.entry.js +21 -15
- package/lib/esm/duet-card.entry.js +6 -6
- package/lib/esm/duet-checkbox.entry.js +2 -2
- package/lib/esm/duet-choice_2.entry.js +57 -26
- package/lib/esm/duet-collapsible.entry.js +5 -2
- package/lib/esm/duet-cookie-consent.entry.js +1 -1
- package/lib/esm/duet-date-picker.entry.js +23 -13
- package/lib/esm/duet-divider_2.entry.js +1 -1
- package/lib/esm/duet-editable-table-button_3.entry.js +226 -0
- package/lib/esm/{duet-table.entry.js → duet-editable-table_3.entry.js} +205 -3
- package/lib/esm/duet-empty-state.entry.js +1 -1
- package/lib/esm/duet-footer.entry.js +4 -4
- package/lib/esm/duet-grid_2.entry.js +52 -4
- package/lib/esm/duet-header_2.entry.js +26 -10
- package/lib/esm/duet-hero.entry.js +6 -6
- package/lib/esm/duet-icon.entry.js +6 -14
- package/lib/esm/duet-input_2.entry.js +7 -7
- package/lib/esm/duet-layout.entry.js +1 -1
- package/lib/esm/duet-list_2.entry.js +2 -2
- package/lib/esm/duet-modal.entry.js +8 -7
- package/lib/esm/duet-notification_2.entry.js +6 -5
- package/lib/esm/duet-number-input.entry.js +36 -15
- package/lib/esm/duet-progress.entry.js +71 -0
- package/lib/esm/duet-radio_2.entry.js +2 -2
- package/lib/esm/duet-range-slider.entry.js +2 -2
- package/lib/esm/duet-select.entry.js +6 -6
- package/lib/esm/duet-step_2.entry.js +1 -1
- package/lib/esm/duet-tab_2.entry.js +12 -6
- package/lib/esm/duet-textarea.entry.js +5 -5
- package/lib/esm/duet-toggle.entry.js +1 -1
- package/lib/esm/duet-tooltip.entry.js +21 -10
- package/lib/esm/duet-tray.entry.js +21 -10
- package/lib/esm/duet-upload.entry.js +403 -180
- package/lib/esm/duet-visually-hidden.entry.js +1 -1
- package/lib/esm/duet.js +4 -4
- package/lib/esm/{focus-utils-0b12f0df.js → focus-utils-1fe0dcd0.js} +1 -1
- package/lib/esm/{index-f70ddc7f.js → index-84d97bd1.js} +88 -78
- package/lib/esm/js-utils-b69f17df.js +14 -0
- package/lib/esm/{language-utils-ab9c3afc.js → language-utils-344d894c.js} +28 -10
- package/lib/esm/loader.js +3 -3
- package/lib/esm/{shadow-css-31e2d504.js → shadow-css-7c726abb.js} +9 -10
- package/lib/esm/{string-utils-69cf0d09.js → string-utils-2f1793b8.js} +7 -1
- package/lib/esm/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
- package/lib/esm/{tokens.module-edb66c04.js → tokens.module-49cbf963.js} +3 -1
- package/lib/esm/watch-options-dd55bce8.js +57 -0
- package/lib/esm-es5/{dom-21034390.js → dom-58cd15f6.js} +0 -0
- package/lib/esm-es5/duet-alert.entry.js +1 -1
- package/lib/esm-es5/duet-badge.entry.js +1 -1
- package/lib/esm-es5/duet-button_2.entry.js +1 -1
- package/lib/esm-es5/duet-caption_4.entry.js +2 -2
- package/lib/esm-es5/duet-card.entry.js +1 -1
- package/lib/esm-es5/duet-checkbox.entry.js +1 -1
- package/lib/esm-es5/duet-choice_2.entry.js +2 -2
- package/lib/esm-es5/duet-collapsible.entry.js +1 -1
- package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
- package/lib/esm-es5/duet-date-picker.entry.js +1 -1
- package/lib/esm-es5/duet-divider_2.entry.js +1 -1
- package/lib/esm-es5/duet-editable-table-button_3.entry.js +4 -0
- package/lib/esm-es5/duet-editable-table_3.entry.js +4 -0
- package/lib/esm-es5/duet-empty-state.entry.js +1 -1
- package/lib/esm-es5/duet-footer.entry.js +1 -1
- package/lib/esm-es5/duet-grid_2.entry.js +2 -2
- package/lib/esm-es5/duet-header_2.entry.js +1 -1
- package/lib/esm-es5/duet-hero.entry.js +1 -1
- package/lib/esm-es5/duet-icon.entry.js +2 -2
- package/lib/esm-es5/duet-input_2.entry.js +1 -1
- package/lib/esm-es5/duet-layout.entry.js +1 -1
- package/lib/esm-es5/duet-list_2.entry.js +1 -1
- package/lib/esm-es5/duet-modal.entry.js +1 -1
- package/lib/esm-es5/duet-notification_2.entry.js +1 -1
- package/lib/esm-es5/duet-number-input.entry.js +2 -2
- package/lib/esm-es5/duet-progress.entry.js +4 -0
- package/lib/esm-es5/duet-radio_2.entry.js +1 -1
- package/lib/esm-es5/duet-range-slider.entry.js +1 -1
- package/lib/esm-es5/duet-select.entry.js +1 -1
- package/lib/esm-es5/duet-step_2.entry.js +1 -1
- package/lib/esm-es5/duet-tab_2.entry.js +2 -2
- package/lib/esm-es5/duet-textarea.entry.js +1 -1
- package/lib/esm-es5/duet-toggle.entry.js +1 -1
- package/lib/esm-es5/duet-tooltip.entry.js +1 -1
- package/lib/esm-es5/duet-tray.entry.js +1 -1
- package/lib/esm-es5/duet-upload.entry.js +2 -2
- package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
- package/lib/esm-es5/duet.js +1 -1
- package/lib/esm-es5/{focus-utils-0b12f0df.js → focus-utils-1fe0dcd0.js} +1 -1
- package/lib/esm-es5/index-84d97bd1.js +4 -0
- package/lib/esm-es5/js-utils-b69f17df.js +4 -0
- package/lib/esm-es5/language-utils-344d894c.js +4 -0
- package/lib/esm-es5/loader.js +1 -1
- package/lib/esm-es5/shadow-css-7c726abb.js +15 -0
- package/lib/esm-es5/{string-utils-69cf0d09.js → string-utils-2f1793b8.js} +1 -1
- package/lib/esm-es5/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
- package/lib/esm-es5/tokens.module-49cbf963.js +4 -0
- package/lib/esm-es5/watch-options-dd55bce8.js +4 -0
- package/lib/types/components/duet-alert/duet-alert.d.ts +2 -1
- package/lib/types/components/duet-button/duet-button.d.ts +1 -1
- package/lib/types/components/duet-choice/duet-choice.d.ts +24 -5
- package/lib/types/components/duet-date-picker/duet-date-picker.d.ts +15 -9
- package/lib/types/components/duet-editable-table/duet-editable-table-button.d.ts +72 -0
- package/lib/types/components/duet-editable-table/duet-editable-table-item.d.ts +72 -0
- package/lib/types/components/duet-editable-table/duet-editable-table-tabledata.d.ts +7 -0
- package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +84 -0
- package/lib/types/components/duet-footer/duet-footer.d.ts +1 -1
- package/lib/types/components/duet-grid/duet-grid.d.ts +16 -2
- package/lib/types/components/duet-header/duet-header.d.ts +21 -5
- package/lib/types/components/duet-heading/duet-heading.d.ts +2 -2
- package/lib/types/components/duet-hero/duet-hero.d.ts +3 -3
- package/lib/types/components/duet-icon/duet-icon.d.ts +1 -1
- package/lib/types/components/duet-link/duet-link.d.ts +2 -3
- package/lib/types/components/duet-modal/duet-modal.d.ts +3 -3
- package/lib/types/components/duet-notification-drawer/duet-notification-drawer.d.ts +3 -3
- package/lib/types/components/duet-number-input/duet-number-input.d.ts +21 -0
- package/lib/types/components/duet-paragraph/duet-paragraph.d.ts +9 -1
- package/lib/types/components/duet-progress/duet-progress.d.ts +64 -0
- package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +6 -0
- package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +11 -0
- package/lib/types/components/duet-tray/duet-tray.d.ts +11 -0
- package/lib/types/components/duet-upload/duet-upload-aria-status.d.ts +49 -0
- package/lib/types/components/duet-upload/duet-upload-editable-item-error.d.ts +7 -0
- package/lib/types/components/duet-upload/duet-upload-editable-item-inprogres.d.ts +7 -0
- package/lib/types/components/duet-upload/duet-upload-editable-item-success.d.ts +8 -0
- package/lib/types/components/duet-upload/duet-upload.d.ts +94 -25
- package/lib/types/components/duet-upload/errorcodes.utils.d.ts +1 -0
- package/lib/types/components/duet-upload/xhr.helpers.d.ts +7 -1
- package/lib/types/components.d.ts +611 -79
- package/lib/types/utils/js-utils.d.ts +1 -0
- package/lib/types/utils/language-utils.d.ts +8 -3
- package/lib/types/utils/string-utils.d.ts +1 -0
- package/lib/types/utils/watch-options.d.ts +2 -0
- package/package.json +19 -15
- package/hydrate/package.json +0 -6
- package/lib/cjs/duet-fieldset.cjs.entry.js +0 -62
- package/lib/collection/components/duet-upload/duet-upload-file-list.js +0 -49
- package/lib/duet/p-0733c303.system.entry.js +0 -4
- package/lib/duet/p-095060cc.js +0 -4
- package/lib/duet/p-156864a1.system.entry.js +0 -4
- package/lib/duet/p-15c15c6a.js +0 -15
- package/lib/duet/p-1911dfe7.system.entry.js +0 -4
- package/lib/duet/p-1c41525a.entry.js +0 -4
- package/lib/duet/p-1cfe38b1.system.entry.js +0 -4
- package/lib/duet/p-2834a302.entry.js +0 -4
- package/lib/duet/p-28a3d38f.system.entry.js +0 -4
- package/lib/duet/p-2a1a9f9f.entry.js +0 -4
- package/lib/duet/p-2a4d7c5b.system.entry.js +0 -4
- package/lib/duet/p-3eb36e3d.entry.js +0 -4
- package/lib/duet/p-4095dba5.entry.js +0 -4
- package/lib/duet/p-418b2ce7.system.js +0 -4
- package/lib/duet/p-4289b543.entry.js +0 -4
- package/lib/duet/p-43e39d98.system.js +0 -4
- package/lib/duet/p-46a3ae43.system.js +0 -4
- package/lib/duet/p-4a38cf9d.entry.js +0 -4
- package/lib/duet/p-4be8e814.entry.js +0 -4
- package/lib/duet/p-4dcea8fb.system.entry.js +0 -4
- package/lib/duet/p-591b2137.entry.js +0 -4
- package/lib/duet/p-5c5bdb06.system.entry.js +0 -4
- package/lib/duet/p-5f70e318.entry.js +0 -4
- package/lib/duet/p-62c294d6.system.entry.js +0 -4
- package/lib/duet/p-6a356ab1.system.js +0 -4
- package/lib/duet/p-6c2729da.js +0 -4
- package/lib/duet/p-6f107847.system.entry.js +0 -4
- package/lib/duet/p-77a5fe4c.system.js +0 -4
- package/lib/duet/p-7809e78b.system.entry.js +0 -4
- package/lib/duet/p-7a36d76f.system.entry.js +0 -4
- package/lib/duet/p-7ee52f58.entry.js +0 -4
- package/lib/duet/p-884693f1.entry.js +0 -4
- package/lib/duet/p-89db3b94.entry.js +0 -4
- package/lib/duet/p-8cfce39e.system.entry.js +0 -4
- package/lib/duet/p-8ffe1461.system.entry.js +0 -4
- package/lib/duet/p-9381c2d4.entry.js +0 -4
- package/lib/duet/p-9a450c9a.entry.js +0 -4
- package/lib/duet/p-9a89ec39.js +0 -4
- package/lib/duet/p-9bbfe606.system.entry.js +0 -4
- package/lib/duet/p-a6096b05.system.entry.js +0 -4
- package/lib/duet/p-a89d5d7c.entry.js +0 -4
- package/lib/duet/p-b07055fd.system.entry.js +0 -4
- package/lib/duet/p-b4374f0e.entry.js +0 -4
- package/lib/duet/p-b456d684.system.entry.js +0 -4
- package/lib/duet/p-bd18c93f.js +0 -4
- package/lib/duet/p-bddb1c15.system.entry.js +0 -4
- package/lib/duet/p-c0b95b58.entry.js +0 -4
- package/lib/duet/p-c3688975.entry.js +0 -4
- package/lib/duet/p-c4d183e6.entry.js +0 -4
- package/lib/duet/p-c9303f9a.entry.js +0 -4
- package/lib/duet/p-cd4e8ccf.js +0 -4
- package/lib/duet/p-ceb75b35.system.entry.js +0 -4
- package/lib/duet/p-cf243bcb.system.entry.js +0 -4
- package/lib/duet/p-d37c8a05.system.js +0 -4
- package/lib/duet/p-d989af11.entry.js +0 -4
- package/lib/duet/p-e58ca7af.system.js +0 -16
- package/lib/duet/p-e6128d82.system.entry.js +0 -4
- package/lib/duet/p-e86cdc17.entry.js +0 -4
- package/lib/duet/p-eadb29c7.entry.js +0 -4
- package/lib/duet/p-f30b14d6.system.entry.js +0 -4
- package/lib/duet/p-f79f8da1.entry.js +0 -4
- package/lib/duet/p-fc397e03.system.entry.js +0 -4
- package/lib/esm/duet-fieldset.entry.js +0 -58
- package/lib/esm/watch-options-de55ea78.js +0 -35
- package/lib/esm-es5/duet-fieldset.entry.js +0 -4
- package/lib/esm-es5/duet-table.entry.js +0 -4
- package/lib/esm-es5/index-f70ddc7f.js +0 -4
- package/lib/esm-es5/language-utils-ab9c3afc.js +0 -4
- package/lib/esm-es5/shadow-css-31e2d504.js +0 -15
- package/lib/esm-es5/tokens.module-edb66c04.js +0 -4
- package/lib/esm-es5/watch-options-de55ea78.js +0 -4
- package/lib/html.html-data.json +0 -4556
- package/lib/types/components/duet-upload/duet-upload-file-list.d.ts +0 -9
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built with Duet Design System
|
|
3
|
+
*/
|
|
4
|
+
import { Component, Element, h, Host, Method, Prop, State } from "@stencil/core";
|
|
5
|
+
import { debounce } from "../../utils/js-utils";
|
|
6
|
+
import { getLocaleString, sanitizeString } from "../../utils/language-utils";
|
|
7
|
+
import { inheritGlobalTheme } from "../../utils/themeable-component";
|
|
8
|
+
export class DuetEditableTable {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* State() variables
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
this.tick = Date.now();
|
|
15
|
+
/**
|
|
16
|
+
* Map of items that contain list of things.
|
|
17
|
+
*/
|
|
18
|
+
this.items = new Map();
|
|
19
|
+
/**
|
|
20
|
+
* Array of internationalized defaults for the default groups labels.
|
|
21
|
+
*/
|
|
22
|
+
this.groupsLabelDefaults = {
|
|
23
|
+
fi: "Kaikki",
|
|
24
|
+
en: "All items",
|
|
25
|
+
sv: "Alla objekt",
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Array of internationalized defaults for the default action labels.
|
|
29
|
+
*/
|
|
30
|
+
this.actionLabelDefaults = {
|
|
31
|
+
fi: "Toiminnot",
|
|
32
|
+
en: "Actions",
|
|
33
|
+
sv: "Handlingar",
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Array of group names that you want the editable table to display (can be used to hide or show groups depending on conditions).
|
|
37
|
+
* @default { id: "all", label: this.groupsLabelDefaults, actionLabel: this.actionLabelDefaults }.
|
|
38
|
+
* @example [{ id: "success", label: {fi: "Onnistunut", en: "Success", sv: "Alt klart", }}].
|
|
39
|
+
*/
|
|
40
|
+
this.groups = [
|
|
41
|
+
{ id: "all", label: this.groupsLabelDefaults, actionLabel: this.actionLabelDefaults },
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Array of actions that are mapped via the map variable to the various groups defined in group.
|
|
45
|
+
* @default undefined
|
|
46
|
+
* @example [{
|
|
47
|
+
variation: "default",
|
|
48
|
+
icon: "action-edit-2",
|
|
49
|
+
id: "edit",
|
|
50
|
+
map: ["success"],
|
|
51
|
+
label: {
|
|
52
|
+
fi: " Label",
|
|
53
|
+
en: " Label",
|
|
54
|
+
sv: " Label",
|
|
55
|
+
}
|
|
56
|
+
}]
|
|
57
|
+
*/
|
|
58
|
+
this.actions = undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Shows or hides the table labels.
|
|
61
|
+
*/
|
|
62
|
+
this.hideGroups = false;
|
|
63
|
+
/**
|
|
64
|
+
* Exposes the aria role for optimizing accessibility.
|
|
65
|
+
*/
|
|
66
|
+
this.accessibleRole = undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Private methods.
|
|
69
|
+
*/
|
|
70
|
+
this.kick = debounce(() => {
|
|
71
|
+
this.tick = Date.now();
|
|
72
|
+
}, 100); // will trigger re-render
|
|
73
|
+
this.filterMap = needle => {
|
|
74
|
+
if (needle === "all") {
|
|
75
|
+
return Array.from(this.items);
|
|
76
|
+
}
|
|
77
|
+
return Array.from(this.items).filter(item => needle === item[1].group);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Component lifecycle events.
|
|
82
|
+
*/
|
|
83
|
+
componentWillLoad() {
|
|
84
|
+
if (typeof this.groups === "string") {
|
|
85
|
+
this.internalGroupArray = sanitizeString(this.groups);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.internalGroupArray = this.groups;
|
|
89
|
+
}
|
|
90
|
+
if (typeof this.actions === "string") {
|
|
91
|
+
this.internalActionsArray = sanitizeString(this.actions);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.internalActionsArray = this.actions;
|
|
95
|
+
}
|
|
96
|
+
inheritGlobalTheme(this);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Method to force an update of a tabular data array.
|
|
100
|
+
* when called the method will rerender the entire tabular structure.
|
|
101
|
+
*/
|
|
102
|
+
async updateTable(passedItems = undefined) {
|
|
103
|
+
this.items = new Map(passedItems || this.items);
|
|
104
|
+
this.kick();
|
|
105
|
+
}
|
|
106
|
+
render() {
|
|
107
|
+
return (h(Host, { class: {
|
|
108
|
+
"duet-theme-turva": this.theme === "turva",
|
|
109
|
+
} }, this.internalGroupArray.map(group => {
|
|
110
|
+
const currentGroup = this.filterMap(group.id);
|
|
111
|
+
if (!currentGroup.length) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
return (h("duet-table", { variation: "plain", breakpoint: "none", role: "", margin: this.hideGroups ? "none" : "auto" },
|
|
115
|
+
h("table", { class: "duet-editable-table", "aria-role": this.accessibleRole },
|
|
116
|
+
h("thead", { class: "duet-editable-table-header" },
|
|
117
|
+
h("tr", null,
|
|
118
|
+
h("th", { class: {
|
|
119
|
+
"duet-editable-table-header-hidden": this.hideGroups,
|
|
120
|
+
} }, !this.hideGroups ? (getLocaleString(group.label)) : (h("duet-visually-hidden", null, getLocaleString(group.label)))),
|
|
121
|
+
h("th", { class: {
|
|
122
|
+
"duet-editable-table-header-hidden": this.hideGroups,
|
|
123
|
+
} },
|
|
124
|
+
h("duet-visually-hidden", null, group.actionLabel
|
|
125
|
+
? getLocaleString(group.actionLabel)
|
|
126
|
+
: getLocaleString(this.actionLabelDefaults))))),
|
|
127
|
+
h("tbody", null, currentGroup.map(dataAsArray => {
|
|
128
|
+
const [key, value] = dataAsArray;
|
|
129
|
+
return (h("duet-editable-table-item", { keyName: key, data: Object.assign({}, value), groupId: group.id, part: group.id, actions: this.internalActionsArray }));
|
|
130
|
+
})))));
|
|
131
|
+
})));
|
|
132
|
+
}
|
|
133
|
+
static get is() { return "duet-editable-table"; }
|
|
134
|
+
static get encapsulation() { return "shadow"; }
|
|
135
|
+
static get originalStyleUrls() { return {
|
|
136
|
+
"$": ["duet-editable-table.scss"]
|
|
137
|
+
}; }
|
|
138
|
+
static get styleUrls() { return {
|
|
139
|
+
"$": ["duet-editable-table.css"]
|
|
140
|
+
}; }
|
|
141
|
+
static get properties() { return {
|
|
142
|
+
"items": {
|
|
143
|
+
"type": "unknown",
|
|
144
|
+
"mutable": true,
|
|
145
|
+
"complexType": {
|
|
146
|
+
"original": "DuetEditableTableItems",
|
|
147
|
+
"resolved": "Map<any, DuetEditableTableItemData>",
|
|
148
|
+
"references": {
|
|
149
|
+
"DuetEditableTableItems": {
|
|
150
|
+
"location": "local"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"required": false,
|
|
155
|
+
"optional": false,
|
|
156
|
+
"docs": {
|
|
157
|
+
"tags": [],
|
|
158
|
+
"text": "Map of items that contain list of things."
|
|
159
|
+
},
|
|
160
|
+
"defaultValue": "new Map()"
|
|
161
|
+
},
|
|
162
|
+
"groupsLabelDefaults": {
|
|
163
|
+
"type": "unknown",
|
|
164
|
+
"mutable": false,
|
|
165
|
+
"complexType": {
|
|
166
|
+
"original": "DuetLangObject",
|
|
167
|
+
"resolved": "DuetLangObject",
|
|
168
|
+
"references": {
|
|
169
|
+
"DuetLangObject": {
|
|
170
|
+
"location": "import",
|
|
171
|
+
"path": "../../utils/language-utils"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"required": false,
|
|
176
|
+
"optional": false,
|
|
177
|
+
"docs": {
|
|
178
|
+
"tags": [],
|
|
179
|
+
"text": "Array of internationalized defaults for the default groups labels."
|
|
180
|
+
},
|
|
181
|
+
"defaultValue": "{\n fi: \"Kaikki\",\n en: \"All items\",\n sv: \"Alla objekt\",\n }"
|
|
182
|
+
},
|
|
183
|
+
"actionLabelDefaults": {
|
|
184
|
+
"type": "unknown",
|
|
185
|
+
"mutable": false,
|
|
186
|
+
"complexType": {
|
|
187
|
+
"original": "DuetLangObject",
|
|
188
|
+
"resolved": "DuetLangObject",
|
|
189
|
+
"references": {
|
|
190
|
+
"DuetLangObject": {
|
|
191
|
+
"location": "import",
|
|
192
|
+
"path": "../../utils/language-utils"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"required": false,
|
|
197
|
+
"optional": false,
|
|
198
|
+
"docs": {
|
|
199
|
+
"tags": [],
|
|
200
|
+
"text": "Array of internationalized defaults for the default action labels."
|
|
201
|
+
},
|
|
202
|
+
"defaultValue": "{\n fi: \"Toiminnot\",\n en: \"Actions\",\n sv: \"Handlingar\",\n }"
|
|
203
|
+
},
|
|
204
|
+
"groups": {
|
|
205
|
+
"type": "string",
|
|
206
|
+
"mutable": false,
|
|
207
|
+
"complexType": {
|
|
208
|
+
"original": "DuetEditableTableGroupNames | string",
|
|
209
|
+
"resolved": "string | { id: string; label: DuetLangObject; actionLabel?: DuetLangObject; }[]",
|
|
210
|
+
"references": {
|
|
211
|
+
"DuetEditableTableGroupNames": {
|
|
212
|
+
"location": "local"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"required": false,
|
|
217
|
+
"optional": false,
|
|
218
|
+
"docs": {
|
|
219
|
+
"tags": [{
|
|
220
|
+
"name": "default",
|
|
221
|
+
"text": "{ id: \"all\", label: this.groupsLabelDefaults, actionLabel: this.actionLabelDefaults }."
|
|
222
|
+
}, {
|
|
223
|
+
"name": "example",
|
|
224
|
+
"text": "[{ id: \"success\", label: {fi: \"Onnistunut\", en: \"Success\", sv: \"Alt klart\", }}]."
|
|
225
|
+
}],
|
|
226
|
+
"text": "Array of group names that you want the editable table to display (can be used to hide or show groups depending on conditions)."
|
|
227
|
+
},
|
|
228
|
+
"attribute": "groups",
|
|
229
|
+
"reflect": false,
|
|
230
|
+
"defaultValue": "[\n { id: \"all\", label: this.groupsLabelDefaults, actionLabel: this.actionLabelDefaults },\n ]"
|
|
231
|
+
},
|
|
232
|
+
"actions": {
|
|
233
|
+
"type": "string",
|
|
234
|
+
"mutable": false,
|
|
235
|
+
"complexType": {
|
|
236
|
+
"original": "DuetEditableTableActions | string",
|
|
237
|
+
"resolved": "string | { icon: string; color: string; color_hover: string; id: string; map?: string[]; label?: DuetLangObject; }[]",
|
|
238
|
+
"references": {
|
|
239
|
+
"DuetEditableTableActions": {
|
|
240
|
+
"location": "import",
|
|
241
|
+
"path": "./duet-editable-table-item"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
"required": false,
|
|
246
|
+
"optional": false,
|
|
247
|
+
"docs": {
|
|
248
|
+
"tags": [{
|
|
249
|
+
"name": "default",
|
|
250
|
+
"text": "undefined"
|
|
251
|
+
}, {
|
|
252
|
+
"name": "example",
|
|
253
|
+
"text": "[{\nvariation: \"default\",\nicon: \"action-edit-2\",\nid: \"edit\",\nmap: [\"success\"],\nlabel: {\n fi: \" Label\",\n en: \" Label\",\n sv: \" Label\",\n}\n}]"
|
|
254
|
+
}],
|
|
255
|
+
"text": "Array of actions that are mapped via the map variable to the various groups defined in group."
|
|
256
|
+
},
|
|
257
|
+
"attribute": "actions",
|
|
258
|
+
"reflect": false,
|
|
259
|
+
"defaultValue": "undefined"
|
|
260
|
+
},
|
|
261
|
+
"hideGroups": {
|
|
262
|
+
"type": "boolean",
|
|
263
|
+
"mutable": false,
|
|
264
|
+
"complexType": {
|
|
265
|
+
"original": "boolean",
|
|
266
|
+
"resolved": "boolean",
|
|
267
|
+
"references": {}
|
|
268
|
+
},
|
|
269
|
+
"required": false,
|
|
270
|
+
"optional": false,
|
|
271
|
+
"docs": {
|
|
272
|
+
"tags": [],
|
|
273
|
+
"text": "Shows or hides the table labels."
|
|
274
|
+
},
|
|
275
|
+
"attribute": "hide-table-labels",
|
|
276
|
+
"reflect": false,
|
|
277
|
+
"defaultValue": "false"
|
|
278
|
+
},
|
|
279
|
+
"accessibleRole": {
|
|
280
|
+
"type": "string",
|
|
281
|
+
"mutable": false,
|
|
282
|
+
"complexType": {
|
|
283
|
+
"original": "string",
|
|
284
|
+
"resolved": "string",
|
|
285
|
+
"references": {}
|
|
286
|
+
},
|
|
287
|
+
"required": false,
|
|
288
|
+
"optional": false,
|
|
289
|
+
"docs": {
|
|
290
|
+
"tags": [],
|
|
291
|
+
"text": "Exposes the aria role for optimizing accessibility."
|
|
292
|
+
},
|
|
293
|
+
"attribute": "accessible-role",
|
|
294
|
+
"reflect": false,
|
|
295
|
+
"defaultValue": "undefined"
|
|
296
|
+
},
|
|
297
|
+
"theme": {
|
|
298
|
+
"type": "string",
|
|
299
|
+
"mutable": true,
|
|
300
|
+
"complexType": {
|
|
301
|
+
"original": "DuetTheme",
|
|
302
|
+
"resolved": "\"\" | \"default\" | \"turva\"",
|
|
303
|
+
"references": {
|
|
304
|
+
"DuetTheme": {
|
|
305
|
+
"location": "import",
|
|
306
|
+
"path": "../../common-types"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"required": false,
|
|
311
|
+
"optional": false,
|
|
312
|
+
"docs": {
|
|
313
|
+
"tags": [],
|
|
314
|
+
"text": "Theme of the table."
|
|
315
|
+
},
|
|
316
|
+
"attribute": "theme",
|
|
317
|
+
"reflect": false
|
|
318
|
+
}
|
|
319
|
+
}; }
|
|
320
|
+
static get states() { return {
|
|
321
|
+
"tick": {}
|
|
322
|
+
}; }
|
|
323
|
+
static get methods() { return {
|
|
324
|
+
"updateTable": {
|
|
325
|
+
"complexType": {
|
|
326
|
+
"signature": "(passedItems?: DuetEditableTableItems) => Promise<void>",
|
|
327
|
+
"parameters": [{
|
|
328
|
+
"tags": [],
|
|
329
|
+
"text": ""
|
|
330
|
+
}],
|
|
331
|
+
"references": {
|
|
332
|
+
"Promise": {
|
|
333
|
+
"location": "global"
|
|
334
|
+
},
|
|
335
|
+
"DuetEditableTableItems": {
|
|
336
|
+
"location": "local"
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
"return": "Promise<void>"
|
|
340
|
+
},
|
|
341
|
+
"docs": {
|
|
342
|
+
"text": "Method to force an update of a tabular data array.\nwhen called the method will rerender the entire tabular structure.",
|
|
343
|
+
"tags": []
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}; }
|
|
347
|
+
static get elementRef() { return "element"; }
|
|
348
|
+
}
|
|
@@ -60,7 +60,7 @@ export class DuetFooter {
|
|
|
60
60
|
* Adds accessible label for tooltip that is shown in external link (url & external have both been set)
|
|
61
61
|
* @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
|
|
62
62
|
*/
|
|
63
|
-
this.accessibleLabelExternal = getLocaleString(this.accessibleLabelExternalDefaults);
|
|
63
|
+
this.accessibleLabelExternal = getLocaleString(this.accessibleLabelExternalDefaults, this.language);
|
|
64
64
|
/**
|
|
65
65
|
* Component event handling.
|
|
66
66
|
*/
|
|
@@ -255,11 +255,11 @@ export class DuetFooter {
|
|
|
255
255
|
"optional": false,
|
|
256
256
|
"docs": {
|
|
257
257
|
"tags": [{
|
|
258
|
-
"
|
|
259
|
-
"
|
|
258
|
+
"name": "deprecated",
|
|
259
|
+
"text": "this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing"
|
|
260
260
|
}, {
|
|
261
|
-
"
|
|
262
|
-
"
|
|
261
|
+
"name": "default",
|
|
262
|
+
"text": "\"fi\""
|
|
263
263
|
}],
|
|
264
264
|
"text": "The currently active language. This setting changes the logo to match the\nchosen language."
|
|
265
265
|
},
|
|
@@ -285,11 +285,11 @@ export class DuetFooter {
|
|
|
285
285
|
"reflect": false
|
|
286
286
|
},
|
|
287
287
|
"accessibleLabelExternalDefaults": {
|
|
288
|
-
"type": "
|
|
288
|
+
"type": "string",
|
|
289
289
|
"mutable": false,
|
|
290
290
|
"complexType": {
|
|
291
|
-
"original": "DuetLangObject",
|
|
292
|
-
"resolved": "DuetLangObject",
|
|
291
|
+
"original": "DuetLangObject | string",
|
|
292
|
+
"resolved": "DuetLangObject | string",
|
|
293
293
|
"references": {
|
|
294
294
|
"DuetLangObject": {
|
|
295
295
|
"location": "import",
|
|
@@ -301,11 +301,13 @@ export class DuetFooter {
|
|
|
301
301
|
"optional": false,
|
|
302
302
|
"docs": {
|
|
303
303
|
"tags": [{
|
|
304
|
-
"
|
|
305
|
-
"
|
|
304
|
+
"name": "default",
|
|
305
|
+
"text": "{fi: \"Avautuu uuteen ikkunaan\",sv: \"\u00D6ppnas i nytt f\u00F6nster\",en: \"Opens in a new window\"}"
|
|
306
306
|
}],
|
|
307
307
|
"text": "Property to change accessibleLabelExternal defaults on the component.\nnormally you would handle these strings on an application level and override @accessibleLabelExternal when needed"
|
|
308
308
|
},
|
|
309
|
+
"attribute": "accessible-label-external-default",
|
|
310
|
+
"reflect": false,
|
|
309
311
|
"defaultValue": "DuetStringsExternalDefaults"
|
|
310
312
|
},
|
|
311
313
|
"accessibleLabelExternal": {
|
|
@@ -320,14 +322,14 @@ export class DuetFooter {
|
|
|
320
322
|
"optional": false,
|
|
321
323
|
"docs": {
|
|
322
324
|
"tags": [{
|
|
323
|
-
"
|
|
324
|
-
"
|
|
325
|
+
"name": "default",
|
|
326
|
+
"text": "{fi: \"Avautuu uuteen ikkunaan\",sv: \"\u00D6ppnas i nytt f\u00F6nster\",en: \"Opens in a new window\"}"
|
|
325
327
|
}],
|
|
326
328
|
"text": "Adds accessible label for tooltip that is shown in external link (url & external have both been set)"
|
|
327
329
|
},
|
|
328
330
|
"attribute": "accessible-label-external",
|
|
329
331
|
"reflect": false,
|
|
330
|
-
"defaultValue": "getLocaleString(this.accessibleLabelExternalDefaults)"
|
|
332
|
+
"defaultValue": "getLocaleString(this.accessibleLabelExternalDefaults, this.language)"
|
|
331
333
|
},
|
|
332
334
|
"menu": {
|
|
333
335
|
"type": "any",
|
|
@@ -359,8 +361,8 @@ export class DuetFooter {
|
|
|
359
361
|
"composed": true,
|
|
360
362
|
"docs": {
|
|
361
363
|
"tags": [{
|
|
362
|
-
"
|
|
363
|
-
"
|
|
364
|
+
"name": "deprecated",
|
|
365
|
+
"text": "in favour of the more specific events like duetLogoClick.\nCallback for when a user is about to navigate to another page. You can prevent\nthe default browser functionality by calling **event.detail.originalEvent.preventDefault()**\ninside your listener. Additionally, the passed data is available via\n**event.detail.data**."
|
|
364
366
|
}],
|
|
365
367
|
"text": ""
|
|
366
368
|
},
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built with Duet Design System
|
|
3
3
|
*/
|
|
4
|
-
import { Component, Element, h, Host, Prop, Watch } from "@stencil/core";
|
|
5
|
-
import { watchForOptions } from "../../utils/watch-options";
|
|
4
|
+
import { Component, Element, h, Host, Prop, State, Watch } from "@stencil/core";
|
|
5
|
+
import { watchForElement, watchForOptions } from "../../utils/watch-options";
|
|
6
6
|
function isGridItem(element) {
|
|
7
7
|
return element.tagName.toLowerCase() === "duet-grid-item";
|
|
8
8
|
}
|
|
9
9
|
export class DuetGrid {
|
|
10
10
|
constructor() {
|
|
11
|
+
this.distributeFormElement = false;
|
|
11
12
|
/**
|
|
12
13
|
* Enable or disable the automatic responsive behaviour of the grid component.
|
|
13
14
|
* Setting this option to "true" makes sure that contents are stacked vertically
|
|
@@ -24,7 +25,9 @@ export class DuetGrid {
|
|
|
24
25
|
*/
|
|
25
26
|
this.direction = "horizontal";
|
|
26
27
|
/**
|
|
27
|
-
* Adjusts the vertical alignment of the grid items
|
|
28
|
+
* Adjusts the vertical alignment of the grid items, if set to "form_distribute"
|
|
29
|
+
* the grid will try to calculate correct paddings for any duet-input fields inside duet-grid-items,
|
|
30
|
+
* so that they align even when displaying errors.
|
|
28
31
|
*/
|
|
29
32
|
this.alignment = "top";
|
|
30
33
|
/**
|
|
@@ -36,14 +39,34 @@ export class DuetGrid {
|
|
|
36
39
|
*/
|
|
37
40
|
this.mobile = "";
|
|
38
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Private functions
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* Returns the element height including margins
|
|
47
|
+
* @param element - element
|
|
48
|
+
* @returns {number}
|
|
49
|
+
*/
|
|
50
|
+
outerHeight(element) {
|
|
51
|
+
const height = element.offsetHeight, style = window.getComputedStyle(element);
|
|
52
|
+
return ["top", "bottom"]
|
|
53
|
+
.map(side => parseInt(style[`margin-${side}`]))
|
|
54
|
+
.reduce((total, side) => total + side, height);
|
|
55
|
+
}
|
|
39
56
|
/**
|
|
40
57
|
* Component lifecycle events.
|
|
41
58
|
*/
|
|
42
59
|
async connectedCallback() {
|
|
43
60
|
const el = this.element;
|
|
61
|
+
this.distributeFormElement = this.alignment === "form_distribute";
|
|
44
62
|
this.mutationO = watchForOptions(el, "duet-grid-item", () => {
|
|
45
63
|
this.updateGridItems();
|
|
46
64
|
});
|
|
65
|
+
if (this.distributeFormElement) {
|
|
66
|
+
this.mutation1 = watchForElement(el, "duet-input", () => {
|
|
67
|
+
this.updateGridItemsWithInputFields();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
47
70
|
this.updateGridItems();
|
|
48
71
|
}
|
|
49
72
|
disconnectedCallback() {
|
|
@@ -51,6 +74,10 @@ export class DuetGrid {
|
|
|
51
74
|
this.mutationO.disconnect();
|
|
52
75
|
this.mutationO = undefined;
|
|
53
76
|
}
|
|
77
|
+
if (this.mutation1) {
|
|
78
|
+
this.mutation1.disconnect();
|
|
79
|
+
this.mutation1 = undefined;
|
|
80
|
+
}
|
|
54
81
|
}
|
|
55
82
|
/**
|
|
56
83
|
* Local methods
|
|
@@ -62,6 +89,27 @@ export class DuetGrid {
|
|
|
62
89
|
item.breakpoint = this.breakpoint;
|
|
63
90
|
});
|
|
64
91
|
}
|
|
92
|
+
async updateGridItemsWithInputFields() {
|
|
93
|
+
const items = Array.from(this.element.children).filter(isGridItem);
|
|
94
|
+
let maxHeight = 0;
|
|
95
|
+
const sizes = [];
|
|
96
|
+
items.forEach(item => {
|
|
97
|
+
const inputErrorDom = item.querySelector("span.duet-input-error");
|
|
98
|
+
const height = inputErrorDom ? this.outerHeight(inputErrorDom) : 0;
|
|
99
|
+
sizes.push(height);
|
|
100
|
+
});
|
|
101
|
+
maxHeight = Math.max(...sizes);
|
|
102
|
+
items.forEach(item => {
|
|
103
|
+
const inputErrorDom = item.querySelector("span.duet-input-error");
|
|
104
|
+
const height = inputErrorDom ? this.outerHeight(inputErrorDom) : 0;
|
|
105
|
+
if (height < maxHeight) {
|
|
106
|
+
item.setAttribute("style", `padding-bottom: ${maxHeight - height}px;`);
|
|
107
|
+
}
|
|
108
|
+
else if (height === maxHeight) {
|
|
109
|
+
item.setAttribute("style", `padding-bottom: 0px;`);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
65
113
|
/**
|
|
66
114
|
* render() function
|
|
67
115
|
* Always the last one in the class.
|
|
@@ -71,7 +119,7 @@ export class DuetGrid {
|
|
|
71
119
|
"duet-grid": true,
|
|
72
120
|
"duet-no-stacking": !this.responsive,
|
|
73
121
|
"duet-grid-align-top": this.alignment === "top",
|
|
74
|
-
"duet-grid-align-bottom": this.alignment === "bottom",
|
|
122
|
+
"duet-grid-align-bottom": this.alignment === "bottom" || this.alignment === "form_distribute",
|
|
75
123
|
"duet-grid-align-center": this.alignment === "center",
|
|
76
124
|
"duet-grid-align-stretch": this.alignment === "stretch",
|
|
77
125
|
"duet-grid-align-baseline": this.alignment === "baseline",
|
|
@@ -169,7 +217,7 @@ export class DuetGrid {
|
|
|
169
217
|
"mutable": false,
|
|
170
218
|
"complexType": {
|
|
171
219
|
"original": "DuetGridAlignment",
|
|
172
|
-
"resolved": "\"baseline\" | \"bottom\" | \"center\" | \"stretch\" | \"top\"",
|
|
220
|
+
"resolved": "\"baseline\" | \"bottom\" | \"center\" | \"form_distribute\" | \"stretch\" | \"top\"",
|
|
173
221
|
"references": {
|
|
174
222
|
"DuetGridAlignment": {
|
|
175
223
|
"location": "local"
|
|
@@ -180,7 +228,7 @@ export class DuetGrid {
|
|
|
180
228
|
"optional": false,
|
|
181
229
|
"docs": {
|
|
182
230
|
"tags": [],
|
|
183
|
-
"text": "Adjusts the vertical alignment of the grid items."
|
|
231
|
+
"text": "Adjusts the vertical alignment of the grid items, if set to \"form_distribute\"\nthe grid will try to calculate correct paddings for any duet-input fields inside duet-grid-items,\nso that they align even when displaying errors."
|
|
184
232
|
},
|
|
185
233
|
"attribute": "alignment",
|
|
186
234
|
"reflect": false,
|
|
@@ -231,6 +279,9 @@ export class DuetGrid {
|
|
|
231
279
|
"defaultValue": "\"\""
|
|
232
280
|
}
|
|
233
281
|
}; }
|
|
282
|
+
static get states() { return {
|
|
283
|
+
"distributeFormElement": {}
|
|
284
|
+
}; }
|
|
234
285
|
static get elementRef() { return "element"; }
|
|
235
286
|
static get watchers() { return [{
|
|
236
287
|
"propName": "responsive",
|
|
@@ -173,8 +173,8 @@ export class DuetGridItem {
|
|
|
173
173
|
"optional": false,
|
|
174
174
|
"docs": {
|
|
175
175
|
"tags": [{
|
|
176
|
-
"
|
|
177
|
-
"
|
|
176
|
+
"name": "internal",
|
|
177
|
+
"text": "Enable or disable the automatic responsive behaviour of the grid item.\nThis property is used internally by Grid, and should not be set by the developer."
|
|
178
178
|
}],
|
|
179
179
|
"text": ""
|
|
180
180
|
},
|
|
@@ -199,8 +199,8 @@ export class DuetGridItem {
|
|
|
199
199
|
"optional": false,
|
|
200
200
|
"docs": {
|
|
201
201
|
"tags": [{
|
|
202
|
-
"
|
|
203
|
-
"
|
|
202
|
+
"name": "internal",
|
|
203
|
+
"text": "Switch the breakpoint used to trigger the content stacking.\nThis property is used internally by Grid, and should not be set by the developer."
|
|
204
204
|
}],
|
|
205
205
|
"text": ""
|
|
206
206
|
},
|