@govbr-ds/webcomponents 2.2.0 → 2.4.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/README.md +75 -24
- package/cem/custom-elements.json +1858 -1712
- package/cem/webcomponents.html-custom-data.json +73 -67
- package/dist/cjs/br-avatar.cjs.entry.js +2 -2
- package/dist/cjs/br-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/br-breadcrumb.cjs.entry.js +2 -2
- package/dist/cjs/br-button_2.cjs.entry.js +10 -5
- package/dist/cjs/br-card.cjs.entry.js +2 -2
- package/dist/cjs/br-carousel-page.cjs.entry.js +2 -2
- package/dist/cjs/br-carousel.cjs.entry.js +2 -2
- package/dist/cjs/br-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/br-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/br-checkgroup.cjs.entry.js +1 -1
- package/dist/cjs/br-collapse_2.cjs.entry.js +11 -7
- package/dist/cjs/br-cookiebar-cookie.cjs.entry.js +2 -2
- package/dist/cjs/br-cookiebar-group.cjs.entry.js +2 -2
- package/dist/cjs/br-cookiebar-header.cjs.entry.js +2 -2
- package/dist/cjs/br-cookiebar-link.cjs.entry.js +2 -2
- package/dist/cjs/br-cookiebar-note-group.cjs.entry.js +2 -2
- package/dist/cjs/br-cookiebar-note.cjs.entry.js +2 -2
- package/dist/cjs/br-cookiebar.cjs.entry.js +2 -2
- package/dist/cjs/br-crumb.cjs.entry.js +1 -1
- package/dist/cjs/br-date-picker_3.cjs.entry.js +869 -517
- package/dist/cjs/br-datetime-picker.cjs.entry.js +1347 -311
- package/dist/cjs/br-divider.cjs.entry.js +2 -2
- package/dist/cjs/br-dropdown_2.cjs.entry.js +282 -165
- package/dist/cjs/br-footer-category.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-item.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-legal.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-logo.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-social.cjs.entry.js +2 -2
- package/dist/cjs/br-footer.cjs.entry.js +2 -2
- package/dist/cjs/br-header-function.cjs.entry.js +2 -2
- package/dist/cjs/br-header-link.cjs.entry.js +2 -2
- package/dist/cjs/br-header-list.cjs.entry.js +2 -2
- package/dist/cjs/br-header-logo.cjs.entry.js +2 -2
- package/dist/cjs/br-header.cjs.entry.js +27 -23
- package/dist/cjs/br-icon.cjs.entry.js +4 -33
- package/dist/cjs/br-input.cjs.entry.js +31 -6
- package/dist/cjs/br-item.cjs.entry.js +5 -4
- package/dist/cjs/br-link.cjs.entry.js +2 -2
- package/dist/cjs/br-loading.cjs.entry.js +2 -2
- package/dist/cjs/br-magic-button.cjs.entry.js +21 -8
- package/dist/cjs/br-menu-group.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-header.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-info.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-item.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-link.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-list.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-logo.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-social.cjs.entry.js +2 -2
- package/dist/cjs/br-menu.cjs.entry.js +2 -2
- package/dist/cjs/br-modal.cjs.entry.js +20 -4
- package/dist/cjs/br-notification-body.cjs.entry.js +2 -2
- package/dist/cjs/br-notification-header.cjs.entry.js +2 -2
- package/dist/cjs/br-notification-item.cjs.entry.js +2 -2
- package/dist/cjs/br-notification.cjs.entry.js +2 -2
- package/dist/cjs/br-pagination.cjs.entry.js +4 -4
- package/dist/cjs/br-radio-group.cjs.entry.js +3 -3
- package/dist/cjs/br-radio.cjs.entry.js +3 -3
- package/dist/cjs/br-scrim.cjs.entry.js +2 -2
- package/dist/cjs/br-select-input_3.cjs.entry.js +286 -100
- package/dist/cjs/br-sign-in.cjs.entry.js +8 -4
- package/dist/cjs/br-skip-link-item.cjs.entry.js +1 -1
- package/dist/cjs/br-skip-link.cjs.entry.js +2 -2
- package/dist/cjs/br-skiplink-item.cjs.entry.js +2 -2
- package/dist/cjs/br-slider.cjs.entry.js +3 -3
- package/dist/cjs/br-step_2.cjs.entry.js +3 -3
- package/dist/cjs/br-switch.cjs.entry.js +3 -3
- package/dist/cjs/br-tab-item.cjs.entry.js +3 -3
- package/dist/cjs/br-tab.cjs.entry.js +38 -13
- package/dist/cjs/br-table-body.cjs.entry.js +2 -2
- package/dist/cjs/br-table-cell.cjs.entry.js +2 -2
- package/dist/cjs/br-table-header-cell.cjs.entry.js +2 -2
- package/dist/cjs/br-table-header.cjs.entry.js +2 -2
- package/dist/cjs/br-table-row.cjs.entry.js +2 -2
- package/dist/cjs/br-table.cjs.entry.js +2 -2
- package/dist/cjs/br-tag.cjs.entry.js +3 -3
- package/dist/cjs/br-textarea.cjs.entry.js +3 -3
- package/dist/cjs/br-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/br-upload.cjs.entry.js +7 -23
- package/dist/cjs/br-wizard-panel.cjs.entry.js +2 -2
- package/dist/cjs/br-wizard.cjs.entry.js +2 -2
- package/dist/cjs/{datetime-picker-constants-B5pWeOn1.js → datetime-picker-constants-CCeI5iW7.js} +20 -5
- package/dist/cjs/format-bytes-Cs8SH2w0.js +24 -0
- package/dist/cjs/icon.utils-DF6kMskA.js +46 -0
- package/dist/cjs/{index-CGgZBuyy.js → index-Bc30P_6z.js} +33 -27
- package/dist/cjs/{index-C92n55ch.js → index-C-IpVFDH.js} +13 -13
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/{datetime-picker-props-validation-DmNKSXsy.js → isValid-CduHZTFc.js} +1 -483
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/select.utils-C38f5Kea.js +62 -0
- package/dist/cjs/{validator-CTCajtT9.js → validator-GkkueMOx.js} +18 -0
- package/dist/cjs/webcomponents.cjs.js +3 -3
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/avatar/avatar.css +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
- package/dist/collection/components/button/button.css +1 -1
- package/dist/collection/components/button/button.js +8 -3
- package/dist/collection/components/card/card.css +1 -1
- package/dist/collection/components/carousel/carousel-page/carousel-page.css +1 -1
- package/dist/collection/components/carousel/carousel.css +1 -1
- package/dist/collection/components/checkbox/checkbox.css +1 -1
- package/dist/collection/components/checkbox-group/checkbox-group.css +1 -1
- package/dist/collection/components/collapse/collapse.css +1 -1
- package/dist/collection/components/collapse/collapse.js +12 -6
- package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar.css +1 -1
- package/dist/collection/components/datetime-picker/date-picker/date-picker-locale.js +12 -12
- package/dist/collection/components/datetime-picker/date-picker/date-picker-props-validation.js +14 -13
- package/dist/collection/components/datetime-picker/date-picker/date-picker.css +1 -1
- package/dist/collection/components/datetime-picker/date-picker/date-picker.js +384 -280
- package/dist/collection/components/datetime-picker/datetime-input/datetime-input-constants.js +59 -0
- package/dist/collection/components/datetime-picker/datetime-input/datetime-input-props-validation.js +19 -15
- package/dist/collection/components/datetime-picker/datetime-input/datetime-input.css +1 -1
- package/dist/collection/components/datetime-picker/datetime-input/datetime-input.js +373 -211
- package/dist/collection/components/datetime-picker/datetime-input/datetime-input.types.js +1 -0
- package/dist/collection/components/datetime-picker/datetime-picker-constants.js +19 -5
- package/dist/collection/components/datetime-picker/datetime-picker-form-associated.js +92 -11
- package/dist/collection/components/datetime-picker/datetime-picker-props-validation.js +52 -33
- package/dist/collection/components/datetime-picker/datetime-picker.css +1 -1
- package/dist/collection/components/datetime-picker/datetime-picker.js +915 -362
- package/dist/collection/components/datetime-picker/datetime-picker.utils.js +62 -49
- package/dist/collection/components/datetime-picker/time-picker/time-picker-constants.js +3 -2
- package/dist/collection/components/datetime-picker/time-picker/time-picker.css +1 -1
- package/dist/collection/components/datetime-picker/time-picker/time-picker.js +148 -85
- package/dist/collection/components/divider/divider.css +1 -1
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown/dropdown.js +32 -36
- package/dist/collection/components/footer/footer-category/footer-category.css +1 -1
- package/dist/collection/components/footer/footer-item/footer-item.css +1 -1
- package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -1
- package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -1
- package/dist/collection/components/footer/footer-social/footer-social.css +1 -1
- package/dist/collection/components/footer/footer.css +1 -1
- package/dist/collection/components/header/header-function/header-function.css +1 -1
- package/dist/collection/components/header/header-link/header-link.css +1 -1
- package/dist/collection/components/header/header-list/header-list.css +1 -1
- package/dist/collection/components/header/header-logo/header-logo.css +1 -1
- package/dist/collection/components/header/header.css +1 -1
- package/dist/collection/components/header/header.js +25 -21
- package/dist/collection/components/icon/icon.css +1 -1
- package/dist/collection/components/icon/icon.utils.js +8 -0
- package/dist/collection/components/input/input.css +1 -1
- package/dist/collection/components/input/input.js +50 -4
- package/dist/collection/components/item/item.css +1 -1
- package/dist/collection/components/item/item.js +4 -3
- package/dist/collection/components/link/link.css +1 -1
- package/dist/collection/components/list/list.css +1 -1
- package/dist/collection/components/loading/loading.css +1 -1
- package/dist/collection/components/magic-button/magic-button.css +1 -1
- package/dist/collection/components/magic-button/magic-button.js +20 -6
- package/dist/collection/components/menu/menu-group/menu-group.css +1 -1
- package/dist/collection/components/menu/menu-header/menu-header.css +1 -1
- package/dist/collection/components/menu/menu-info/menu-info.css +1 -1
- package/dist/collection/components/menu/menu-item/menu-item.css +1 -1
- package/dist/collection/components/menu/menu-link/menu-link.css +1 -1
- package/dist/collection/components/menu/menu-list/menu-list.css +1 -1
- package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -1
- package/dist/collection/components/menu/menu-social/menu-social.css +1 -1
- package/dist/collection/components/menu/menu.css +1 -1
- package/dist/collection/components/message/message.css +1 -1
- package/dist/collection/components/modal/modal.css +1 -1
- package/dist/collection/components/modal/modal.js +19 -3
- package/dist/collection/components/notification/notification-body/notification-body.css +1 -1
- package/dist/collection/components/notification/notification-header/notification-header.css +1 -1
- package/dist/collection/components/notification/notification-item/notification-item.css +1 -1
- package/dist/collection/components/notification/notification.css +1 -1
- package/dist/collection/components/pagination/pagination.css +1 -1
- package/dist/collection/components/pagination/pagination.js +4 -2
- package/dist/collection/components/radio/radio.css +1 -1
- package/dist/collection/components/radio-group/radio-group.css +1 -1
- package/dist/collection/components/scrim/scrim.css +1 -1
- package/dist/collection/components/select/select-input/select-input.css +1 -1
- package/dist/collection/components/select/select-input/select-input.js +126 -18
- package/dist/collection/components/select/select-list/select-list.css +1 -1
- package/dist/collection/components/select/select-list/select-list.js +218 -66
- package/dist/collection/components/select/select-option/select-option.css +1 -1
- package/dist/collection/components/select/select-option/select-option.js +14 -5
- package/dist/collection/components/select/select.css +1 -1
- package/dist/collection/components/select/select.js +303 -94
- package/dist/collection/components/select/select.utils.js +29 -8
- package/dist/collection/components/sign-in/sign-in.css +1 -1
- package/dist/collection/components/sign-in/sign-in.js +8 -4
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item.css +1 -1
- package/dist/collection/components/skip-link/skip-link.css +1 -1
- package/dist/collection/components/slider/slider.css +1 -1
- package/dist/collection/components/step/step-item/step-item.css +1 -1
- package/dist/collection/components/step/step.css +1 -1
- package/dist/collection/components/switch/switch.css +1 -1
- package/dist/collection/components/tab/tab-item/tab-item.css +1 -1
- package/dist/collection/components/tab/tab-item/tab-item.js +2 -2
- package/dist/collection/components/tab/tab.css +1 -1
- package/dist/collection/components/tab/tab.js +37 -10
- package/dist/collection/components/table/table-body/table-body.css +1 -1
- package/dist/collection/components/table/table-cell/table-cell.css +1 -1
- package/dist/collection/components/table/table-header/table-header.css +1 -1
- package/dist/collection/components/table/table-header-cell/table-header-cell.css +1 -1
- package/dist/collection/components/table/table-row/table-row.css +1 -1
- package/dist/collection/components/table/table.css +1 -1
- package/dist/collection/components/tag/tag.css +1 -1
- package/dist/collection/components/textarea/textarea.css +1 -1
- package/dist/collection/components/tooltip/tooltip.css +1 -1
- package/dist/collection/components/upload/upload.css +1 -1
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -1
- package/dist/collection/components/wizard/wizard.css +1 -1
- package/dist/collection/pages/components/select/remote.js +33 -0
- package/dist/collection/pages/components/select/virtualized.js +13 -0
- package/dist/collection/pages/components/upload/handler.js +25 -0
- package/dist/collection/pages/scripts/component-controls.js +15 -16
- package/dist/collection/pages/scripts/menu.js +0 -1
- package/dist/collection/pages/scripts/pageLoader.js +168 -91
- package/dist/collection/pages/scripts/pageloader-preview.js +37 -28
- package/dist/collection/shared/utils/form.js +17 -0
- package/dist/components/br-avatar.js +1 -1
- package/dist/components/br-breadcrumb-item.js +1 -1
- package/dist/components/br-breadcrumb.js +1 -1
- package/dist/components/br-button.js +1 -1
- package/dist/components/br-card.js +1 -1
- package/dist/components/br-carousel-page.js +1 -1
- package/dist/components/br-carousel.js +1 -1
- package/dist/components/br-checkbox-group.js +1 -1
- package/dist/components/br-checkbox.js +1 -1
- package/dist/components/br-checkgroup.js +1 -1
- package/dist/components/br-collapse.js +1 -1
- package/dist/components/br-cookiebar-cookie.js +1 -1
- package/dist/components/br-cookiebar-group.js +1 -1
- package/dist/components/br-cookiebar-header.js +1 -1
- package/dist/components/br-cookiebar-link.js +1 -1
- package/dist/components/br-cookiebar-note-group.js +1 -1
- package/dist/components/br-cookiebar-note.js +1 -1
- package/dist/components/br-cookiebar.js +1 -1
- package/dist/components/br-crumb.js +1 -1
- package/dist/components/br-date-picker.js +1 -1
- package/dist/components/br-datetime-input.js +1 -1
- package/dist/components/br-datetime-picker.js +1 -1
- package/dist/components/br-divider.js +1 -1
- package/dist/components/br-dropdown.js +1 -1
- package/dist/components/br-footer-category.js +1 -1
- package/dist/components/br-footer-item.js +1 -1
- package/dist/components/br-footer-legal.js +1 -1
- package/dist/components/br-footer-logo.js +1 -1
- package/dist/components/br-footer-social.js +1 -1
- package/dist/components/br-footer.js +1 -1
- package/dist/components/br-header-function.js +1 -1
- package/dist/components/br-header-link.js +1 -1
- package/dist/components/br-header-list.js +1 -1
- package/dist/components/br-header-logo.js +1 -1
- package/dist/components/br-header.js +1 -1
- package/dist/components/br-icon.js +1 -1
- package/dist/components/br-input.js +1 -1
- package/dist/components/br-item.js +1 -1
- package/dist/components/br-link.js +1 -1
- package/dist/components/br-list.js +1 -1
- package/dist/components/br-loading.js +1 -1
- package/dist/components/br-magic-button.js +1 -1
- package/dist/components/br-menu-group.js +1 -1
- package/dist/components/br-menu-header.js +1 -1
- package/dist/components/br-menu-info.js +1 -1
- package/dist/components/br-menu-item.js +1 -1
- package/dist/components/br-menu-link.js +1 -1
- package/dist/components/br-menu-list.js +1 -1
- package/dist/components/br-menu-logo.js +1 -1
- package/dist/components/br-menu-social.js +1 -1
- package/dist/components/br-menu.js +1 -1
- package/dist/components/br-message.js +1 -1
- package/dist/components/br-modal.js +1 -1
- package/dist/components/br-notification-body.js +1 -1
- package/dist/components/br-notification-header.js +1 -1
- package/dist/components/br-notification-item.js +1 -1
- package/dist/components/br-notification.js +1 -1
- package/dist/components/br-pagination.js +1 -1
- package/dist/components/br-radio-group.js +1 -1
- package/dist/components/br-radio.js +1 -1
- package/dist/components/br-scrim.js +1 -1
- package/dist/components/br-select-input.js +1 -1
- package/dist/components/br-select-list.js +1 -1
- package/dist/components/br-select-option.js +1 -1
- package/dist/components/br-select.js +1 -1
- package/dist/components/br-sign-in.js +1 -1
- package/dist/components/br-skip-link-item.js +1 -1
- package/dist/components/br-skip-link.js +1 -1
- package/dist/components/br-skiplink-item.js +1 -1
- package/dist/components/br-slider.js +1 -1
- package/dist/components/br-step-item.js +1 -1
- package/dist/components/br-step.js +1 -1
- package/dist/components/br-switch.js +1 -1
- package/dist/components/br-tab-item.js +1 -1
- package/dist/components/br-tab.js +1 -1
- package/dist/components/br-table-body.js +1 -1
- package/dist/components/br-table-cell.js +1 -1
- package/dist/components/br-table-header-cell.js +1 -1
- package/dist/components/br-table-header.js +1 -1
- package/dist/components/br-table-row.js +1 -1
- package/dist/components/br-table.js +1 -1
- package/dist/components/br-tag.js +1 -1
- package/dist/components/br-textarea.js +1 -1
- package/dist/components/br-time-picker.js +1 -1
- package/dist/components/br-tooltip.js +1 -1
- package/dist/components/br-upload.js +1 -1
- package/dist/components/br-wizard-panel.js +1 -1
- package/dist/components/br-wizard.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/p-5h-W9_JR.js +5 -0
- package/dist/components/p-848QkYoM.js +5 -0
- package/dist/components/p-B7bNfmgh.js +5 -0
- package/dist/components/p-BFHvuEnN.js +5 -0
- package/dist/components/p-BH6QYnAr.js +5 -0
- package/dist/{webcomponents/p-6c2fe5e4.entry.js → components/p-BcW8O6h2.js} +1 -1
- package/dist/components/p-BicHMcSS.js +5 -0
- package/dist/components/p-Bs7iRQTG.js +5 -0
- package/dist/components/{p-DSHbttu9.js → p-Bvrw9yWR.js} +1 -1
- package/dist/components/p-BzQFMh9j.js +5 -0
- package/dist/components/p-CBHd0-fF.js +5 -0
- package/dist/components/p-CCPHCJjw.js +5 -0
- package/dist/components/p-CDTENPaP.js +5 -0
- package/dist/components/{p-BcqVlof7.js → p-CbgKdASU.js} +1 -1
- package/dist/components/p-CeNELttN.js +5 -0
- package/dist/components/p-CjtmJTLO.js +5 -0
- package/dist/components/{p-DTGNra9m.js → p-D-3G3Ioq.js} +1 -1
- package/dist/components/p-DDu3JV_r.js +5 -0
- package/dist/components/p-DFWqyfUe.js +5 -0
- package/dist/components/p-DL6xuxGG.js +5 -0
- package/dist/components/p-DOX9Uwk1.js +5 -0
- package/dist/components/p-DUq7uT2-.js +5 -0
- package/dist/components/p-Devw08cc.js +5 -0
- package/dist/components/p-Di96UxvH.js +5 -0
- package/dist/components/p-Dp3MsSXu.js +5 -0
- package/dist/components/p-DsO4F0Cz.js +5 -0
- package/dist/components/p-DuLHFTpa.js +5 -0
- package/dist/components/p-DusornQ0.js +5 -0
- package/dist/components/{p-Dma14GVa.js → p-Jk_KQE5V.js} +1 -1
- package/dist/components/p-OQpiDEK9.js +5 -0
- package/dist/components/p-PV731d8s.js +5 -0
- package/dist/components/p-XW6Hp_Jk.js +5 -0
- package/dist/components/p-jOb1hCPi.js +5 -0
- package/dist/components/p-rMnkh3Cy.js +5 -0
- package/dist/components/p-ta-24T1Z.js +5 -0
- package/dist/esm/br-avatar.entry.js +2 -2
- package/dist/esm/br-breadcrumb-item.entry.js +1 -1
- package/dist/esm/br-breadcrumb.entry.js +2 -2
- package/dist/esm/br-button_2.entry.js +10 -5
- package/dist/esm/br-card.entry.js +2 -2
- package/dist/esm/br-carousel-page.entry.js +2 -2
- package/dist/esm/br-carousel.entry.js +3 -3
- package/dist/esm/br-checkbox-group.entry.js +2 -2
- package/dist/esm/br-checkbox.entry.js +4 -4
- package/dist/esm/br-checkgroup.entry.js +1 -1
- package/dist/esm/br-collapse_2.entry.js +12 -8
- package/dist/esm/br-cookiebar-cookie.entry.js +2 -2
- package/dist/esm/br-cookiebar-group.entry.js +2 -2
- package/dist/esm/br-cookiebar-header.entry.js +2 -2
- package/dist/esm/br-cookiebar-link.entry.js +2 -2
- package/dist/esm/br-cookiebar-note-group.entry.js +2 -2
- package/dist/esm/br-cookiebar-note.entry.js +2 -2
- package/dist/esm/br-cookiebar.entry.js +3 -3
- package/dist/esm/br-crumb.entry.js +1 -1
- package/dist/esm/br-date-picker_3.entry.js +844 -492
- package/dist/esm/br-datetime-picker.entry.js +1316 -280
- package/dist/esm/br-divider.entry.js +2 -2
- package/dist/esm/br-dropdown_2.entry.js +281 -164
- package/dist/esm/br-footer-category.entry.js +2 -2
- package/dist/esm/br-footer-item.entry.js +2 -2
- package/dist/esm/br-footer-legal.entry.js +2 -2
- package/dist/esm/br-footer-logo.entry.js +2 -2
- package/dist/esm/br-footer-social.entry.js +2 -2
- package/dist/esm/br-footer.entry.js +2 -2
- package/dist/esm/br-header-function.entry.js +2 -2
- package/dist/esm/br-header-link.entry.js +2 -2
- package/dist/esm/br-header-list.entry.js +3 -3
- package/dist/esm/br-header-logo.entry.js +2 -2
- package/dist/esm/br-header.entry.js +27 -23
- package/dist/esm/br-icon.entry.js +3 -32
- package/dist/esm/br-input.entry.js +32 -7
- package/dist/esm/br-item.entry.js +5 -4
- package/dist/esm/br-link.entry.js +2 -2
- package/dist/esm/br-loading.entry.js +2 -2
- package/dist/esm/br-magic-button.entry.js +21 -8
- package/dist/esm/br-menu-group.entry.js +2 -2
- package/dist/esm/br-menu-header.entry.js +2 -2
- package/dist/esm/br-menu-info.entry.js +2 -2
- package/dist/esm/br-menu-item.entry.js +2 -2
- package/dist/esm/br-menu-link.entry.js +2 -2
- package/dist/esm/br-menu-list.entry.js +2 -2
- package/dist/esm/br-menu-logo.entry.js +2 -2
- package/dist/esm/br-menu-social.entry.js +2 -2
- package/dist/esm/br-menu.entry.js +3 -3
- package/dist/esm/br-modal.entry.js +21 -5
- package/dist/esm/br-notification-body.entry.js +2 -2
- package/dist/esm/br-notification-header.entry.js +2 -2
- package/dist/esm/br-notification-item.entry.js +2 -2
- package/dist/esm/br-notification.entry.js +3 -3
- package/dist/esm/br-pagination.entry.js +4 -4
- package/dist/esm/br-radio-group.entry.js +4 -4
- package/dist/esm/br-radio.entry.js +4 -4
- package/dist/esm/br-scrim.entry.js +2 -2
- package/dist/esm/br-select-input_3.entry.js +286 -100
- package/dist/esm/br-sign-in.entry.js +8 -4
- package/dist/esm/br-skip-link-item.entry.js +1 -1
- package/dist/esm/br-skip-link.entry.js +2 -2
- package/dist/esm/br-skiplink-item.entry.js +2 -2
- package/dist/esm/br-slider.entry.js +4 -4
- package/dist/esm/br-step_2.entry.js +3 -3
- package/dist/esm/br-switch.entry.js +4 -4
- package/dist/esm/br-tab-item.entry.js +3 -3
- package/dist/esm/br-tab.entry.js +38 -13
- package/dist/esm/br-table-body.entry.js +2 -2
- package/dist/esm/br-table-cell.entry.js +2 -2
- package/dist/esm/br-table-header-cell.entry.js +2 -2
- package/dist/esm/br-table-header.entry.js +2 -2
- package/dist/esm/br-table-row.entry.js +2 -2
- package/dist/esm/br-table.entry.js +2 -2
- package/dist/esm/br-tag.entry.js +4 -4
- package/dist/esm/br-textarea.entry.js +4 -4
- package/dist/esm/br-tooltip.entry.js +3 -3
- package/dist/esm/br-upload.entry.js +5 -21
- package/dist/esm/br-wizard-panel.entry.js +2 -2
- package/dist/esm/br-wizard.entry.js +2 -2
- package/dist/esm/{datetime-picker-constants-BtRPYRvA.js → datetime-picker-constants-DDc4sADe.js} +20 -6
- package/dist/esm/{event-CfuJQ1DY.js → event-6Da1SZ3J.js} +1 -1
- package/dist/esm/format-bytes-B7bNfmgh.js +22 -0
- package/dist/esm/icon.utils-zlORkiHQ.js +43 -0
- package/dist/esm/{index-Dcn7tRST.js → index-ConyRdJe.js} +33 -27
- package/dist/esm/{index-BQPOWxe5.js → index-CytVKoHT.js} +13 -13
- package/dist/esm/index.js +2 -2
- package/dist/esm/{datetime-picker-props-validation-BeTcUTnE.js → isValid-Bee0Uvqc.js} +2 -477
- package/dist/esm/loader.js +3 -3
- package/dist/esm/select.utils-BYsh2ZdE.js +57 -0
- package/dist/esm/{validator-D3tVP32U.js → validator-BkWWrDEr.js} +18 -1
- package/dist/esm/webcomponents.js +4 -4
- package/dist/hydrate/index.js +3314 -1806
- package/dist/hydrate/index.mjs +3314 -1806
- package/dist/types/components/button/button.d.ts +2 -1
- package/dist/types/components/collapse/collapse.d.ts +6 -2
- package/dist/types/components/datetime-picker/date-picker/date-picker-locale.d.ts +9 -9
- package/dist/types/components/datetime-picker/date-picker/date-picker-props-validation.d.ts +14 -13
- package/dist/types/components/datetime-picker/date-picker/date-picker.d.ts +264 -161
- package/dist/types/components/datetime-picker/datetime-input/datetime-input-constants.d.ts +14 -0
- package/dist/types/components/datetime-picker/datetime-input/datetime-input-props-validation.d.ts +19 -15
- package/dist/types/components/datetime-picker/datetime-input/datetime-input.d.ts +229 -98
- package/dist/types/components/datetime-picker/datetime-input/datetime-input.types.d.ts +36 -0
- package/dist/types/components/datetime-picker/datetime-picker-constants.d.ts +19 -5
- package/dist/types/components/datetime-picker/datetime-picker-form-associated.d.ts +32 -5
- package/dist/types/components/datetime-picker/datetime-picker-props-validation.d.ts +22 -24
- package/dist/types/components/datetime-picker/datetime-picker.d.ts +508 -235
- package/dist/types/components/datetime-picker/datetime-picker.types.d.ts +75 -21
- package/dist/types/components/datetime-picker/datetime-picker.utils.d.ts +53 -47
- package/dist/types/components/datetime-picker/time-picker/time-picker-constants.d.ts +3 -2
- package/dist/types/components/datetime-picker/time-picker/time-picker.d.ts +126 -55
- package/dist/types/components/dropdown/dropdown.d.ts +12 -4
- package/dist/types/components/header/header.d.ts +2 -0
- package/dist/types/components/icon/icon.utils.d.ts +6 -0
- package/dist/types/components/input/input.d.ts +18 -1
- package/dist/types/components/input/input.types.d.ts +4 -0
- package/dist/types/components/item/item.d.ts +6 -1
- package/dist/types/components/magic-button/magic-button.d.ts +7 -3
- package/dist/types/components/modal/modal.d.ts +6 -0
- package/dist/types/components/pagination/pagination.d.ts +2 -0
- package/dist/types/components/select/select-input/select-input.d.ts +9 -2
- package/dist/types/components/select/select-list/select-list.d.ts +14 -2
- package/dist/types/components/select/select-option/select-option.d.ts +1 -0
- package/dist/types/components/select/select.d.ts +47 -7
- package/dist/types/components/select/select.types.d.ts +12 -0
- package/dist/types/components/select/select.utils.d.ts +3 -0
- package/dist/types/components/sign-in/sign-in.d.ts +3 -2
- package/dist/types/components/tab/tab-item/tab-item.d.ts +6 -2
- package/dist/types/components/tab/tab.d.ts +7 -0
- package/dist/types/components.d.ts +405 -318
- package/dist/types/shared/utils/form.d.ts +8 -0
- package/dist/types/stencil-public-runtime.d.ts +61 -55
- package/dist/webcomponents/index.esm.js +1 -1
- package/dist/webcomponents/p-01801ac1.entry.js +5 -0
- package/dist/webcomponents/p-05b459f2.entry.js +5 -0
- package/dist/webcomponents/p-08ac6f09.entry.js +5 -0
- package/dist/webcomponents/{p-cff24492.entry.js → p-09817344.entry.js} +1 -1
- package/dist/webcomponents/p-09c79c1d.entry.js +5 -0
- package/dist/webcomponents/p-0fc112fc.entry.js +5 -0
- package/dist/webcomponents/p-13babfc4.entry.js +5 -0
- package/dist/webcomponents/p-15022ab7.entry.js +5 -0
- package/dist/webcomponents/p-172d42c2.entry.js +5 -0
- package/dist/webcomponents/p-18cf093a.entry.js +5 -0
- package/dist/webcomponents/p-198aa844.entry.js +5 -0
- package/dist/webcomponents/p-1ba60d13.entry.js +5 -0
- package/dist/webcomponents/p-1bb96641.entry.js +5 -0
- package/dist/webcomponents/{p-7acf20d3.entry.js → p-20477061.entry.js} +1 -1
- package/dist/webcomponents/p-21feda62.entry.js +5 -0
- package/dist/webcomponents/p-23a5cfd7.entry.js +5 -0
- package/dist/webcomponents/{p-030c02f8.entry.js → p-2c8595d3.entry.js} +1 -1
- package/dist/webcomponents/{p-09770c98.entry.js → p-31a4694a.entry.js} +1 -1
- package/dist/webcomponents/p-32ea6342.entry.js +5 -0
- package/dist/webcomponents/p-3658adcf.entry.js +5 -0
- package/dist/webcomponents/p-37914e63.entry.js +5 -0
- package/dist/webcomponents/p-3b0dd0ff.entry.js +5 -0
- package/dist/webcomponents/p-42b60169.entry.js +5 -0
- package/dist/webcomponents/p-42c9c6c5.entry.js +5 -0
- package/dist/{components/p-SvVnvJdC.js → webcomponents/p-473561f2.entry.js} +1 -1
- package/dist/webcomponents/p-47c490ef.entry.js +5 -0
- package/dist/webcomponents/p-4b01c60f.entry.js +5 -0
- package/dist/webcomponents/p-5a5ed7d8.entry.js +5 -0
- package/dist/webcomponents/{p-c8b7bbab.entry.js → p-5a7c2031.entry.js} +1 -1
- package/dist/webcomponents/p-609cf652.entry.js +5 -0
- package/dist/webcomponents/p-614683d9.entry.js +5 -0
- package/dist/webcomponents/p-67605757.entry.js +5 -0
- package/dist/{components/p-CppRJiyC.js → webcomponents/p-67774920.entry.js} +1 -1
- package/dist/webcomponents/p-67d62559.entry.js +5 -0
- package/dist/webcomponents/p-695dbeb0.entry.js +5 -0
- package/dist/webcomponents/{p-CfuJQ1DY.js → p-6Da1SZ3J.js} +1 -1
- package/dist/webcomponents/p-6a293be8.entry.js +5 -0
- package/dist/webcomponents/{p-03359c92.entry.js → p-6f1a4fbe.entry.js} +1 -1
- package/dist/webcomponents/p-7352d459.entry.js +5 -0
- package/dist/webcomponents/p-745213f7.entry.js +5 -0
- package/dist/webcomponents/p-794b701b.entry.js +5 -0
- package/dist/webcomponents/{p-d826c052.entry.js → p-7ee564a1.entry.js} +1 -1
- package/dist/webcomponents/{p-e20188c0.entry.js → p-7fda8b89.entry.js} +1 -1
- package/dist/webcomponents/p-8116ee93.entry.js +5 -0
- package/dist/webcomponents/p-821341dc.entry.js +5 -0
- package/dist/webcomponents/p-8aa6f07c.entry.js +5 -0
- package/dist/webcomponents/p-8ddf3ce3.entry.js +5 -0
- package/dist/webcomponents/p-95f3c44a.entry.js +5 -0
- package/dist/webcomponents/p-96dbb585.entry.js +5 -0
- package/dist/webcomponents/p-9815ab95.entry.js +5 -0
- package/dist/webcomponents/{p-327f034f.entry.js → p-9e0324a7.entry.js} +1 -1
- package/dist/webcomponents/p-B7bNfmgh.js +5 -0
- package/dist/webcomponents/p-BYsh2ZdE.js +5 -0
- package/dist/webcomponents/p-BkWWrDEr.js +5 -0
- package/dist/webcomponents/p-CJipT0in.js +5 -0
- package/dist/webcomponents/{p-Dcn7tRST.js → p-ConyRdJe.js} +1 -1
- package/dist/webcomponents/{p-BtRPYRvA.js → p-DDc4sADe.js} +1 -1
- package/dist/webcomponents/p-a038be16.entry.js +5 -0
- package/dist/webcomponents/p-a32d17cb.entry.js +5 -0
- package/dist/webcomponents/p-a46f068e.entry.js +5 -0
- package/dist/webcomponents/p-a89b684d.entry.js +5 -0
- package/dist/webcomponents/{p-abaf2365.entry.js → p-ac68355e.entry.js} +1 -1
- package/dist/webcomponents/{p-ed5af0e4.entry.js → p-af888d13.entry.js} +1 -1
- package/dist/webcomponents/p-b0124459.entry.js +5 -0
- package/dist/webcomponents/p-b063c12f.entry.js +5 -0
- package/dist/webcomponents/p-b07bfdc5.entry.js +5 -0
- package/dist/webcomponents/{p-f558d7b9.entry.js → p-b55425b7.entry.js} +1 -1
- package/dist/webcomponents/{p-a0931550.entry.js → p-b5d25332.entry.js} +1 -1
- package/dist/webcomponents/p-b609b464.entry.js +5 -0
- package/dist/webcomponents/p-b66ab52d.entry.js +5 -0
- package/dist/webcomponents/p-b8d4ace3.entry.js +5 -0
- package/dist/webcomponents/p-c717c745.entry.js +5 -0
- package/dist/webcomponents/p-ce3d689c.entry.js +5 -0
- package/dist/webcomponents/p-d08b6266.entry.js +5 -0
- package/dist/webcomponents/p-d6165aa0.entry.js +5 -0
- package/dist/webcomponents/{p-01fb0754.entry.js → p-dacb7e2c.entry.js} +1 -1
- package/dist/webcomponents/p-db309a11.entry.js +5 -0
- package/dist/webcomponents/{p-edc6da0e.entry.js → p-dc23cb2e.entry.js} +1 -1
- package/dist/webcomponents/p-e241caf3.entry.js +5 -0
- package/dist/webcomponents/p-e661c024.entry.js +5 -0
- package/dist/webcomponents/p-e7107869.entry.js +5 -0
- package/dist/webcomponents/p-eb94199d.entry.js +5 -0
- package/dist/webcomponents/p-f8993ae4.entry.js +5 -0
- package/dist/webcomponents/{p-670e8fec.entry.js → p-f99d8c9c.entry.js} +1 -1
- package/dist/webcomponents/{p-DV-iW9Aj.js → p-fOJu6uZR.js} +1 -1
- package/dist/webcomponents/{p-a212fd85.entry.js → p-fb76b1e0.entry.js} +1 -1
- package/dist/webcomponents/p-fdcb54a3.entry.js +5 -0
- package/dist/webcomponents/{p-e3de5bb3.entry.js → p-fed02286.entry.js} +1 -1
- package/dist/webcomponents/p-zlORkiHQ.js +5 -0
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/package.json +2 -2
- package/dist/components/p-B0o70fWP.js +0 -5
- package/dist/components/p-B96LROz9.js +0 -5
- package/dist/components/p-BDqef5-y.js +0 -5
- package/dist/components/p-BP5zMCxG.js +0 -5
- package/dist/components/p-BRaphxoP.js +0 -5
- package/dist/components/p-BUzBa9L1.js +0 -5
- package/dist/components/p-BblZlUp2.js +0 -5
- package/dist/components/p-Bc4nAk5i.js +0 -5
- package/dist/components/p-Bezou5CQ.js +0 -5
- package/dist/components/p-BrNh9KdF.js +0 -5
- package/dist/components/p-C5th2dxu.js +0 -5
- package/dist/components/p-CEdUp183.js +0 -5
- package/dist/components/p-CF7t0uxQ.js +0 -5
- package/dist/components/p-CFzHx6zV.js +0 -5
- package/dist/components/p-CG4em0S6.js +0 -5
- package/dist/components/p-CI4D3-pf.js +0 -5
- package/dist/components/p-CIrVPkVg.js +0 -5
- package/dist/components/p-CdDwqbBv.js +0 -5
- package/dist/components/p-Cvk1Ggs5.js +0 -5
- package/dist/components/p-D12US39c.js +0 -5
- package/dist/components/p-DGPJkJsj.js +0 -5
- package/dist/components/p-DX1wAFn4.js +0 -5
- package/dist/components/p-DpRZ4B0d.js +0 -5
- package/dist/components/p-G35qEQZd.js +0 -5
- package/dist/components/p-Ho_IybzR.js +0 -5
- package/dist/components/p-emAWunES.js +0 -5
- package/dist/components/p-fB79wKCm.js +0 -5
- package/dist/components/p-k7p4QJ8a.js +0 -5
- package/dist/webcomponents/p-01baafce.entry.js +0 -5
- package/dist/webcomponents/p-0b9714f1.entry.js +0 -5
- package/dist/webcomponents/p-12aa36a8.entry.js +0 -5
- package/dist/webcomponents/p-130b6e06.entry.js +0 -5
- package/dist/webcomponents/p-144f8c8d.entry.js +0 -5
- package/dist/webcomponents/p-14fe22e2.entry.js +0 -5
- package/dist/webcomponents/p-1ff9210a.entry.js +0 -5
- package/dist/webcomponents/p-2605cdc3.entry.js +0 -5
- package/dist/webcomponents/p-27afaec9.entry.js +0 -5
- package/dist/webcomponents/p-2a50e42d.entry.js +0 -5
- package/dist/webcomponents/p-342650b8.entry.js +0 -5
- package/dist/webcomponents/p-38f6a78b.entry.js +0 -5
- package/dist/webcomponents/p-3920fe3a.entry.js +0 -5
- package/dist/webcomponents/p-3ae97345.entry.js +0 -5
- package/dist/webcomponents/p-3cce767c.entry.js +0 -5
- package/dist/webcomponents/p-3df6c5d2.entry.js +0 -5
- package/dist/webcomponents/p-3e287899.entry.js +0 -5
- package/dist/webcomponents/p-3e5580ba.entry.js +0 -5
- package/dist/webcomponents/p-403637dd.entry.js +0 -5
- package/dist/webcomponents/p-435c8ef2.entry.js +0 -5
- package/dist/webcomponents/p-59da5b55.entry.js +0 -5
- package/dist/webcomponents/p-5dd4314c.entry.js +0 -5
- package/dist/webcomponents/p-646af6a5.entry.js +0 -5
- package/dist/webcomponents/p-68046544.entry.js +0 -5
- package/dist/webcomponents/p-68ec76b8.entry.js +0 -5
- package/dist/webcomponents/p-6c0ea20c.entry.js +0 -5
- package/dist/webcomponents/p-707df9b9.entry.js +0 -5
- package/dist/webcomponents/p-72b839fe.entry.js +0 -5
- package/dist/webcomponents/p-73dcc05b.entry.js +0 -5
- package/dist/webcomponents/p-7b01bddb.entry.js +0 -5
- package/dist/webcomponents/p-7cd38850.entry.js +0 -5
- package/dist/webcomponents/p-82454383.entry.js +0 -5
- package/dist/webcomponents/p-91e959a8.entry.js +0 -5
- package/dist/webcomponents/p-964c01e6.entry.js +0 -5
- package/dist/webcomponents/p-9858e42a.entry.js +0 -5
- package/dist/webcomponents/p-9c4200b0.entry.js +0 -5
- package/dist/webcomponents/p-9d9c87b1.entry.js +0 -5
- package/dist/webcomponents/p-B0PbhaxL.js +0 -5
- package/dist/webcomponents/p-D3tVP32U.js +0 -5
- package/dist/webcomponents/p-a2e75143.entry.js +0 -5
- package/dist/webcomponents/p-a3bb98c9.entry.js +0 -5
- package/dist/webcomponents/p-a8b5dba0.entry.js +0 -5
- package/dist/webcomponents/p-aa909443.entry.js +0 -5
- package/dist/webcomponents/p-aeb16645.entry.js +0 -5
- package/dist/webcomponents/p-b287c384.entry.js +0 -5
- package/dist/webcomponents/p-b506b0a1.entry.js +0 -5
- package/dist/webcomponents/p-b520c08c.entry.js +0 -5
- package/dist/webcomponents/p-b94c3f84.entry.js +0 -5
- package/dist/webcomponents/p-bda62f90.entry.js +0 -5
- package/dist/webcomponents/p-c201ae16.entry.js +0 -5
- package/dist/webcomponents/p-c7e899a1.entry.js +0 -5
- package/dist/webcomponents/p-cbf3e251.entry.js +0 -5
- package/dist/webcomponents/p-d35cf5b4.entry.js +0 -5
- package/dist/webcomponents/p-d45ffe9c.entry.js +0 -5
- package/dist/webcomponents/p-d719a4af.entry.js +0 -5
- package/dist/webcomponents/p-da21a60d.entry.js +0 -5
- package/dist/webcomponents/p-de0c7f26.entry.js +0 -5
- package/dist/webcomponents/p-e27882e1.entry.js +0 -5
- package/dist/webcomponents/p-e624ff04.entry.js +0 -5
- package/dist/webcomponents/p-f24fcf3d.entry.js +0 -5
- package/dist/webcomponents/p-f52ef0dc.entry.js +0 -5
- package/dist/webcomponents/p-fcab1428.entry.js +0 -5
- package/dist/webcomponents/p-fe1729a7.entry.js +0 -5
|
@@ -127,25 +127,7 @@ function getBaseUrl() {
|
|
|
127
127
|
return baseUrl === '' ? '' : baseUrl;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
function
|
|
131
|
-
if (typeof script !== 'string' || !/\.js$/i.test(script)) return '';
|
|
132
|
-
|
|
133
|
-
const componentSegments = String(path).replaceAll('\\', '/').split('/').filter(Boolean);
|
|
134
|
-
const scriptSegments = script.replaceAll('\\', '/').split('/');
|
|
135
|
-
if (
|
|
136
|
-
componentSegments.length === 0 ||
|
|
137
|
-
scriptSegments.some((segment) => !segment || segment === '.' || segment === '..')
|
|
138
|
-
) {
|
|
139
|
-
return '';
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const relativePath = [...componentSegments, ...scriptSegments].map(encodeURIComponent).join('/');
|
|
143
|
-
const scriptUrl = new URL(`${getBaseUrl()}/pages/components/${relativePath}`, window.location.href);
|
|
144
|
-
scriptUrl.searchParams.set('preview-version', String(Date.now()));
|
|
145
|
-
return scriptUrl.href;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function createExampleElement(path, file, text, presets = [], defaultPreset = '', exampleLabel = '', baseScript = '') {
|
|
130
|
+
function createExampleElement(path, file, text, presets = [], defaultPreset = '', exampleLabel = '') {
|
|
149
131
|
text = stripDevServerConnector(text);
|
|
150
132
|
const contentDiv = document.createElement('br-item');
|
|
151
133
|
contentDiv.classList.add('file', 'wbc-example');
|
|
@@ -177,42 +159,60 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
177
159
|
const editorContainer = document.createElement('div');
|
|
178
160
|
editorContainer.className = 'wbc-example-editor-container';
|
|
179
161
|
|
|
162
|
+
// Ids nativos das abas, com o escopo do exemplo para não duplicar ids entre exemplos da página.
|
|
163
|
+
const tabIds = Object.fromEntries(
|
|
164
|
+
['code', 'events', 'controls', 'a11y', 'javascript', 'css', 'angular', 'react', 'vue'].map((name) => [
|
|
165
|
+
name,
|
|
166
|
+
`${controlsScope}-${name}-tab`,
|
|
167
|
+
]),
|
|
168
|
+
);
|
|
180
169
|
const tabComponent = document.createElement('br-tab');
|
|
181
170
|
tabComponent.setAttribute('density', 'small');
|
|
182
|
-
|
|
171
|
+
// Ícones por classe (Font Awesome) em light DOM, pelo slot `icon-{id}` do br-tab.
|
|
172
|
+
const setTabIcon = (tabItem, iconClass) => {
|
|
173
|
+
const icon = document.createElement('i');
|
|
174
|
+
icon.slot = `icon-${tabItem.id}`;
|
|
175
|
+
icon.className = iconClass;
|
|
176
|
+
icon.setAttribute('aria-hidden', 'true');
|
|
177
|
+
tabComponent.appendChild(icon);
|
|
178
|
+
};
|
|
179
|
+
tabComponent.setAttribute('active-tab-id', tabIds.code);
|
|
183
180
|
tabComponent.setAttribute('data-playground-badges', '');
|
|
184
181
|
|
|
185
182
|
const codeTabItem = document.createElement('br-tab-item');
|
|
186
183
|
codeTabItem.setAttribute('label', 'HTML');
|
|
187
|
-
codeTabItem.setAttribute('icon', 'fab fa-html5');
|
|
188
184
|
codeTabItem.setAttribute('icon-only', 'true');
|
|
189
185
|
codeTabItem.setAttribute('title', 'Editor HTML');
|
|
190
|
-
codeTabItem.
|
|
186
|
+
codeTabItem.id = tabIds.code;
|
|
191
187
|
codeTabItem.setAttribute('active', 'true');
|
|
192
|
-
codeTabItem.setAttribute('is-active', 'true');
|
|
193
188
|
|
|
194
189
|
const eventsTabItem = document.createElement('br-tab-item');
|
|
195
190
|
eventsTabItem.setAttribute('label', 'Console');
|
|
196
|
-
eventsTabItem.setAttribute('icon', 'fas fa-terminal');
|
|
197
191
|
eventsTabItem.setAttribute('icon-only', 'true');
|
|
198
192
|
eventsTabItem.setAttribute('title', 'Console: eventos e mensagens de runtime');
|
|
199
|
-
eventsTabItem.
|
|
193
|
+
eventsTabItem.id = tabIds.events;
|
|
200
194
|
|
|
201
195
|
const controlsTabItem = document.createElement('br-tab-item');
|
|
202
196
|
controlsTabItem.setAttribute('label', 'Controles');
|
|
203
|
-
controlsTabItem.setAttribute('icon', 'fas fa-sliders-h');
|
|
204
197
|
controlsTabItem.setAttribute('icon-only', 'true');
|
|
205
198
|
controlsTabItem.setAttribute('title', 'Controles do componente');
|
|
206
|
-
controlsTabItem.
|
|
199
|
+
controlsTabItem.id = tabIds.controls;
|
|
207
200
|
|
|
208
|
-
const javascriptTabItem = createFrameworkTab('JS', 'fab fa-js',
|
|
201
|
+
const javascriptTabItem = createFrameworkTab('JS', 'fab fa-js', tabIds.javascript, text, 'javascript', {
|
|
209
202
|
editable: true,
|
|
210
203
|
});
|
|
211
|
-
const cssTabItem = createFrameworkTab('CSS', 'fab fa-css3-alt',
|
|
212
|
-
const angularTabItem = createFrameworkTab('Angular', 'fab fa-angular',
|
|
213
|
-
const reactTabItem = createFrameworkTab('React', 'fab fa-react',
|
|
214
|
-
const vueTabItem = createFrameworkTab('Vue', 'fab fa-vuejs',
|
|
204
|
+
const cssTabItem = createFrameworkTab('CSS', 'fab fa-css3-alt', tabIds.css, text, 'css', { editable: true });
|
|
205
|
+
const angularTabItem = createFrameworkTab('Angular', 'fab fa-angular', tabIds.angular, text, 'angular');
|
|
206
|
+
const reactTabItem = createFrameworkTab('React', 'fab fa-react', tabIds.react, text, 'react');
|
|
207
|
+
const vueTabItem = createFrameworkTab('Vue', 'fab fa-vuejs', tabIds.vue, text, 'vue');
|
|
215
208
|
const frameworkTabItems = [javascriptTabItem, cssTabItem, angularTabItem, reactTabItem, vueTabItem];
|
|
209
|
+
// Depois de os ids estarem definidos: o nome do slot depende do id da aba.
|
|
210
|
+
setTabIcon(codeTabItem, 'fab fa-html5');
|
|
211
|
+
setTabIcon(eventsTabItem, 'fas fa-terminal');
|
|
212
|
+
setTabIcon(controlsTabItem, 'fas fa-sliders-h');
|
|
213
|
+
frameworkTabItems.forEach((tab) => {
|
|
214
|
+
setTabIcon(tab, tab.dataset.icon);
|
|
215
|
+
});
|
|
216
216
|
const frameworkEditors = new Map();
|
|
217
217
|
const refreshFrameworkEditors = () => {
|
|
218
218
|
requestAnimationFrame(() => {
|
|
@@ -327,7 +327,10 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
327
327
|
let overflowRedo;
|
|
328
328
|
let overflowDiff;
|
|
329
329
|
let editorApi = null;
|
|
330
|
-
|
|
330
|
+
// O editor é compartilhado pelas abas index.html/index.css/index.js; fora da
|
|
331
|
+
// aba HTML, o HTML vigente é o último valor aplicado.
|
|
332
|
+
const getEditorValue = () =>
|
|
333
|
+
activeVanillaFile === 'html' ? (editorApi?.getValue() ?? editorState.value) : editorState.value;
|
|
331
334
|
const refreshEditor = () => {
|
|
332
335
|
requestAnimationFrame(() => requestAnimationFrame(() => editorApi?.refresh?.()));
|
|
333
336
|
};
|
|
@@ -387,8 +390,13 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
387
390
|
presets.find(({ id, source }) => id === defaultPreset && Boolean(source)) ??
|
|
388
391
|
presets.find(({ source }) => Boolean(source));
|
|
389
392
|
const initialPresetId = initialPreset?.id || '';
|
|
390
|
-
const
|
|
391
|
-
|
|
393
|
+
const getPresetCss = (preset) => preset?.css || getFrameworkCode(editorState.value, 'css');
|
|
394
|
+
const getPresetJavascript = (preset) => preset?.javascript || '';
|
|
395
|
+
// Link compartilhado > rascunho local > arquivos do preset. O estado da URL não é confiável.
|
|
396
|
+
const sharedState = getSharedExampleState(path, file);
|
|
397
|
+
const pickSource = (...values) => values.find((value) => typeof value === 'string');
|
|
398
|
+
vanillaSources.css = pickSource(sharedState?.c, activeDraft?.css, getPresetCss(initialPreset));
|
|
399
|
+
vanillaSources.javascript = pickSource(sharedState?.j, activeDraft?.javascript, getPresetJavascript(initialPreset));
|
|
392
400
|
presetOptions.forEach(({ id, label, source }) => {
|
|
393
401
|
const option = document.createElement('br-select-option');
|
|
394
402
|
option.value = id;
|
|
@@ -399,6 +407,33 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
399
407
|
presetSelect.appendChild(option);
|
|
400
408
|
});
|
|
401
409
|
presetSelect.value = initialPresetId;
|
|
410
|
+
|
|
411
|
+
// Descrição do preset: linha de largura total entre o cabeçalho e o preview e, se houver,
|
|
412
|
+
// a explicação detalhada em <details>, recolhida a cada troca de preset. O parágrafo é uma
|
|
413
|
+
// região viva, então a troca é anunciada.
|
|
414
|
+
const presetDescription = document.createElement('div');
|
|
415
|
+
presetDescription.className = 'wbc-example-preset-description';
|
|
416
|
+
presetDescription.hidden = true;
|
|
417
|
+
const presetDescriptionText = document.createElement('p');
|
|
418
|
+
presetDescriptionText.className = 'wbc-example-preset-description__text';
|
|
419
|
+
presetDescriptionText.setAttribute('aria-live', 'polite');
|
|
420
|
+
const presetDetails = document.createElement('details');
|
|
421
|
+
presetDetails.className = 'wbc-example-preset-description__details';
|
|
422
|
+
const presetDetailsSummary = document.createElement('summary');
|
|
423
|
+
presetDetailsSummary.textContent = 'Explicação detalhada';
|
|
424
|
+
const presetDetailsBody = document.createElement('div');
|
|
425
|
+
presetDetailsBody.className = 'wbc-example-preset-description__body';
|
|
426
|
+
presetDetails.append(presetDetailsSummary, presetDetailsBody);
|
|
427
|
+
presetDescription.append(presetDescriptionText, presetDetails);
|
|
428
|
+
const updatePresetDescription = (preset) => {
|
|
429
|
+
presetDescription.hidden = !preset?.description;
|
|
430
|
+
presetDescriptionText.textContent = preset?.description ?? '';
|
|
431
|
+
presetDetails.open = false;
|
|
432
|
+
presetDetails.hidden = !preset?.details;
|
|
433
|
+
presetDetailsBody.textContent = preset?.details ?? '';
|
|
434
|
+
};
|
|
435
|
+
updatePresetDescription(initialPreset);
|
|
436
|
+
|
|
402
437
|
let isApplyingPresetFromUrl = false;
|
|
403
438
|
let title;
|
|
404
439
|
const updateExampleLabel = (presetId = presetSelect.value) => {
|
|
@@ -409,13 +444,20 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
409
444
|
presetSelect.addEventListener('change', () => {
|
|
410
445
|
const selectedPreset = presetOptions.find(({ id }) => id === presetSelect.value);
|
|
411
446
|
updateExampleLabel(selectedPreset?.id);
|
|
447
|
+
updatePresetDescription(selectedPreset);
|
|
412
448
|
if (selectedPreset?.source) {
|
|
413
449
|
controlsCssSource = '';
|
|
414
450
|
controlsApi?.reset?.();
|
|
415
|
-
activePresetScriptUrl = getPresetScriptUrl(path, selectedPreset.script);
|
|
416
451
|
if (!isApplyingPresetFromUrl) updatePresetUrl(file, selectedPreset.id);
|
|
417
452
|
comparisonBaseline = selectedPreset.source;
|
|
418
|
-
|
|
453
|
+
vanillaSources.css = getPresetCss(selectedPreset);
|
|
454
|
+
vanillaSources.javascript = getPresetJavascript(selectedPreset);
|
|
455
|
+
activateVanillaFile('html');
|
|
456
|
+
// Presets com o mesmo HTML ainda podem trocar JS/CSS.
|
|
457
|
+
if (selectedPreset.source === editorState.value) {
|
|
458
|
+
renderCurrentPreview(editorState.value);
|
|
459
|
+
persistDraft();
|
|
460
|
+
} else setEditorValue(selectedPreset.source);
|
|
419
461
|
updateDiff(getEditorValue());
|
|
420
462
|
}
|
|
421
463
|
});
|
|
@@ -750,6 +792,8 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
750
792
|
p: path,
|
|
751
793
|
f: file,
|
|
752
794
|
h: getEditorValue(),
|
|
795
|
+
j: vanillaSources.javascript,
|
|
796
|
+
c: vanillaSources.css,
|
|
753
797
|
// Mantém a associação do código compartilhado ao preset para links legados e edição posterior.
|
|
754
798
|
presetId: presetSelect.value || undefined,
|
|
755
799
|
};
|
|
@@ -1029,6 +1073,7 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1029
1073
|
const updateToolbarLayout = () => {
|
|
1030
1074
|
const isCompact = header.clientWidth > 0 && header.clientWidth < 840;
|
|
1031
1075
|
header.classList.toggle('is-compact-toolbar', isCompact);
|
|
1076
|
+
header.classList.toggle('is-stacked-toolbar', header.clientWidth > 0 && header.clientWidth < 576);
|
|
1032
1077
|
};
|
|
1033
1078
|
const headerResizeObserver = new ResizeObserver(updateToolbarLayout);
|
|
1034
1079
|
headerResizeObserver.observe(header);
|
|
@@ -1193,7 +1238,6 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1193
1238
|
};
|
|
1194
1239
|
|
|
1195
1240
|
eventFilterInput.addEventListener('input', applyFilter);
|
|
1196
|
-
eventFilterInput.addEventListener('valueChange', applyFilter);
|
|
1197
1241
|
eventKindFilter.addEventListener('change', applyFilter);
|
|
1198
1242
|
|
|
1199
1243
|
let newEventsCount = 0;
|
|
@@ -1205,7 +1249,7 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1205
1249
|
};
|
|
1206
1250
|
|
|
1207
1251
|
const markConsoleEntry = () => {
|
|
1208
|
-
const isActive =
|
|
1252
|
+
const isActive = tabComponent.activeTabId === tabIds.events;
|
|
1209
1253
|
if (!isActive) {
|
|
1210
1254
|
newEventsCount++;
|
|
1211
1255
|
eventsTabItem.setAttribute('label', `Console (${newEventsCount})`);
|
|
@@ -1475,15 +1519,25 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1475
1519
|
};
|
|
1476
1520
|
|
|
1477
1521
|
let vanillaFileTabs;
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
const active = index === 0;
|
|
1522
|
+
function activateVanillaFile(target) {
|
|
1523
|
+
if (target === activeVanillaFile) return;
|
|
1524
|
+
activeVanillaFile = target;
|
|
1525
|
+
vanillaFileTabs?.querySelectorAll('.wbc-framework-file-tab').forEach((item) => {
|
|
1526
|
+
const active = item.dataset.vanillaFile === target;
|
|
1484
1527
|
item.classList.toggle('is-active', active);
|
|
1485
1528
|
item.setAttribute('aria-selected', String(active));
|
|
1486
1529
|
});
|
|
1530
|
+
if (!editorApi) return;
|
|
1531
|
+
isSwitchingVanillaFile = true;
|
|
1532
|
+
editorApi.setLanguage?.(target);
|
|
1533
|
+
editorApi.setValue(vanillaSources[target]);
|
|
1534
|
+
isSwitchingVanillaFile = false;
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
const setEditorValue = (value, { recordHistory = true } = {}) => {
|
|
1538
|
+
const nextValue = String(value ?? '');
|
|
1539
|
+
if (nextValue === editorState.value) return;
|
|
1540
|
+
activateVanillaFile('html');
|
|
1487
1541
|
isApplyingEditorValue = true;
|
|
1488
1542
|
editorApi?.setValue(nextValue);
|
|
1489
1543
|
isApplyingEditorValue = false;
|
|
@@ -1492,11 +1546,11 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1492
1546
|
|
|
1493
1547
|
tabComponent.addEventListener('brTabChange', (event) => {
|
|
1494
1548
|
const activeTabId = event.detail.tabId;
|
|
1495
|
-
if (activeTabId !==
|
|
1549
|
+
if (activeTabId !== tabIds.code) {
|
|
1496
1550
|
eventsTabItem.setAttribute('label', 'Console');
|
|
1497
1551
|
newEventsCount = 0;
|
|
1498
1552
|
}
|
|
1499
|
-
if (frameworkTabItems.some((tab) => tab.
|
|
1553
|
+
if (frameworkTabItems.some((tab) => tab.id === activeTabId)) {
|
|
1500
1554
|
refreshFrameworkEditors();
|
|
1501
1555
|
}
|
|
1502
1556
|
});
|
|
@@ -1517,20 +1571,10 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1517
1571
|
fileTab.setAttribute('role', 'tab');
|
|
1518
1572
|
fileTab.setAttribute('aria-selected', String(index === 0));
|
|
1519
1573
|
fileTab.textContent = filename;
|
|
1574
|
+
fileTab.dataset.vanillaFile = target;
|
|
1520
1575
|
fileTab.addEventListener('click', () => {
|
|
1521
1576
|
if (target === activeVanillaFile) return;
|
|
1522
|
-
|
|
1523
|
-
activeVanillaFile = target;
|
|
1524
|
-
vanillaFileTabs.querySelectorAll('.wbc-framework-file-tab').forEach((item, itemIndex) => {
|
|
1525
|
-
const active = itemIndex === vanillaFiles.findIndex(([value]) => value === target);
|
|
1526
|
-
item.classList.toggle('is-active', active);
|
|
1527
|
-
item.setAttribute('aria-selected', String(active));
|
|
1528
|
-
});
|
|
1529
|
-
if (!editorApi) return;
|
|
1530
|
-
isSwitchingVanillaFile = true;
|
|
1531
|
-
editorApi.setLanguage?.(target === 'html' ? 'html' : target === 'css' ? 'css' : 'javascript');
|
|
1532
|
-
editorApi.setValue(vanillaSources[target]);
|
|
1533
|
-
isSwitchingVanillaFile = false;
|
|
1577
|
+
activateVanillaFile(target);
|
|
1534
1578
|
refreshEditor();
|
|
1535
1579
|
});
|
|
1536
1580
|
vanillaFileTabs.appendChild(fileTab);
|
|
@@ -1542,10 +1586,10 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1542
1586
|
// --- ACCESSIBILITY TAB ---
|
|
1543
1587
|
const a11yTabItem = document.createElement('br-tab-item');
|
|
1544
1588
|
a11yTabItem.setAttribute('label', 'Acessibilidade');
|
|
1545
|
-
a11yTabItem.setAttribute('icon', 'fas fa-universal-access');
|
|
1546
1589
|
a11yTabItem.setAttribute('icon-only', 'true');
|
|
1547
1590
|
a11yTabItem.setAttribute('title', 'Auditoria de acessibilidade');
|
|
1548
|
-
a11yTabItem.
|
|
1591
|
+
a11yTabItem.id = tabIds.a11y;
|
|
1592
|
+
setTabIcon(a11yTabItem, 'fas fa-universal-access');
|
|
1549
1593
|
|
|
1550
1594
|
const a11yWrapper = document.createElement('div');
|
|
1551
1595
|
a11yWrapper.className = 'wbc-example-a11y-wrapper';
|
|
@@ -1639,8 +1683,8 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1639
1683
|
};
|
|
1640
1684
|
|
|
1641
1685
|
tabComponent.addEventListener('brTabChange', (event) => {
|
|
1642
|
-
if (event.detail.tabId ===
|
|
1643
|
-
if (event.detail.tabId ===
|
|
1686
|
+
if (event.detail.tabId === tabIds.a11y) runAccessibilityAudit();
|
|
1687
|
+
if (event.detail.tabId === tabIds.code) refreshEditor();
|
|
1644
1688
|
});
|
|
1645
1689
|
|
|
1646
1690
|
tabComponent.append(
|
|
@@ -1655,8 +1699,21 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1655
1699
|
editorContainer.append(tabComponent);
|
|
1656
1700
|
|
|
1657
1701
|
let controlsCssSource = '';
|
|
1702
|
+
let vanillaAssetsPreviewTimer;
|
|
1703
|
+
const persistDraft = () => {
|
|
1704
|
+
writePlaygroundDraft(path, file, {
|
|
1705
|
+
html: editorState.value,
|
|
1706
|
+
css: vanillaSources.css,
|
|
1707
|
+
javascript: vanillaSources.javascript,
|
|
1708
|
+
baselineHtml: comparisonBaseline,
|
|
1709
|
+
presetId: presetSelect.value || undefined,
|
|
1710
|
+
});
|
|
1711
|
+
};
|
|
1658
1712
|
const renderCurrentPreview = (source) => {
|
|
1659
1713
|
const managedStyle = controlsCssSource ? `<style data-playground-controls-css>${controlsCssSource}</style>` : '';
|
|
1714
|
+
const exampleStyle = vanillaSources.css.trim()
|
|
1715
|
+
? `<style data-playground-css>${escapeInlineCode(vanillaSources.css, 'style')}</style>`
|
|
1716
|
+
: '';
|
|
1660
1717
|
if (previewFrame) {
|
|
1661
1718
|
previewFrame.classList.remove('wbc-preview-animate');
|
|
1662
1719
|
void previewFrame.offsetWidth;
|
|
@@ -1664,10 +1721,9 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1664
1721
|
}
|
|
1665
1722
|
renderExamplePreview(
|
|
1666
1723
|
preview,
|
|
1667
|
-
`${source}${managedStyle}`,
|
|
1668
|
-
path === 'templates',
|
|
1669
|
-
|
|
1670
|
-
activePresetScriptUrl,
|
|
1724
|
+
`${source}${exampleStyle}${managedStyle}`,
|
|
1725
|
+
path === 'templates' || path === 'templates-ai',
|
|
1726
|
+
vanillaSources.javascript,
|
|
1671
1727
|
previewChannelId,
|
|
1672
1728
|
);
|
|
1673
1729
|
updatePreviewResizeA11y();
|
|
@@ -1676,7 +1732,17 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1676
1732
|
const handleEditorChange = (source) => {
|
|
1677
1733
|
if (isSwitchingVanillaFile) return;
|
|
1678
1734
|
vanillaSources[activeVanillaFile] = String(source ?? '');
|
|
1679
|
-
if (activeVanillaFile === 'html'
|
|
1735
|
+
if (activeVanillaFile === 'html') {
|
|
1736
|
+
if (!isApplyingEditorValue) applyEditorValue(source);
|
|
1737
|
+
return;
|
|
1738
|
+
}
|
|
1739
|
+
// CSS/JS recriam o preview com debounce para não reexecutar o script a cada tecla.
|
|
1740
|
+
window.clearTimeout(vanillaAssetsPreviewTimer);
|
|
1741
|
+
vanillaAssetsPreviewTimer = window.setTimeout(() => {
|
|
1742
|
+
renderCurrentPreview(editorState.value);
|
|
1743
|
+
scheduleAccessibilityAudit();
|
|
1744
|
+
persistDraft();
|
|
1745
|
+
}, 600);
|
|
1680
1746
|
};
|
|
1681
1747
|
|
|
1682
1748
|
const applyEditorValue = (source, { recordHistory = true } = {}) => {
|
|
@@ -1688,11 +1754,7 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1688
1754
|
renderCurrentPreview(source);
|
|
1689
1755
|
scheduleAccessibilityAudit();
|
|
1690
1756
|
renderedFilesContent[file] = { content: source.toLowerCase(), element: contentDiv };
|
|
1691
|
-
|
|
1692
|
-
html: source,
|
|
1693
|
-
baselineHtml: comparisonBaseline,
|
|
1694
|
-
presetId: presetSelect.value || undefined,
|
|
1695
|
-
});
|
|
1757
|
+
persistDraft();
|
|
1696
1758
|
updateHistoryActions();
|
|
1697
1759
|
updateDiff(source);
|
|
1698
1760
|
if (!isUpdatingFromControls) {
|
|
@@ -1706,7 +1768,7 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1706
1768
|
fullscreenBottomPanel.className = 'wbc-example-fullscreen-bottom-panel';
|
|
1707
1769
|
fullscreenBottomPanel.appendChild(editorContainer);
|
|
1708
1770
|
|
|
1709
|
-
contentDiv.append(header, preview, fullscreenBottomPanel);
|
|
1771
|
+
contentDiv.append(header, presetDescription, preview, fullscreenBottomPanel);
|
|
1710
1772
|
|
|
1711
1773
|
initializeExample = () => {
|
|
1712
1774
|
previewFrame = document.createElement('iframe');
|
|
@@ -1765,7 +1827,7 @@ function createExampleElement(path, file, text, presets = [], defaultPreset = ''
|
|
|
1765
1827
|
|
|
1766
1828
|
customElements.whenDefined('br-tab').then(() => {
|
|
1767
1829
|
requestAnimationFrame(async () => {
|
|
1768
|
-
await tabComponent.setActiveTab?.(
|
|
1830
|
+
await tabComponent.setActiveTab?.(tabIds.code);
|
|
1769
1831
|
refreshEditor();
|
|
1770
1832
|
});
|
|
1771
1833
|
});
|
|
@@ -1891,14 +1953,7 @@ function getInitialExampleFile(path, files) {
|
|
|
1891
1953
|
return { initialFile: 'default', requestedFile };
|
|
1892
1954
|
}
|
|
1893
1955
|
|
|
1894
|
-
function createExamplesList(
|
|
1895
|
-
path,
|
|
1896
|
-
results,
|
|
1897
|
-
presets = [],
|
|
1898
|
-
exampleConfigs = [],
|
|
1899
|
-
initialFile = 'default',
|
|
1900
|
-
baseScript = '',
|
|
1901
|
-
) {
|
|
1956
|
+
function createExamplesList(path, results, presets = [], exampleConfigs = [], initialFile = 'default') {
|
|
1902
1957
|
let sharedElementToScroll = null;
|
|
1903
1958
|
let initialPresetId = '';
|
|
1904
1959
|
const examples = document.createElement('br-list');
|
|
@@ -1929,7 +1984,6 @@ function createExamplesList(
|
|
|
1929
1984
|
availablePresets.map(({ source, ...preset }) => ({ ...preset, source: source?.text ?? null })),
|
|
1930
1985
|
selectedPresetId,
|
|
1931
1986
|
config?.label || file,
|
|
1932
|
-
baseScript,
|
|
1933
1987
|
);
|
|
1934
1988
|
element.dataset.defaultPreset =
|
|
1935
1989
|
fallbackPreset?.id || availablePresets.find((preset) => getPresetSource(preset))?.id || '';
|
|
@@ -1954,7 +2008,7 @@ function scrollToInitialExample(examples, requestedFile, sharedElementToScroll)
|
|
|
1954
2008
|
}
|
|
1955
2009
|
}
|
|
1956
2010
|
|
|
1957
|
-
function renderLoadedPage(path, examples, results, presets = []
|
|
2011
|
+
function renderLoadedPage(path, examples, results, presets = []) {
|
|
1958
2012
|
const metadata = window.MENU_ITEMS?.find((item) => item.path === path);
|
|
1959
2013
|
if (metadata) {
|
|
1960
2014
|
CONTENT_ELEMENT.appendChild(createComponentHeading(metadata));
|
|
@@ -1966,7 +2020,7 @@ function renderLoadedPage(path, examples, results, presets = [], baseScript = ''
|
|
|
1966
2020
|
examples: examplesList,
|
|
1967
2021
|
initialPresetId,
|
|
1968
2022
|
sharedElementToScroll,
|
|
1969
|
-
} = createExamplesList(path, results, presets, examples, initialFile
|
|
2023
|
+
} = createExamplesList(path, results, presets, examples, initialFile);
|
|
1970
2024
|
CONTENT_ELEMENT.appendChild(examplesList);
|
|
1971
2025
|
if (initialFile && exampleIds.includes(initialFile)) {
|
|
1972
2026
|
const targetHash = getExampleHash(initialFile, initialPresetId || undefined);
|
|
@@ -2030,7 +2084,7 @@ async function fetchPlaygroundSource(path, source) {
|
|
|
2030
2084
|
throw lastError;
|
|
2031
2085
|
}
|
|
2032
2086
|
|
|
2033
|
-
function loadPage(path, examples, presets = [], baseScript = '') {
|
|
2087
|
+
function loadPage(path, examples, presets = [], baseScript = '', baseStyle = '') {
|
|
2034
2088
|
const loadGeneration = ++pageLoadGeneration;
|
|
2035
2089
|
cleanupExamples();
|
|
2036
2090
|
window.WBCActiveRecorders = [];
|
|
@@ -2051,6 +2105,26 @@ function loadPage(path, examples, presets = [], baseScript = '') {
|
|
|
2051
2105
|
console.warn(`Não foi possível carregar o preset ${path}/${source}:`, error);
|
|
2052
2106
|
}),
|
|
2053
2107
|
);
|
|
2108
|
+
// JS e CSS do preset ficam em arquivos irmãos do HTML; `index.js`/`index.css`
|
|
2109
|
+
// valem para todos os presets do componente e vêm antes do arquivo do preset.
|
|
2110
|
+
const assetSources = new Map();
|
|
2111
|
+
const uniqueAssetSources = [
|
|
2112
|
+
...new Set([baseScript, baseStyle, ...presets.flatMap(({ script, style }) => [script, style])].filter(Boolean)),
|
|
2113
|
+
];
|
|
2114
|
+
const assetPromises = uniqueAssetSources.map((source) =>
|
|
2115
|
+
fetchPlaygroundSource(path, source)
|
|
2116
|
+
.then((text) => {
|
|
2117
|
+
assetSources.set(source, text.trim());
|
|
2118
|
+
})
|
|
2119
|
+
.catch((error) => {
|
|
2120
|
+
console.warn(`Não foi possível carregar ${path}/${source}:`, error);
|
|
2121
|
+
}),
|
|
2122
|
+
);
|
|
2123
|
+
const joinAssets = (...sources) =>
|
|
2124
|
+
sources
|
|
2125
|
+
.map((source) => assetSources.get(source))
|
|
2126
|
+
.filter(Boolean)
|
|
2127
|
+
.join('\n\n');
|
|
2054
2128
|
const promises = pageExamples.map((example) => {
|
|
2055
2129
|
const selectedPreset = getPresetForExample(path, example, presets);
|
|
2056
2130
|
const source = getPresetSource(selectedPreset);
|
|
@@ -2061,7 +2135,7 @@ function loadPage(path, examples, presets = [], baseScript = '') {
|
|
|
2061
2135
|
return fetchPlaygroundSource(path, source).then((text) => ({ file: example.id, text }));
|
|
2062
2136
|
});
|
|
2063
2137
|
|
|
2064
|
-
Promise.all([Promise.all(promises), Promise.all(presetPromises)])
|
|
2138
|
+
Promise.all([Promise.all(promises), Promise.all(presetPromises), Promise.all(assetPromises)])
|
|
2065
2139
|
.then(([results]) => {
|
|
2066
2140
|
if (loadGeneration !== pageLoadGeneration) return;
|
|
2067
2141
|
const loadedPresets = presets.map((preset) => ({
|
|
@@ -2069,8 +2143,10 @@ function loadPage(path, examples, presets = [], baseScript = '') {
|
|
|
2069
2143
|
source: presetSources.has(preset.source)
|
|
2070
2144
|
? { text: presetSources.get(preset.source), path: preset.source }
|
|
2071
2145
|
: null,
|
|
2146
|
+
javascript: joinAssets(baseScript, preset.script),
|
|
2147
|
+
css: joinAssets(baseStyle, preset.style),
|
|
2072
2148
|
}));
|
|
2073
|
-
renderLoadedPage(path, pageExamples, results, loadedPresets
|
|
2149
|
+
renderLoadedPage(path, pageExamples, results, loadedPresets);
|
|
2074
2150
|
})
|
|
2075
2151
|
.catch((error) => {
|
|
2076
2152
|
console.log('Erro ao carregar a página:', error);
|
|
@@ -2179,7 +2255,8 @@ function processMenuItems(menuItems, menuBody, currentPath) {
|
|
|
2179
2255
|
link.active = true;
|
|
2180
2256
|
link.classList.add('active');
|
|
2181
2257
|
}
|
|
2182
|
-
if (Array.isArray(page.examples))
|
|
2258
|
+
if (Array.isArray(page.examples))
|
|
2259
|
+
loadPage(page.path, page.examples, page.presets, page.baseScript, page.baseStyle);
|
|
2183
2260
|
}
|
|
2184
2261
|
});
|
|
2185
2262
|
}
|
|
@@ -2255,7 +2332,7 @@ function loadPageFromURL() {
|
|
|
2255
2332
|
if (currentPath.trim().length === 0 && menuItems.length > 0) {
|
|
2256
2333
|
const firstPage = menuItems.find((p) => p?.path && Array.isArray(p.examples));
|
|
2257
2334
|
if (firstPage) {
|
|
2258
|
-
loadPage(firstPage.path, firstPage.examples, firstPage.presets, firstPage.baseScript);
|
|
2335
|
+
loadPage(firstPage.path, firstPage.examples, firstPage.presets, firstPage.baseScript, firstPage.baseStyle);
|
|
2259
2336
|
const firstLink = menuBody
|
|
2260
2337
|
? Array.from(menuBody.children).find((item) => item.getAttribute('href') === `/${firstPage.path}`)
|
|
2261
2338
|
: null;
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* `pageLoader.js` — a divisão é puramente física, sem mudança de comportamento.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
const OWN_MAIN_LANDMARK_PATTERN = /<main\b|\brole\s*=\s*["']?main\b/i;
|
|
10
|
+
|
|
9
11
|
// Usado só por `renderExamplePreview` (abaixo).
|
|
10
12
|
const DEV_SERVER_CONNECTOR_IFRAME_RE =
|
|
11
13
|
/<iframe\b[^>]*title=["']Stencil Dev Server Connector[^"']*["'][\s\S]*?<\/iframe>/gi;
|
|
@@ -13,12 +15,12 @@ const DEV_SERVER_CONNECTOR_IFRAME_RE =
|
|
|
13
15
|
// Cache do fonte do axe-core; privado de `loadAxeSource`.
|
|
14
16
|
let axeSourcePromise;
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Impede que o conteúdo editado feche a tag `<script>`/`<style>` em que é
|
|
20
|
+
* incorporado no `srcdoc` do preview.
|
|
21
|
+
*/
|
|
22
|
+
function escapeInlineCode(value, tagName) {
|
|
23
|
+
return String(value).replace(new RegExp(`</(${tagName})`, 'gi'), '<\\/$1');
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
function removePresetScripts(previewFrame) {
|
|
@@ -27,14 +29,7 @@ function removePresetScripts(previewFrame) {
|
|
|
27
29
|
});
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
function renderExamplePreview(
|
|
31
|
-
previewElement,
|
|
32
|
-
source,
|
|
33
|
-
edgeToEdge = false,
|
|
34
|
-
baseScriptUrl = '',
|
|
35
|
-
presetScriptUrl = '',
|
|
36
|
-
previewChannelId = '',
|
|
37
|
-
) {
|
|
32
|
+
function renderExamplePreview(previewElement, source, edgeToEdge = false, javascript = '', previewChannelId = '') {
|
|
38
33
|
const frame = previewElement.querySelector('iframe');
|
|
39
34
|
if (!frame) return;
|
|
40
35
|
|
|
@@ -47,11 +42,11 @@ function renderExamplePreview(
|
|
|
47
42
|
componentBundleUrl.searchParams.set('preview-version', String(Date.now()));
|
|
48
43
|
const componentBundle = componentBundleUrl.href;
|
|
49
44
|
const frameSource = rewritePreviewAssetPaths(stripDevServerConnector(source), baseUrl);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const presetScript =
|
|
54
|
-
? `\n <script type="module" data-wbc-preset-script
|
|
45
|
+
// Templates de página já declaram o próprio <main>; não aninha outro landmark principal.
|
|
46
|
+
const previewRootTag = OWN_MAIN_LANDMARK_PATTERN.test(frameSource) ? 'div' : 'main';
|
|
47
|
+
// Executado depois do bundle, como `index.js` + `<preset>.js` exibidos na aba JS.
|
|
48
|
+
const presetScript = javascript.trim()
|
|
49
|
+
? `\n <script type="module" data-wbc-preset-script>${escapeInlineCode(javascript, 'script')}</script>`
|
|
55
50
|
: '';
|
|
56
51
|
|
|
57
52
|
frame.srcdoc = `<!doctype html>
|
|
@@ -59,6 +54,7 @@ function renderExamplePreview(
|
|
|
59
54
|
<head>
|
|
60
55
|
<meta charset="UTF-8">
|
|
61
56
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
57
|
+
<title>Preview do exemplo - GovBR-DS</title>
|
|
62
58
|
<base href="${window.location.href}">
|
|
63
59
|
<link rel="stylesheet" href="${new URL(`${baseUrl}/assets/core.min.css`, window.location.href).href}">
|
|
64
60
|
<link rel="stylesheet" href="${new URL(`${baseUrl}/assets/fonts/rawline/400.css`, window.location.href).href}">
|
|
@@ -82,7 +78,7 @@ function renderExamplePreview(
|
|
|
82
78
|
html[data-wbc-reduced-motion='true'] *::after { animation: none !important; scroll-behavior: auto !important; transition: none !important; }
|
|
83
79
|
</style>
|
|
84
80
|
</head>
|
|
85
|
-
<body${edgeToEdge ? ' class="wbc-preview-edge-to-edge"' : ''}
|
|
81
|
+
<body${edgeToEdge ? ' class="wbc-preview-edge-to-edge"' : ''}><${previewRootTag} data-wbc-preview-content>${frameSource}</${previewRootTag}>
|
|
86
82
|
<style id="wbc-preview-reduced-motion">
|
|
87
83
|
@media (prefers-reduced-motion: reduce) {
|
|
88
84
|
*, *::before, *::after {
|
|
@@ -93,7 +89,6 @@ function renderExamplePreview(
|
|
|
93
89
|
}
|
|
94
90
|
</style>
|
|
95
91
|
<script type="module" src="${componentBundle}"></script>
|
|
96
|
-
${baseScript}
|
|
97
92
|
${presetScript}
|
|
98
93
|
<script>
|
|
99
94
|
(() => {
|
|
@@ -102,6 +97,21 @@ function renderExamplePreview(
|
|
|
102
97
|
window.addEventListener('keydown', (event) => {
|
|
103
98
|
if (event.key === 'Escape') sendToParent({ type: 'wbc-preview-exit-fullscreen' });
|
|
104
99
|
});
|
|
100
|
+
// O <base> aponta para a página do playground; sem isto, links "#ancora" (inclusive os
|
|
101
|
+
// renderizados no Shadow DOM dos componentes) navegariam o iframe para fora do exemplo.
|
|
102
|
+
window.addEventListener('click', (event) => {
|
|
103
|
+
if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey) return;
|
|
104
|
+
const anchor = event.composedPath().find((node) => node instanceof HTMLAnchorElement && node.hasAttribute('href'));
|
|
105
|
+
const href = anchor?.getAttribute('href') || '';
|
|
106
|
+
if (!href.startsWith('#')) return;
|
|
107
|
+
event.preventDefault();
|
|
108
|
+
const id = decodeURIComponent(href.slice(1));
|
|
109
|
+
location.hash = href;
|
|
110
|
+
const target = id ? document.getElementById(id) : null;
|
|
111
|
+
target?.scrollIntoView();
|
|
112
|
+
if (target && !target.matches('a[href], button, input, select, textarea, [tabindex]')) target.setAttribute('tabindex', '-1');
|
|
113
|
+
target?.focus({ preventScroll: true });
|
|
114
|
+
}, true);
|
|
105
115
|
const overlayContentSelector =
|
|
106
116
|
'[part="open-panel"], [part="default-panel"], [part="body"], .cookiebar-body, .content, .br-modal';
|
|
107
117
|
const getOverlayHeight = (overlay) => {
|
|
@@ -449,7 +459,7 @@ function renderExamplePreview(
|
|
|
449
459
|
if (mode === 'dark') document.documentElement.dataset.wbcTheme = value ? 'dark' : 'light';
|
|
450
460
|
scheduleHeight();
|
|
451
461
|
};
|
|
452
|
-
const stateAttributes = ['disabled', 'loading', 'state', '
|
|
462
|
+
const stateAttributes = ['disabled', 'loading', 'state', 'selected', 'active', 'invalid'];
|
|
453
463
|
const stateSnapshots = new WeakMap();
|
|
454
464
|
const applyState = (state) => {
|
|
455
465
|
getAllElements().filter((element) => element.localName.includes('-')).forEach((element) => {
|
|
@@ -465,10 +475,8 @@ function renderExamplePreview(
|
|
|
465
475
|
});
|
|
466
476
|
if (state === 'disabled') element.setAttribute('disabled', '');
|
|
467
477
|
if (state === 'loading') element.setAttribute('loading', '');
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
element.setAttribute('status', 'error');
|
|
471
|
-
}
|
|
478
|
+
// Estado de erro canônico dos componentes (BrFeedbackState).
|
|
479
|
+
if (state === 'error') element.setAttribute('state', 'danger');
|
|
472
480
|
if (state === 'selected') {
|
|
473
481
|
element.setAttribute('selected', '');
|
|
474
482
|
element.setAttribute('active', '');
|
|
@@ -623,10 +631,11 @@ function getFrameworkFiles(source, framework) {
|
|
|
623
631
|
function createFrameworkTab(label, icon, tabId, source, framework, { editable = false } = {}) {
|
|
624
632
|
const tab = document.createElement('br-tab-item');
|
|
625
633
|
tab.setAttribute('label', label);
|
|
626
|
-
tab
|
|
634
|
+
// O ícone por classe vai no slot `icon-{id}` do br-tab (aplicado por setTabIcon no pageLoader).
|
|
635
|
+
tab.dataset.icon = icon;
|
|
627
636
|
tab.setAttribute('icon-only', 'true');
|
|
628
637
|
tab.setAttribute('title', `Código ${label}`);
|
|
629
|
-
tab.
|
|
638
|
+
tab.id = tabId;
|
|
630
639
|
tab.dataset.framework = framework;
|
|
631
640
|
tab.dataset.editable = String(editable);
|
|
632
641
|
|