@govtechsg/sgds-web-component 3.0.0-rc.1 → 3.0.0-rc.2
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 +5 -5
- package/base/button.js +1 -1
- package/base/form-control-element.d.ts +4 -11
- package/base/form-control-element.js +13 -23
- package/base/form-control-element.js.map +1 -1
- package/components/Accordion/accordion-item.js +1 -1
- package/components/Accordion/index.umd.js +7 -19
- package/components/Accordion/index.umd.js.map +1 -1
- package/components/Accordion/sgds-accordion-item.d.ts +3 -7
- package/components/Accordion/sgds-accordion-item.js +6 -18
- package/components/Accordion/sgds-accordion-item.js.map +1 -1
- package/components/ActionCard/index.umd.js +407 -329
- package/components/ActionCard/index.umd.js.map +1 -1
- package/components/Alert/alert.js +1 -1
- package/components/Alert/index.umd.js +553 -485
- package/components/Alert/index.umd.js.map +1 -1
- package/components/Alert/sgds-alert.d.ts +2 -2
- package/components/Alert/sgds-alert.js +6 -13
- package/components/Alert/sgds-alert.js.map +1 -1
- package/components/Badge/badge.js +1 -1
- package/components/Badge/index.umd.js +8 -9
- package/components/Badge/index.umd.js.map +1 -1
- package/components/Badge/sgds-badge.d.ts +4 -5
- package/components/Badge/sgds-badge.js +5 -6
- package/components/Badge/sgds-badge.js.map +1 -1
- package/components/Button/index.umd.js +8 -81
- package/components/Button/index.umd.js.map +1 -1
- package/components/Button/sgds-button.js +1 -1
- package/components/Button/sgds-button.js.map +1 -1
- package/components/Checkbox/checkbox.js +1 -1
- package/components/Checkbox/index.umd.js +541 -475
- package/components/Checkbox/index.umd.js.map +1 -1
- package/components/Checkbox/sgds-checkbox-group.d.ts +7 -1
- package/components/Checkbox/sgds-checkbox-group.js +15 -4
- package/components/Checkbox/sgds-checkbox-group.js.map +1 -1
- package/components/Checkbox/sgds-checkbox.d.ts +30 -21
- package/components/Checkbox/sgds-checkbox.js +77 -60
- package/components/Checkbox/sgds-checkbox.js.map +1 -1
- package/components/ComboBox/index.umd.js +385 -216
- package/components/ComboBox/index.umd.js.map +1 -1
- package/components/Datepicker/datepicker-input.d.ts +4 -2
- package/components/Datepicker/datepicker-input.js +24 -7
- package/components/Datepicker/datepicker-input.js.map +1 -1
- package/components/Datepicker/index.umd.js +433 -244
- package/components/Datepicker/index.umd.js.map +1 -1
- package/components/Datepicker/sgds-datepicker.d.ts +1 -1
- package/components/Datepicker/sgds-datepicker.js.map +1 -1
- package/components/Drawer/index.umd.js +2 -2
- package/components/Drawer/index.umd.js.map +1 -1
- package/components/Dropdown/index.umd.js +8 -81
- package/components/Dropdown/index.umd.js.map +1 -1
- package/components/FileUpload/file-upload.js +1 -1
- package/components/FileUpload/index.umd.js +579 -272
- package/components/FileUpload/index.umd.js.map +1 -1
- package/components/FileUpload/sgds-file-upload.d.ts +42 -30
- package/components/FileUpload/sgds-file-upload.js +147 -103
- package/components/FileUpload/sgds-file-upload.js.map +1 -1
- package/components/Footer/footer-item.js +6 -0
- package/components/Footer/footer-item.js.map +1 -0
- package/components/Footer/footer.js +1 -1
- package/components/Footer/index.d.ts +2 -0
- package/components/Footer/index.js +2 -0
- package/components/Footer/index.js.map +1 -1
- package/components/Footer/index.umd.js +93 -94
- package/components/Footer/index.umd.js.map +1 -1
- package/components/Footer/sgds-footer-item.d.ts +13 -0
- package/components/Footer/sgds-footer-item.js +27 -0
- package/components/Footer/sgds-footer-item.js.map +1 -0
- package/components/Footer/sgds-footer.d.ts +9 -30
- package/components/Footer/sgds-footer.js +65 -90
- package/components/Footer/sgds-footer.js.map +1 -1
- package/components/Icon/icon.js +6 -0
- package/components/Icon/icon.js.map +1 -0
- package/components/Icon/index.d.ts +6 -0
- package/components/Icon/index.js +4 -0
- package/components/Icon/index.js.map +1 -0
- package/components/Icon/index.umd.js +4389 -0
- package/components/Icon/index.umd.js.map +1 -0
- package/components/Icon/sgds-icon.d.ts +21 -0
- package/components/Icon/sgds-icon.js +64 -0
- package/components/Icon/sgds-icon.js.map +1 -0
- package/components/IconButton/icon-button.js +1 -1
- package/components/IconButton/index.umd.js +6 -9
- package/components/IconButton/index.umd.js.map +1 -1
- package/components/IconButton/sgds-icon-button.d.ts +2 -2
- package/components/IconButton/sgds-icon-button.js +4 -9
- package/components/IconButton/sgds-icon-button.js.map +1 -1
- package/components/Input/index.umd.js +1734 -1376
- package/components/Input/index.umd.js.map +1 -1
- package/components/Input/sgds-input.d.ts +41 -21
- package/components/Input/sgds-input.js +103 -66
- package/components/Input/sgds-input.js.map +1 -1
- package/components/Modal/index.umd.js +2 -2
- package/components/Modal/index.umd.js.map +1 -1
- package/components/QuantityToggle/index.umd.js +894 -316
- package/components/QuantityToggle/index.umd.js.map +1 -1
- package/components/QuantityToggle/sgds-quantity-toggle.d.ts +42 -15
- package/components/QuantityToggle/sgds-quantity-toggle.js +129 -62
- package/components/QuantityToggle/sgds-quantity-toggle.js.map +1 -1
- package/components/Radio/index.umd.js +516 -203
- package/components/Radio/index.umd.js.map +1 -1
- package/components/Radio/sgds-radio-group.d.ts +38 -27
- package/components/Radio/sgds-radio-group.js +100 -84
- package/components/Radio/sgds-radio-group.js.map +1 -1
- package/components/Radio/sgds-radio.js +1 -1
- package/components/Radio/sgds-radio.js.map +1 -1
- package/components/Stepper/index.umd.js +1 -0
- package/components/Stepper/index.umd.js.map +1 -1
- package/components/Stepper/sgds-stepper.d.ts +1 -0
- package/components/Stepper/sgds-stepper.js +1 -0
- package/components/Stepper/sgds-stepper.js.map +1 -1
- package/components/Switch/index.umd.js +21 -321
- package/components/Switch/index.umd.js.map +1 -1
- package/components/Switch/sgds-switch.js +1 -2
- package/components/Switch/sgds-switch.js.map +1 -1
- package/components/Textarea/index.umd.js +1554 -1336
- package/components/Textarea/index.umd.js.map +1 -1
- package/components/Textarea/sgds-textarea.d.ts +33 -22
- package/components/Textarea/sgds-textarea.js +78 -75
- package/components/Textarea/sgds-textarea.js.map +1 -1
- package/components/Textarea/textarea.js +1 -1
- package/components/Toast/index.umd.js +9 -21
- package/components/Toast/index.umd.js.map +1 -1
- package/components/Toast/sgds-toast.d.ts +2 -1
- package/components/Toast/sgds-toast.js +6 -18
- package/components/Toast/sgds-toast.js.map +1 -1
- package/components/Toast/toast.js +1 -1
- package/components/Tooltip/index.umd.js +14 -14
- package/components/Tooltip/index.umd.js.map +1 -1
- package/components/Tooltip/sgds-tooltip.d.ts +4 -7
- package/components/Tooltip/sgds-tooltip.js +14 -14
- package/components/Tooltip/sgds-tooltip.js.map +1 -1
- package/components/index.d.ts +1 -0
- package/components/index.js +1 -0
- package/components/index.js.map +1 -1
- package/components/index.umd.js +1318 -1124
- package/components/index.umd.js.map +1 -1
- package/icons/arrow-bar-down.svg +3 -0
- package/icons/arrow-bar-left.svg +3 -0
- package/icons/arrow-bar-right.svg +3 -0
- package/icons/arrow-bar-up.svg +3 -0
- package/icons/arrow-clockwise.svg +3 -0
- package/icons/arrow-down.svg +3 -0
- package/icons/arrow-left.svg +3 -0
- package/icons/arrow-repeat.svg +3 -0
- package/icons/arrow-right.svg +3 -0
- package/icons/arrow-up.svg +3 -0
- package/icons/bank-fill.svg +3 -0
- package/icons/bell-slash.svg +3 -0
- package/icons/bell.svg +3 -0
- package/icons/bi-funnel.svg +3 -0
- package/icons/bookmark-fill.svg +3 -0
- package/icons/bookmark.svg +3 -0
- package/icons/box-arrow-up-right.svg +3 -0
- package/icons/box-seam.svg +3 -0
- package/icons/building.svg +3 -0
- package/icons/calculator.svg +3 -0
- package/icons/calendar-check.svg +4 -0
- package/icons/calendar-x.svg +4 -0
- package/icons/calendar.svg +3 -0
- package/icons/camera.svg +3 -0
- package/icons/chat-left-text.svg +3 -0
- package/icons/check-circle-fill.svg +3 -0
- package/icons/check-circle.svg +3 -0
- package/icons/check.svg +3 -0
- package/icons/chevron-down.svg +3 -0
- package/icons/chevron-left.svg +3 -0
- package/icons/chevron-right.svg +3 -0
- package/icons/chevron-up .svg +3 -0
- package/icons/clock.svg +4 -0
- package/icons/cloud-check.svg +4 -0
- package/icons/cloud-download.svg +3 -0
- package/icons/cloud-upload.svg +3 -0
- package/icons/cloud.svg +3 -0
- package/icons/compass.svg +4 -0
- package/icons/cross.svg +3 -0
- package/icons/cursor-fill.svg +3 -0
- package/icons/cursor.svg +3 -0
- package/icons/dash-circle.svg +3 -0
- package/icons/dash-square.svg +3 -0
- package/icons/dash.svg +3 -0
- package/icons/download.svg +3 -0
- package/icons/exclamation-circle-fill.svg +3 -0
- package/icons/exclamation-circle.svg +4 -0
- package/icons/exclamation-triangle-fill.svg +3 -0
- package/icons/exclamation-triangle.svg +4 -0
- package/icons/exclamation.svg +4 -0
- package/icons/eye-fill.svg +3 -0
- package/icons/eye-slash-fill.svg +4 -0
- package/icons/eye-slash.svg +3 -0
- package/icons/eye.svg +3 -0
- package/icons/facebook.svg +3 -0
- package/icons/file-earmark-text.svg +3 -0
- package/icons/file-pdf.svg +4 -0
- package/icons/file-plus.svg +4 -0
- package/icons/file-text.svg +3 -0
- package/icons/file.svg +3 -0
- package/icons/files.svg +4 -0
- package/icons/folder-check.svg +4 -0
- package/icons/folder-minus.svg +4 -0
- package/icons/folder-plus.svg +4 -0
- package/icons/folder.svg +3 -0
- package/icons/gear.svg +3 -0
- package/icons/geo-alt.svg +4 -0
- package/icons/geo-fill.svg +4 -0
- package/icons/geo.svg +4 -0
- package/icons/google.svg +3 -0
- package/icons/grid-fill.svg +3 -0
- package/icons/hand-thumbs-down.svg +3 -0
- package/icons/hand-thumbs-up.svg +3 -0
- package/icons/hdd.svg +3 -0
- package/icons/house-door.svg +3 -0
- package/icons/house.svg +3 -0
- package/icons/image.svg +3 -0
- package/icons/inbox.svg +3 -0
- package/icons/info-circle-fill.svg +3 -0
- package/icons/info-circle.svg +4 -0
- package/icons/instagram.svg +3 -0
- package/icons/layers.svg +3 -0
- package/icons/layout-text-window-reverse.svg +3 -0
- package/icons/layout-text-window.svg +3 -0
- package/icons/layout.svg +3 -0
- package/icons/link.svg +3 -0
- package/icons/linkedin.svg +3 -0
- package/icons/list.svg +3 -0
- package/icons/lock-fill.svg +3 -0
- package/icons/lock.svg +3 -0
- package/icons/mail.svg +3 -0
- package/icons/map.svg +3 -0
- package/icons/paperclip.svg +3 -0
- package/icons/pencil.svg +3 -0
- package/icons/pending-circle.svg +3 -0
- package/icons/person-dash.svg +3 -0
- package/icons/person-plus.svg +3 -0
- package/icons/person-x.svg +3 -0
- package/icons/person.svg +3 -0
- package/icons/pin-map-fill.svg +3 -0
- package/icons/pin.svg +3 -0
- package/icons/placeholder.svg +3 -0
- package/icons/plus-circle.svg +3 -0
- package/icons/plus-square.svg +3 -0
- package/icons/plus.svg +3 -0
- package/icons/printer.svg +3 -0
- package/icons/question-circle.svg +4 -0
- package/icons/save.svg +3 -0
- package/icons/search.svg +3 -0
- package/icons/share.svg +3 -0
- package/icons/slash-circle.svg +3 -0
- package/icons/sliders.svg +3 -0
- package/icons/speedometer.svg +3 -0
- package/icons/star-fill.svg +3 -0
- package/icons/star.svg +3 -0
- package/icons/stoplights.svg +4 -0
- package/icons/telephone.svg +3 -0
- package/icons/three-dots-vertical.svg +3 -0
- package/icons/three-dots.svg +3 -0
- package/icons/toggle-off.svg +3 -0
- package/icons/toggle-on.svg +3 -0
- package/icons/trash.svg +3 -0
- package/icons/twitter-x.svg +3 -0
- package/icons/unlock.svg +3 -0
- package/icons/upload.svg +3 -0
- package/icons/window-dash.svg +4 -0
- package/icons/window-desktop.svg +4 -0
- package/icons/window-dock.svg +4 -0
- package/icons/window-fullscreen.svg +3 -0
- package/icons/window-plus.svg +4 -0
- package/icons/window-sidebar.svg +3 -0
- package/icons/window-split.svg +3 -0
- package/icons/window-stack.svg +3 -0
- package/icons/window-x.svg +4 -0
- package/icons/window.svg +3 -0
- package/icons/x-circle-fill.svg +3 -0
- package/icons/x-circle.svg +3 -0
- package/icons/youtube.svg +3 -0
- package/icons/zoom-in.svg +3 -0
- package/icons/zoom-out.svg +3 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/index.umd.js +1338 -1119
- package/index.umd.js.map +1 -1
- package/internals/CloseButton/close-button.js +1 -1
- package/internals/CloseButton/sgds-close-button.js +1 -1
- package/internals/CloseButton/sgds-close-button.js.map +1 -1
- package/package.json +1 -1
- package/react/base/button.cjs.js +1 -1
- package/react/base/button.js +1 -1
- package/react/base/form-control-element.cjs.js +13 -23
- package/react/base/form-control-element.cjs.js.map +1 -1
- package/react/base/form-control-element.js +13 -23
- package/react/base/form-control-element.js.map +1 -1
- package/react/checkbox/index.cjs.js +2 -0
- package/react/checkbox/index.cjs.js.map +1 -1
- package/react/checkbox/index.d.ts +2 -0
- package/react/checkbox/index.js +2 -0
- package/react/checkbox/index.js.map +1 -1
- package/react/components/Accordion/accordion-item.cjs.js +1 -1
- package/react/components/Accordion/accordion-item.js +1 -1
- package/react/components/Accordion/sgds-accordion-item.cjs.js +6 -18
- package/react/components/Accordion/sgds-accordion-item.cjs.js.map +1 -1
- package/react/components/Accordion/sgds-accordion-item.js +6 -18
- package/react/components/Accordion/sgds-accordion-item.js.map +1 -1
- package/react/components/Alert/alert.cjs.js +1 -1
- package/react/components/Alert/alert.js +1 -1
- package/react/components/Alert/sgds-alert.cjs.js +5 -12
- package/react/components/Alert/sgds-alert.cjs.js.map +1 -1
- package/react/components/Alert/sgds-alert.js +6 -13
- package/react/components/Alert/sgds-alert.js.map +1 -1
- package/react/components/Badge/badge.cjs.js +1 -1
- package/react/components/Badge/badge.js +1 -1
- package/react/components/Badge/sgds-badge.cjs.js +5 -6
- package/react/components/Badge/sgds-badge.cjs.js.map +1 -1
- package/react/components/Badge/sgds-badge.js +5 -6
- package/react/components/Badge/sgds-badge.js.map +1 -1
- package/react/components/Button/sgds-button.cjs.js +2 -2
- package/react/components/Button/sgds-button.cjs.js.map +1 -1
- package/react/components/Button/sgds-button.js +1 -1
- package/react/components/Button/sgds-button.js.map +1 -1
- package/react/components/Checkbox/checkbox.cjs.js +1 -1
- package/react/components/Checkbox/checkbox.js +1 -1
- package/react/components/Checkbox/sgds-checkbox-group.cjs.js +15 -4
- package/react/components/Checkbox/sgds-checkbox-group.cjs.js.map +1 -1
- package/react/components/Checkbox/sgds-checkbox-group.js +15 -4
- package/react/components/Checkbox/sgds-checkbox-group.js.map +1 -1
- package/react/components/Checkbox/sgds-checkbox.cjs.js +77 -60
- package/react/components/Checkbox/sgds-checkbox.cjs.js.map +1 -1
- package/react/components/Checkbox/sgds-checkbox.js +77 -60
- package/react/components/Checkbox/sgds-checkbox.js.map +1 -1
- package/react/components/Datepicker/datepicker-input.cjs.js +24 -7
- package/react/components/Datepicker/datepicker-input.cjs.js.map +1 -1
- package/react/components/Datepicker/datepicker-input.js +24 -7
- package/react/components/Datepicker/datepicker-input.js.map +1 -1
- package/react/components/Datepicker/sgds-datepicker.cjs.js.map +1 -1
- package/react/components/Datepicker/sgds-datepicker.js.map +1 -1
- package/react/components/FileUpload/file-upload.cjs.js +1 -1
- package/react/components/FileUpload/file-upload.js +1 -1
- package/react/components/FileUpload/sgds-file-upload.cjs.js +145 -101
- package/react/components/FileUpload/sgds-file-upload.cjs.js.map +1 -1
- package/react/components/FileUpload/sgds-file-upload.js +147 -103
- package/react/components/FileUpload/sgds-file-upload.js.map +1 -1
- package/react/components/Footer/footer-item.cjs.js +11 -0
- package/react/components/Footer/footer-item.cjs.js.map +1 -0
- package/react/components/Footer/footer-item.js +7 -0
- package/react/components/Footer/footer-item.js.map +1 -0
- package/react/components/Footer/footer.cjs.js +1 -1
- package/react/components/Footer/footer.js +1 -1
- package/react/components/Footer/sgds-footer-item.cjs.js +33 -0
- package/react/components/Footer/sgds-footer-item.cjs.js.map +1 -0
- package/react/components/Footer/sgds-footer-item.js +28 -0
- package/react/components/Footer/sgds-footer-item.js.map +1 -0
- package/react/components/Footer/sgds-footer.cjs.js +65 -90
- package/react/components/Footer/sgds-footer.cjs.js.map +1 -1
- package/react/components/Footer/sgds-footer.js +65 -90
- package/react/components/Footer/sgds-footer.js.map +1 -1
- package/react/components/Icon/icon.cjs.js +11 -0
- package/react/components/Icon/icon.cjs.js.map +1 -0
- package/react/components/Icon/icon.js +7 -0
- package/react/components/Icon/icon.js.map +1 -0
- package/react/components/Icon/sgds-icon.cjs.js +70 -0
- package/react/components/Icon/sgds-icon.cjs.js.map +1 -0
- package/react/components/Icon/sgds-icon.js +65 -0
- package/react/components/Icon/sgds-icon.js.map +1 -0
- package/react/components/IconButton/icon-button.cjs.js +1 -1
- package/react/components/IconButton/icon-button.js +1 -1
- package/react/components/IconButton/sgds-icon-button.cjs.js +4 -9
- package/react/components/IconButton/sgds-icon-button.cjs.js.map +1 -1
- package/react/components/IconButton/sgds-icon-button.js +4 -9
- package/react/components/IconButton/sgds-icon-button.js.map +1 -1
- package/react/components/Input/sgds-input.cjs.js +101 -64
- package/react/components/Input/sgds-input.cjs.js.map +1 -1
- package/react/components/Input/sgds-input.js +103 -66
- package/react/components/Input/sgds-input.js.map +1 -1
- package/react/components/QuantityToggle/sgds-quantity-toggle.cjs.js +128 -61
- package/react/components/QuantityToggle/sgds-quantity-toggle.cjs.js.map +1 -1
- package/react/components/QuantityToggle/sgds-quantity-toggle.js +129 -62
- package/react/components/QuantityToggle/sgds-quantity-toggle.js.map +1 -1
- package/react/components/Radio/sgds-radio-group.cjs.js +99 -83
- package/react/components/Radio/sgds-radio-group.cjs.js.map +1 -1
- package/react/components/Radio/sgds-radio-group.js +100 -84
- package/react/components/Radio/sgds-radio-group.js.map +1 -1
- package/react/components/Radio/sgds-radio.cjs.js +1 -1
- package/react/components/Radio/sgds-radio.cjs.js.map +1 -1
- package/react/components/Radio/sgds-radio.js +1 -1
- package/react/components/Radio/sgds-radio.js.map +1 -1
- package/react/components/Stepper/sgds-stepper.cjs.js +1 -0
- package/react/components/Stepper/sgds-stepper.cjs.js.map +1 -1
- package/react/components/Stepper/sgds-stepper.js +1 -0
- package/react/components/Stepper/sgds-stepper.js.map +1 -1
- package/react/components/Switch/sgds-switch.cjs.js +1 -2
- package/react/components/Switch/sgds-switch.cjs.js.map +1 -1
- package/react/components/Switch/sgds-switch.js +1 -2
- package/react/components/Switch/sgds-switch.js.map +1 -1
- package/react/components/Textarea/sgds-textarea.cjs.js +76 -73
- package/react/components/Textarea/sgds-textarea.cjs.js.map +1 -1
- package/react/components/Textarea/sgds-textarea.js +78 -75
- package/react/components/Textarea/sgds-textarea.js.map +1 -1
- package/react/components/Textarea/textarea.cjs.js +1 -1
- package/react/components/Textarea/textarea.js +1 -1
- package/react/components/Toast/sgds-toast.cjs.js +6 -18
- package/react/components/Toast/sgds-toast.cjs.js.map +1 -1
- package/react/components/Toast/sgds-toast.js +6 -18
- package/react/components/Toast/sgds-toast.js.map +1 -1
- package/react/components/Toast/toast.cjs.js +1 -1
- package/react/components/Toast/toast.js +1 -1
- package/react/components/Tooltip/sgds-tooltip.cjs.js +14 -14
- package/react/components/Tooltip/sgds-tooltip.cjs.js.map +1 -1
- package/react/components/Tooltip/sgds-tooltip.js +14 -14
- package/react/components/Tooltip/sgds-tooltip.js.map +1 -1
- package/react/footer-item/index.cjs.js +39 -0
- package/react/footer-item/index.cjs.js.map +1 -0
- package/react/footer-item/index.d.ts +3 -0
- package/react/footer-item/index.js +15 -0
- package/react/footer-item/index.js.map +1 -0
- package/react/icon/index.cjs.js +42 -0
- package/react/icon/index.cjs.js.map +1 -0
- package/react/icon/index.d.ts +6 -0
- package/react/icon/index.js +18 -0
- package/react/icon/index.js.map +1 -0
- package/react/index.cjs.js +64 -60
- package/react/index.cjs.js.map +1 -1
- package/react/index.d.ts +2 -0
- package/react/index.js +2 -0
- package/react/index.js.map +1 -1
- package/react/input/index.cjs.js +3 -1
- package/react/input/index.cjs.js.map +1 -1
- package/react/input/index.d.ts +2 -0
- package/react/input/index.js +3 -1
- package/react/input/index.js.map +1 -1
- package/react/internals/CloseButton/close-button.cjs.js +1 -1
- package/react/internals/CloseButton/close-button.js +1 -1
- package/react/internals/CloseButton/sgds-close-button.cjs.js +1 -1
- package/react/internals/CloseButton/sgds-close-button.cjs.js.map +1 -1
- package/react/internals/CloseButton/sgds-close-button.js +1 -1
- package/react/internals/CloseButton/sgds-close-button.js.map +1 -1
- package/react/styles/form-hint.cjs.js +1 -1
- package/react/styles/form-hint.js +1 -1
- package/react/styles/form-label.cjs.js +1 -1
- package/react/styles/form-label.js +1 -1
- package/react/utils/formSubmitController.cjs.js +64 -0
- package/react/utils/formSubmitController.cjs.js.map +1 -0
- package/react/utils/formSubmitController.js +60 -0
- package/react/utils/formSubmitController.js.map +1 -0
- package/react/utils/inputValidationController.cjs.js +130 -0
- package/react/utils/inputValidationController.cjs.js.map +1 -0
- package/react/utils/inputValidationController.js +126 -0
- package/react/utils/inputValidationController.js.map +1 -0
- package/react/utils/validatorMixin.cjs.js +108 -0
- package/react/utils/validatorMixin.cjs.js.map +1 -0
- package/react/utils/validatorMixin.js +104 -0
- package/react/utils/validatorMixin.js.map +1 -0
- package/styles/form-hint.js +1 -1
- package/styles/form-label.js +1 -1
- package/themes/day.css +1 -1
- package/themes/night.css +3 -2
- package/themes/root.css +1 -0
- package/utils/{form.d.ts → formSubmitController.d.ts} +10 -20
- package/utils/formSubmitController.js +59 -0
- package/utils/formSubmitController.js.map +1 -0
- package/utils/inputValidationController.d.ts +70 -0
- package/utils/inputValidationController.js +125 -0
- package/utils/inputValidationController.js.map +1 -0
- package/utils/validatorMixin.d.ts +24 -0
- package/utils/validatorMixin.js +103 -0
- package/utils/validatorMixin.js.map +1 -0
- package/base/form-check-element.d.ts +0 -50
- package/base/form-check-element.js +0 -169
- package/base/form-check-element.js.map +0 -1
- package/react/base/form-check-element.cjs.js +0 -175
- package/react/base/form-check-element.cjs.js.map +0 -1
- package/react/base/form-check-element.js +0 -170
- package/react/base/form-check-element.js.map +0 -1
- package/react/utils/form.cjs.js +0 -137
- package/react/utils/form.cjs.js.map +0 -1
- package/react/utils/form.js +0 -133
- package/react/utils/form.js.map +0 -1
- package/utils/form.js +0 -132
- package/utils/form.js.map +0 -1
|
@@ -13949,7 +13949,7 @@
|
|
|
13949
13949
|
}
|
|
13950
13950
|
SgdsElement.styles = [css_248z$g];
|
|
13951
13951
|
|
|
13952
|
-
function
|
|
13952
|
+
function generateId (componentName = "", elementName = "") {
|
|
13953
13953
|
return `id-${Math.random().toString().substring(2, 6)}-sgds-${componentName}-${elementName}`;
|
|
13954
13954
|
}
|
|
13955
13955
|
|
|
@@ -13971,7 +13971,7 @@
|
|
|
13971
13971
|
/** @internal */
|
|
13972
13972
|
this.bsDropdown = null;
|
|
13973
13973
|
/** @internal Unique id generated for the dropdown menu */
|
|
13974
|
-
this.dropdownMenuId =
|
|
13974
|
+
this.dropdownMenuId = generateId("dropdown-menu", "div");
|
|
13975
13975
|
/** @internal Controls auto-flipping of menu */
|
|
13976
13976
|
this.noFlip = false;
|
|
13977
13977
|
/** @internal When true, aligns right edge of menu with right edge of button */
|
|
@@ -18769,9 +18769,9 @@
|
|
|
18769
18769
|
|
|
18770
18770
|
var css_248z$d = css`.invalid-feedback-container{display:flex;gap:var(--sgds-form-gap-sm)}.invalid-feedback{color:var(--sgds-form-danger-color);font-size:var(--sgds-font-size-1);font-weight:var(--sgds-font-weight-regular)}`;
|
|
18771
18771
|
|
|
18772
|
-
var css_248z$c = css`.form-text{color:var(--sgds-form-color-subtle);font-size:var(--sgds-font-size-1)}`;
|
|
18772
|
+
var css_248z$c = css`.form-text{color:var(--sgds-form-color-subtle);font-size:var(--sgds-font-size-1)}.form-text.disabled{opacity:var(--sgds-opacity-50)}`;
|
|
18773
18773
|
|
|
18774
|
-
var css_248z$b = css`.form-label{margin-bottom:0}.form-
|
|
18774
|
+
var css_248z$b = css`.form-label{color:var(--sgds-form-color);margin-bottom:0}.form-label.disabled{opacity:var(--sgds-opacity-50)}.form-check-label{color:var(--sgds-form-color)}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:not-allowed}`;
|
|
18775
18775
|
|
|
18776
18776
|
var css_248z$a = css`.form-control::placeholder{color:var(--sgds-form-color-subtle);font-family:var(--sgds-font-family-brand);font-weight:var(--sgds-font-weight-light);line-height:var(--sgds-line-height-heading)}`;
|
|
18777
18777
|
|
|
@@ -18784,15 +18784,20 @@
|
|
|
18784
18784
|
this.hintText = "";
|
|
18785
18785
|
/** Disables the input. */
|
|
18786
18786
|
this.disabled = false;
|
|
18787
|
-
/** Allows invalidFeedback, invalid and valid styles to be visible with the input */
|
|
18788
|
-
this.hasFeedback = false;
|
|
18789
|
-
/**Feedback text for error state when validated */
|
|
18790
|
-
this.invalidFeedback = "";
|
|
18791
18787
|
/** Marks the component as invalid. Replace the pseudo :invalid selector for absent in custom elements */
|
|
18792
18788
|
this.invalid = false;
|
|
18793
|
-
|
|
18794
|
-
this.
|
|
18795
|
-
|
|
18789
|
+
this._controlId = generateId("input");
|
|
18790
|
+
this._labelId = generateId("label");
|
|
18791
|
+
}
|
|
18792
|
+
/** Programatically sets the invalid state of the input. Pass in boolean value in the argument */
|
|
18793
|
+
setInvalid(bool) {
|
|
18794
|
+
this.invalid = bool;
|
|
18795
|
+
if (bool) {
|
|
18796
|
+
this.emit("sgds-invalid");
|
|
18797
|
+
}
|
|
18798
|
+
else {
|
|
18799
|
+
this.emit("sgds-valid");
|
|
18800
|
+
}
|
|
18796
18801
|
}
|
|
18797
18802
|
}
|
|
18798
18803
|
FormControlElement.styles = [...SgdsElement.styles, css_248z$d, css_248z$c, css_248z$b, css_248z$a];
|
|
@@ -18808,24 +18813,249 @@
|
|
|
18808
18813
|
__decorate([
|
|
18809
18814
|
property({ type: Boolean, reflect: true })
|
|
18810
18815
|
], FormControlElement.prototype, "disabled", void 0);
|
|
18811
|
-
__decorate([
|
|
18812
|
-
property()
|
|
18813
|
-
], FormControlElement.prototype, "min", void 0);
|
|
18814
|
-
__decorate([
|
|
18815
|
-
property()
|
|
18816
|
-
], FormControlElement.prototype, "max", void 0);
|
|
18817
|
-
__decorate([
|
|
18818
|
-
property({ type: Boolean, reflect: true })
|
|
18819
|
-
], FormControlElement.prototype, "hasFeedback", void 0);
|
|
18820
|
-
__decorate([
|
|
18821
|
-
property({ type: String, reflect: true })
|
|
18822
|
-
], FormControlElement.prototype, "invalidFeedback", void 0);
|
|
18823
18816
|
__decorate([
|
|
18824
18817
|
property({ type: Boolean, reflect: true })
|
|
18825
18818
|
], FormControlElement.prototype, "invalid", void 0);
|
|
18826
|
-
|
|
18827
|
-
|
|
18828
|
-
|
|
18819
|
+
|
|
18820
|
+
// @defaultValue decorator
|
|
18821
|
+
const defaultValue = (propertyName = "value") => (proto, key) => {
|
|
18822
|
+
const ctor = proto.constructor;
|
|
18823
|
+
const attributeChangedCallback = ctor.prototype.attributeChangedCallback;
|
|
18824
|
+
ctor.prototype.attributeChangedCallback = function (name, old, value) {
|
|
18825
|
+
var _a;
|
|
18826
|
+
const options = ctor.getPropertyOptions(propertyName);
|
|
18827
|
+
const attributeName = (typeof options.attribute === "string" ? options.attribute : propertyName).toLowerCase();
|
|
18828
|
+
if (name === attributeName) {
|
|
18829
|
+
const converter = options.converter || defaultConverter;
|
|
18830
|
+
const fromAttribute = typeof converter === "function" ? converter : (_a = converter === null || converter === void 0 ? void 0 : converter.fromAttribute) !== null && _a !== void 0 ? _a : defaultConverter.fromAttribute;
|
|
18831
|
+
const newValue = fromAttribute(value, options.type);
|
|
18832
|
+
if (this[propertyName] !== newValue) {
|
|
18833
|
+
this[key] = newValue;
|
|
18834
|
+
}
|
|
18835
|
+
}
|
|
18836
|
+
attributeChangedCallback.call(this, name, old, value);
|
|
18837
|
+
};
|
|
18838
|
+
};
|
|
18839
|
+
|
|
18840
|
+
/**
|
|
18841
|
+
* SGDS custom form validation methods and behaviours
|
|
18842
|
+
*/
|
|
18843
|
+
class InputValidationController {
|
|
18844
|
+
constructor(host, options) {
|
|
18845
|
+
(this.host = host).addController(this);
|
|
18846
|
+
this._internals = this.host.attachInternals();
|
|
18847
|
+
this.options = Object.assign({ setInvalid: (host, value) => {
|
|
18848
|
+
host.invalid = value;
|
|
18849
|
+
}, value: (host) => {
|
|
18850
|
+
return host.value;
|
|
18851
|
+
}, input: (host) => host.input }, options);
|
|
18852
|
+
}
|
|
18853
|
+
hostConnected() {
|
|
18854
|
+
this.host.addEventListener("invalid", e => this.handleInvalid(e));
|
|
18855
|
+
}
|
|
18856
|
+
hostDisconnected() {
|
|
18857
|
+
this.host.removeEventListener("invalid", e => this.handleInvalid(e));
|
|
18858
|
+
}
|
|
18859
|
+
/**
|
|
18860
|
+
* Prevents the native browser error message pop up when reportValidity() called by
|
|
18861
|
+
* associated form or the component's reportValidity during constraint validation
|
|
18862
|
+
* Sets invalid reactive prop to true
|
|
18863
|
+
*/
|
|
18864
|
+
handleInvalid(e) {
|
|
18865
|
+
e.preventDefault();
|
|
18866
|
+
this.options.setInvalid(this.host, true);
|
|
18867
|
+
}
|
|
18868
|
+
/**
|
|
18869
|
+
* Sets invalid to false when invoked and
|
|
18870
|
+
* Updates the ValidityState based on new value, but
|
|
18871
|
+
* does not update invalid reactive prop
|
|
18872
|
+
* @param e
|
|
18873
|
+
*/
|
|
18874
|
+
handleInput(e) {
|
|
18875
|
+
const input = e.target;
|
|
18876
|
+
this.options.setInvalid(this.host, false);
|
|
18877
|
+
this.validateInput(input);
|
|
18878
|
+
}
|
|
18879
|
+
/**
|
|
18880
|
+
* Validate the input's new value after onChange and
|
|
18881
|
+
* update invalid reactive prop
|
|
18882
|
+
* @param e
|
|
18883
|
+
*/
|
|
18884
|
+
handleChange(e) {
|
|
18885
|
+
const input = e.target;
|
|
18886
|
+
this.validateInput(input);
|
|
18887
|
+
this.options.setInvalid(this.host, !this.checkValidity());
|
|
18888
|
+
}
|
|
18889
|
+
get form() {
|
|
18890
|
+
return this._internals.form;
|
|
18891
|
+
}
|
|
18892
|
+
get validity() {
|
|
18893
|
+
return this._internals.validity;
|
|
18894
|
+
}
|
|
18895
|
+
get validationMessage() {
|
|
18896
|
+
return this._internals.validationMessage;
|
|
18897
|
+
}
|
|
18898
|
+
get willValidate() {
|
|
18899
|
+
return this._internals.willValidate;
|
|
18900
|
+
}
|
|
18901
|
+
/**
|
|
18902
|
+
* Checks the validity and updates the invalid reactive prop of form components
|
|
18903
|
+
*/
|
|
18904
|
+
updateInvalidState() {
|
|
18905
|
+
this.options.setInvalid(this.host, !this.checkValidity());
|
|
18906
|
+
}
|
|
18907
|
+
/**
|
|
18908
|
+
* Resets the ValidityState of the control
|
|
18909
|
+
*/
|
|
18910
|
+
resetValidity() {
|
|
18911
|
+
return this._internals.setValidity({});
|
|
18912
|
+
}
|
|
18913
|
+
/**
|
|
18914
|
+
* Reports the validity
|
|
18915
|
+
*/
|
|
18916
|
+
checkValidity() {
|
|
18917
|
+
return this._internals.checkValidity();
|
|
18918
|
+
}
|
|
18919
|
+
/**
|
|
18920
|
+
* Reports the validity with a error popup message
|
|
18921
|
+
*/
|
|
18922
|
+
reportValidity() {
|
|
18923
|
+
return this._internals.reportValidity();
|
|
18924
|
+
}
|
|
18925
|
+
/**
|
|
18926
|
+
* Sets the form control value into FormData,
|
|
18927
|
+
* making the value of control accessible via FormData
|
|
18928
|
+
*/
|
|
18929
|
+
setFormValue() {
|
|
18930
|
+
const value = this.options.value(this.host);
|
|
18931
|
+
this._internals.setFormValue(value);
|
|
18932
|
+
}
|
|
18933
|
+
/**
|
|
18934
|
+
* Updates the ValidityState of the input in form component at current state
|
|
18935
|
+
*/
|
|
18936
|
+
validateInput(input) {
|
|
18937
|
+
/** When the form control is disabled, its always valid */
|
|
18938
|
+
if (this.options.input(this.host).disabled) {
|
|
18939
|
+
return this._internals.setValidity({});
|
|
18940
|
+
}
|
|
18941
|
+
// get the validity of the internal <input>
|
|
18942
|
+
const validState = input.validity;
|
|
18943
|
+
// if the input is invalid, show the correct error
|
|
18944
|
+
if (!validState.valid) {
|
|
18945
|
+
// loop through the error reasons
|
|
18946
|
+
for (const state in validState) {
|
|
18947
|
+
// if there is an error and corresponding attribute holding
|
|
18948
|
+
// the message
|
|
18949
|
+
if (validState[state]) {
|
|
18950
|
+
this.validationError = state.toString();
|
|
18951
|
+
// set the validity error reason and the corresponding
|
|
18952
|
+
// message
|
|
18953
|
+
this._internals.setValidity({ [this.validationError]: true }, input.validationMessage, input);
|
|
18954
|
+
}
|
|
18955
|
+
}
|
|
18956
|
+
}
|
|
18957
|
+
else {
|
|
18958
|
+
this._internals.setValidity({});
|
|
18959
|
+
}
|
|
18960
|
+
}
|
|
18961
|
+
}
|
|
18962
|
+
|
|
18963
|
+
/**
|
|
18964
|
+
* @summary The FormValidationMixin used by the form components
|
|
18965
|
+
* @param superClass
|
|
18966
|
+
* @returns
|
|
18967
|
+
*/
|
|
18968
|
+
const SgdsFormValidatorMixin = (superClass) => {
|
|
18969
|
+
class ToBeValidatedElement extends superClass {
|
|
18970
|
+
constructor() {
|
|
18971
|
+
super(...arguments);
|
|
18972
|
+
this._isTouched = false;
|
|
18973
|
+
}
|
|
18974
|
+
connectedCallback() {
|
|
18975
|
+
super.connectedCallback();
|
|
18976
|
+
this.inputValidationController = new InputValidationController(this);
|
|
18977
|
+
}
|
|
18978
|
+
async firstUpdated(changedProperties) {
|
|
18979
|
+
super.firstUpdated(changedProperties);
|
|
18980
|
+
/* Either input or sgds-input. For example, quantity-toggle uses sgds-input */
|
|
18981
|
+
this.input =
|
|
18982
|
+
this.shadowRoot.querySelector("input") || (await this.sgdsInput) || this.shadowRoot.querySelector("textarea");
|
|
18983
|
+
this._mixinValidate(this.input);
|
|
18984
|
+
}
|
|
18985
|
+
/**
|
|
18986
|
+
* Native lifecycle of Form-Associated Custom Element Callbacks
|
|
18987
|
+
*/
|
|
18988
|
+
formResetCallback() {
|
|
18989
|
+
if (this._mixinResetFormControl) {
|
|
18990
|
+
this._mixinResetFormControl();
|
|
18991
|
+
}
|
|
18992
|
+
else {
|
|
18993
|
+
this.value = this.defaultValue;
|
|
18994
|
+
this._mixinResetValidity(this.input);
|
|
18995
|
+
}
|
|
18996
|
+
this._mixinSetFormValue();
|
|
18997
|
+
}
|
|
18998
|
+
/**
|
|
18999
|
+
*
|
|
19000
|
+
* Methods use by classes using this mixin
|
|
19001
|
+
*/
|
|
19002
|
+
/**
|
|
19003
|
+
* OnChange of form component
|
|
19004
|
+
* 1. Make value of control accessible via FormData
|
|
19005
|
+
* 2. Run change handler
|
|
19006
|
+
*/
|
|
19007
|
+
_mixinHandleChange(e) {
|
|
19008
|
+
this._mixinSetFormValue();
|
|
19009
|
+
this.inputValidationController.handleChange(e);
|
|
19010
|
+
}
|
|
19011
|
+
/**
|
|
19012
|
+
* OnChange of form component
|
|
19013
|
+
* 1. Make value of control accessible via FormData
|
|
19014
|
+
* 2. Run input handler
|
|
19015
|
+
*/
|
|
19016
|
+
_mixinHandleInputChange(e) {
|
|
19017
|
+
this._mixinSetFormValue();
|
|
19018
|
+
this.inputValidationController.handleInput(e);
|
|
19019
|
+
}
|
|
19020
|
+
/**
|
|
19021
|
+
* During form resetting,
|
|
19022
|
+
* 1. ValidityState is reset
|
|
19023
|
+
* 2. invalid reactive prop is updated after the reset
|
|
19024
|
+
* 3. Revalidates the ValidityState (but do not update invalid prop)
|
|
19025
|
+
* to prepare for the next validity check
|
|
19026
|
+
* 4. Reset touched state to false for a pristine form
|
|
19027
|
+
*/
|
|
19028
|
+
_mixinResetValidity(input) {
|
|
19029
|
+
this.inputValidationController.resetValidity();
|
|
19030
|
+
this.inputValidationController.updateInvalidState();
|
|
19031
|
+
this.inputValidationController.validateInput(input);
|
|
19032
|
+
this._isTouched ? (this._isTouched = false) : null;
|
|
19033
|
+
}
|
|
19034
|
+
_mixinValidate(input) {
|
|
19035
|
+
this.inputValidationController.validateInput(input);
|
|
19036
|
+
}
|
|
19037
|
+
_mixinSetFormValue() {
|
|
19038
|
+
this.inputValidationController.setFormValue();
|
|
19039
|
+
}
|
|
19040
|
+
_mixinCheckValidity() {
|
|
19041
|
+
return this.inputValidationController.checkValidity();
|
|
19042
|
+
}
|
|
19043
|
+
_mixinReportValidity() {
|
|
19044
|
+
return this.inputValidationController.reportValidity();
|
|
19045
|
+
}
|
|
19046
|
+
_mixinGetValidity() {
|
|
19047
|
+
return this.inputValidationController.validity;
|
|
19048
|
+
}
|
|
19049
|
+
_mixinGetValidationMessage() {
|
|
19050
|
+
return this.inputValidationController.validationMessage;
|
|
19051
|
+
}
|
|
19052
|
+
}
|
|
19053
|
+
ToBeValidatedElement.formAssociated = true;
|
|
19054
|
+
__decorate([
|
|
19055
|
+
queryAsync("sgds-input")
|
|
19056
|
+
], ToBeValidatedElement.prototype, "sgdsInput", void 0);
|
|
19057
|
+
return ToBeValidatedElement;
|
|
19058
|
+
};
|
|
18829
19059
|
|
|
18830
19060
|
var css_248z$9 = css`:host{--sgds-spinner-bg:var(--sgds-primary-bg);display:inline-flex}:host([variant=neutral]){--sgds-spinner-bg:var(--sgds-neutral-color-emphasis)}.spinner-wrapper{align-items:center;display:flex;flex-direction:column;gap:var(--sgds-gap-2-xs)}.spinner{animation:spinner .75s linear infinite;border-radius:50%;border-right:.25em solid var(--sgds-alternate-bg);border:.25em solid var(--sgds-alternate-bg);border-right-color:var(--sgds-spinner-bg);color:var(--sgds-spinner-color);display:inline-flex;height:var(--sgds-dimension-32);width:var(--sgds-dimension-32)}.spinner-sm{height:var(--sgds-dimension-24);width:var(--sgds-dimension-24)}.spinner-lg{height:var(--sgds-dimension-48);width:var(--sgds-dimension-48)}.spinner-label{font-size:var(--sgds-font-size-1)}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.5s}}
|
|
18831
19061
|
|
|
@@ -18872,156 +19102,6 @@
|
|
|
18872
19102
|
property({ reflect: true, type: String })
|
|
18873
19103
|
], SgdsSpinner.prototype, "label", void 0);
|
|
18874
19104
|
|
|
18875
|
-
// @defaultValue decorator
|
|
18876
|
-
const defaultValue = (propertyName = "value") => (proto, key) => {
|
|
18877
|
-
const ctor = proto.constructor;
|
|
18878
|
-
const attributeChangedCallback = ctor.prototype.attributeChangedCallback;
|
|
18879
|
-
ctor.prototype.attributeChangedCallback = function (name, old, value) {
|
|
18880
|
-
var _a;
|
|
18881
|
-
const options = ctor.getPropertyOptions(propertyName);
|
|
18882
|
-
const attributeName = (typeof options.attribute === "string" ? options.attribute : propertyName).toLowerCase();
|
|
18883
|
-
if (name === attributeName) {
|
|
18884
|
-
const converter = options.converter || defaultConverter;
|
|
18885
|
-
const fromAttribute = typeof converter === "function" ? converter : (_a = converter === null || converter === void 0 ? void 0 : converter.fromAttribute) !== null && _a !== void 0 ? _a : defaultConverter.fromAttribute;
|
|
18886
|
-
const newValue = fromAttribute(value, options.type);
|
|
18887
|
-
if (this[propertyName] !== newValue) {
|
|
18888
|
-
this[key] = newValue;
|
|
18889
|
-
}
|
|
18890
|
-
}
|
|
18891
|
-
attributeChangedCallback.call(this, name, old, value);
|
|
18892
|
-
};
|
|
18893
|
-
};
|
|
18894
|
-
|
|
18895
|
-
const reportValidityOverloads = new WeakMap();
|
|
18896
|
-
class FormSubmitController {
|
|
18897
|
-
constructor(host, options) {
|
|
18898
|
-
(this.host = host).addController(this);
|
|
18899
|
-
this.options = Object.assign({ form: (input) => {
|
|
18900
|
-
return input.closest("form");
|
|
18901
|
-
}, name: (input) => input.name, value: (input) => input.value, defaultValue: (input) => input.defaultValue, disabled: (input) => input.disabled, reportValidity: (input) => {
|
|
18902
|
-
return typeof input.reportValidity === "function" ? input.reportValidity() : true;
|
|
18903
|
-
}, setValue: (input, value) => {
|
|
18904
|
-
input.value = value;
|
|
18905
|
-
} }, options);
|
|
18906
|
-
this.handleFormData = this.handleFormData.bind(this);
|
|
18907
|
-
this.handleFormSubmit = this.handleFormSubmit.bind(this);
|
|
18908
|
-
this.handleFormReset = this.handleFormReset.bind(this);
|
|
18909
|
-
this.reportFormValidity = this.reportFormValidity.bind(this);
|
|
18910
|
-
}
|
|
18911
|
-
hostConnected() {
|
|
18912
|
-
this.form = this.options.form(this.host);
|
|
18913
|
-
if (this.form) {
|
|
18914
|
-
this.form.addEventListener("formdata", this.handleFormData);
|
|
18915
|
-
this.form.addEventListener("submit", this.handleFormSubmit);
|
|
18916
|
-
this.form.addEventListener("reset", this.handleFormReset);
|
|
18917
|
-
// Overload the form's reportValidity() method so it looks at Shoelace form controls
|
|
18918
|
-
if (!reportValidityOverloads.has(this.form)) {
|
|
18919
|
-
reportValidityOverloads.set(this.form, this.form.reportValidity);
|
|
18920
|
-
this.form.reportValidity = () => this.reportFormValidity();
|
|
18921
|
-
}
|
|
18922
|
-
}
|
|
18923
|
-
}
|
|
18924
|
-
hostDisconnected() {
|
|
18925
|
-
if (this.form) {
|
|
18926
|
-
this.form.removeEventListener("formdata", this.handleFormData);
|
|
18927
|
-
this.form.removeEventListener("submit", this.handleFormSubmit);
|
|
18928
|
-
this.form.removeEventListener("reset", this.handleFormReset);
|
|
18929
|
-
// Remove the overload and restore the original method
|
|
18930
|
-
if (reportValidityOverloads.has(this.form)) {
|
|
18931
|
-
this.form.reportValidity = reportValidityOverloads.get(this.form);
|
|
18932
|
-
reportValidityOverloads.delete(this.form);
|
|
18933
|
-
}
|
|
18934
|
-
this.form = undefined;
|
|
18935
|
-
}
|
|
18936
|
-
}
|
|
18937
|
-
handleFormData(event) {
|
|
18938
|
-
const disabled = this.options.disabled(this.host);
|
|
18939
|
-
const name = this.options.name(this.host);
|
|
18940
|
-
const value = this.options.value(this.host);
|
|
18941
|
-
if (!disabled && typeof name === "string" && typeof value !== "undefined") {
|
|
18942
|
-
if (Array.isArray(value)) {
|
|
18943
|
-
value.forEach(val => {
|
|
18944
|
-
event.formData.append(name, val.toString());
|
|
18945
|
-
});
|
|
18946
|
-
}
|
|
18947
|
-
else {
|
|
18948
|
-
event.formData.append(name, value.toString());
|
|
18949
|
-
}
|
|
18950
|
-
}
|
|
18951
|
-
}
|
|
18952
|
-
handleFormSubmit(event) {
|
|
18953
|
-
const disabled = this.options.disabled(this.host);
|
|
18954
|
-
const reportValidity = this.options.reportValidity;
|
|
18955
|
-
if (this.form && !this.form.noValidate && !disabled && !reportValidity(this.host)) {
|
|
18956
|
-
event.preventDefault();
|
|
18957
|
-
event.stopImmediatePropagation();
|
|
18958
|
-
}
|
|
18959
|
-
}
|
|
18960
|
-
handleFormReset() {
|
|
18961
|
-
this.options.setValue(this.host, this.options.defaultValue(this.host));
|
|
18962
|
-
}
|
|
18963
|
-
reportFormValidity() {
|
|
18964
|
-
//
|
|
18965
|
-
// Shoelace form controls work hard to act like regular form controls. They support the Constraint Validation API
|
|
18966
|
-
// and its associated methods such as setCustomValidity() and reportValidity(). However, the HTMLFormElement also
|
|
18967
|
-
// has a reportValidity() method that will trigger validation on all child controls. Since we're not yet using
|
|
18968
|
-
// ElementInternals, we need to overload this method so it looks for any element with the reportValidity() method.
|
|
18969
|
-
//
|
|
18970
|
-
// We preserve the original method in a WeakMap, but we don't call it from the overload because that would trigger
|
|
18971
|
-
// validations in an unexpected order. When the element disconnects, we revert to the original behavior. This won't
|
|
18972
|
-
// be necessary once we can use ElementInternals.
|
|
18973
|
-
//
|
|
18974
|
-
// Note that we're also honoring the form's novalidate attribute.
|
|
18975
|
-
//
|
|
18976
|
-
if (this.form && !this.form.noValidate) {
|
|
18977
|
-
// This seems sloppy, but checking all elements will cover native inputs, Shoelace inputs, and other custom
|
|
18978
|
-
// elements that support the constraint validation API.
|
|
18979
|
-
const elements = this.form.querySelectorAll("*");
|
|
18980
|
-
for (const element of elements) {
|
|
18981
|
-
if (typeof element.reportValidity === "function") {
|
|
18982
|
-
if (!element.reportValidity()) {
|
|
18983
|
-
return false;
|
|
18984
|
-
}
|
|
18985
|
-
}
|
|
18986
|
-
}
|
|
18987
|
-
}
|
|
18988
|
-
return true;
|
|
18989
|
-
}
|
|
18990
|
-
doAction(type, invoker) {
|
|
18991
|
-
if (this.form) {
|
|
18992
|
-
const button = document.createElement("button");
|
|
18993
|
-
button.type = type;
|
|
18994
|
-
button.style.position = "absolute";
|
|
18995
|
-
button.style.width = "0";
|
|
18996
|
-
button.style.height = "0";
|
|
18997
|
-
button.style.clipPath = "inset(50%)";
|
|
18998
|
-
button.style.overflow = "hidden";
|
|
18999
|
-
button.style.whiteSpace = "nowrap";
|
|
19000
|
-
// Pass form attributes through to the temporary button
|
|
19001
|
-
if (invoker) {
|
|
19002
|
-
["formaction", "formmethod", "formnovalidate", "formtarget"].forEach(attr => {
|
|
19003
|
-
if (invoker.hasAttribute(attr)) {
|
|
19004
|
-
button.setAttribute(attr, invoker.getAttribute(attr));
|
|
19005
|
-
}
|
|
19006
|
-
});
|
|
19007
|
-
}
|
|
19008
|
-
this.form.append(button);
|
|
19009
|
-
button.click();
|
|
19010
|
-
button.remove();
|
|
19011
|
-
}
|
|
19012
|
-
}
|
|
19013
|
-
/** Resets the form, restoring all the control to their default value */
|
|
19014
|
-
reset(invoker) {
|
|
19015
|
-
this.doAction("reset", invoker);
|
|
19016
|
-
}
|
|
19017
|
-
/** Submits the form, triggering validation and form data injection. */
|
|
19018
|
-
submit(invoker) {
|
|
19019
|
-
// Calling form.submit() bypasses the submit event and constraint validation. To prevent this, we can inject a
|
|
19020
|
-
// native submit button into the form, "click" it, then remove it to simulate a standard form submission.
|
|
19021
|
-
this.doAction("submit", invoker);
|
|
19022
|
-
}
|
|
19023
|
-
}
|
|
19024
|
-
|
|
19025
19105
|
var css_248z$7 = css`.form-control-container{display:flex;flex-direction:column;gap:var(--sgds-form-gap-md)}.form-control-container.disabled{opacity:var(--sgds-opacity-50)}.form-control-group{align-items:center;background-color:var(--sgds-form-bg);border:var(--sgds-form-border-width-default) solid var(--sgds-form-border-color);border-radius:var(--sgds-form-border-radius-md);display:flex;gap:var(--sgds-form-gap-md);height:var(--sgds-dimension-48);justify-content:center;min-width:var(--sgds-dimension-256);padding:0 var(--sgds-form-padding-x);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:-webkit-fill-available;width:-moz-available}.form-control{appearance:none;background-clip:padding-box;background:none;border:none;color:var(--sgds-form-color);display:block;flex-grow:1;font-size:var(--sgds-font-size-2);line-height:var(--sgds-line-height-heading);outline:none;padding:0}.form-control-group>.form-control:focus{z-index:3}@media (prefers-reduced-motion:reduce){.form-control-group{transition:none}}.form-control-group.readonly{border-color:var(--sgds-form-border-color-muted)}.form-control-group:not(.disabled):not(.is-invalid):hover{border:var(--sgds-form-border-width-thick) solid var(--sgds-form-border-color-emphasis)}.form-control-group:not(.disabled):not(.is-invalid):focus,.form-control-group:not(.disabled):not(.is-invalid):focus-within{border:var(--sgds-form-border-width-thick) solid var(--sgds-form-border-color-emphasis);box-shadow:var(--sgds-form-box-shadow-focus);outline:0}.form-control-group.is-invalid{border:var(--sgds-form-border-width-thick) solid var(--sgds-form-danger-border-color)}.form-control-group.disabled{background-color:var(--sgds-form-bg-muted)}:host(.quantity-toggle) input::-webkit-inner-spin-button{appearance:none;margin:0}:host(.quantity-toggle) input{text-align:center}.form-control-icon{align-items:center;display:flex;height:var(--sgds-form-icon-size-lg);justify-content:center;width:var(--sgds-form-icon-size-lg)}.form-control-prefix,.form-control-suffix{color:var(--sgds-form-color-subtle)}.form-control-group.quantity-toggle{padding:0}`;
|
|
19026
19106
|
|
|
19027
19107
|
/**
|
|
@@ -19031,14 +19111,13 @@
|
|
|
19031
19111
|
* @event sgds-input - Emitted when the control receives input and its value changes.
|
|
19032
19112
|
* @event sgds-focus - Emitted when input is in focus.
|
|
19033
19113
|
* @event sgds-blur - Emitted when input is not in focus.
|
|
19114
|
+
* @event sgds-invalid - Emitted when input is invalid
|
|
19115
|
+
* @event sgds-valid - Emitted when input is valid
|
|
19034
19116
|
*
|
|
19035
19117
|
*/
|
|
19036
|
-
class SgdsInput extends FormControlElement {
|
|
19118
|
+
class SgdsInput extends SgdsFormValidatorMixin(ScopedElementsMixin(FormControlElement)) {
|
|
19037
19119
|
constructor() {
|
|
19038
19120
|
super(...arguments);
|
|
19039
|
-
/**@internal */
|
|
19040
|
-
this.formSubmitController = new FormSubmitController(this);
|
|
19041
|
-
/** The type of input which works the same as HTMLInputElement */
|
|
19042
19121
|
this.type = "text";
|
|
19043
19122
|
/** The input's placeholder text. */
|
|
19044
19123
|
this.placeholder = "placeholder";
|
|
@@ -19046,16 +19125,17 @@
|
|
|
19046
19125
|
this.autofocus = false;
|
|
19047
19126
|
/** Makes the input readonly. */
|
|
19048
19127
|
this.readonly = false;
|
|
19049
|
-
/**The input's value attribute. */
|
|
19050
|
-
this.value = "";
|
|
19051
19128
|
/**Gets or sets the default value used to reset this element. The initial value corresponds to the one originally specified in the HTML that created this element. */
|
|
19052
19129
|
this.defaultValue = "";
|
|
19053
19130
|
/** Marks the component as valid. */
|
|
19054
19131
|
this.valid = false;
|
|
19055
19132
|
/** Marks the component as loading. */
|
|
19056
19133
|
this.loading = false;
|
|
19057
|
-
|
|
19058
|
-
this.
|
|
19134
|
+
/** Makes the input a required field. */
|
|
19135
|
+
this.required = false;
|
|
19136
|
+
/**The input's value attribute. */
|
|
19137
|
+
this.value = "";
|
|
19138
|
+
this._isTouched = false;
|
|
19059
19139
|
}
|
|
19060
19140
|
/**@internal */
|
|
19061
19141
|
static get scopedElements() {
|
|
@@ -19071,60 +19151,79 @@
|
|
|
19071
19151
|
blur() {
|
|
19072
19152
|
this.input.blur();
|
|
19073
19153
|
}
|
|
19074
|
-
/** Checks for validity and shows the browser's validation message if the control is invalid. */
|
|
19075
|
-
reportValidity() {
|
|
19076
|
-
return this.input.reportValidity();
|
|
19077
|
-
}
|
|
19078
|
-
/** Sets a custom validation message. Pass an empty string to restore validity */
|
|
19079
|
-
setCustomValidity(err) {
|
|
19080
|
-
return this.input.setCustomValidity(err);
|
|
19081
|
-
}
|
|
19082
19154
|
/** Programatically sets the invalid state of the input. Pass in boolean value in the argument */
|
|
19083
19155
|
setInvalid(bool) {
|
|
19084
19156
|
this.invalid = bool;
|
|
19157
|
+
if (bool) {
|
|
19158
|
+
this.emit("sgds-invalid");
|
|
19159
|
+
}
|
|
19160
|
+
else {
|
|
19161
|
+
this.emit("sgds-valid");
|
|
19162
|
+
}
|
|
19085
19163
|
}
|
|
19086
|
-
|
|
19087
|
-
|
|
19164
|
+
/**
|
|
19165
|
+
* Checks for validity. Under the hood, HTMLFormElement's reportValidity method calls this method to check for component's validity state
|
|
19166
|
+
* Note that the native error popup is prevented for SGDS form components by default. Instead the validation message shows up in the feedback container of SgdsInput
|
|
19167
|
+
*/
|
|
19168
|
+
reportValidity() {
|
|
19169
|
+
return this._mixinReportValidity();
|
|
19088
19170
|
}
|
|
19089
|
-
|
|
19090
|
-
|
|
19091
|
-
|
|
19171
|
+
/**
|
|
19172
|
+
* Checks for validity without any native error popup message
|
|
19173
|
+
*/
|
|
19174
|
+
checkValidity() {
|
|
19175
|
+
return this._mixinCheckValidity();
|
|
19176
|
+
}
|
|
19177
|
+
/**
|
|
19178
|
+
* Returns the ValidityState object
|
|
19179
|
+
*/
|
|
19180
|
+
get validity() {
|
|
19181
|
+
return this._mixinGetValidity();
|
|
19182
|
+
}
|
|
19183
|
+
/**
|
|
19184
|
+
* Returns the validation message based on the ValidityState
|
|
19185
|
+
*/
|
|
19186
|
+
get validationMessage() {
|
|
19187
|
+
return this._mixinGetValidationMessage();
|
|
19092
19188
|
}
|
|
19093
19189
|
_handleFocus() {
|
|
19094
19190
|
this.emit("sgds-focus");
|
|
19095
19191
|
}
|
|
19096
19192
|
_handleBlur() {
|
|
19193
|
+
this._isTouched = true;
|
|
19097
19194
|
this.emit("sgds-blur");
|
|
19098
19195
|
}
|
|
19099
|
-
|
|
19100
|
-
|
|
19101
|
-
|
|
19102
|
-
|
|
19103
|
-
|
|
19104
|
-
|
|
19105
|
-
|
|
19106
|
-
|
|
19107
|
-
|
|
19108
|
-
|
|
19109
|
-
|
|
19196
|
+
_handleClick() {
|
|
19197
|
+
this.focus();
|
|
19198
|
+
}
|
|
19199
|
+
_handleChange(e) {
|
|
19200
|
+
this.value = this.input.value;
|
|
19201
|
+
this.emit("sgds-change");
|
|
19202
|
+
super._mixinHandleChange(e);
|
|
19203
|
+
}
|
|
19204
|
+
_handleInputChange(e) {
|
|
19205
|
+
this.value = this.input.value;
|
|
19206
|
+
this.emit("sgds-input");
|
|
19207
|
+
super._mixinHandleInputChange(e);
|
|
19208
|
+
}
|
|
19209
|
+
/** @internal */
|
|
19210
|
+
_handleIsTouched() {
|
|
19211
|
+
if (this._isTouched) {
|
|
19212
|
+
this.setInvalid(!this._mixinCheckValidity());
|
|
19110
19213
|
}
|
|
19111
19214
|
}
|
|
19112
19215
|
_handleDisabledChange() {
|
|
19113
19216
|
// Disabled form controls are always valid, so we need to recheck validity when the state changes
|
|
19114
|
-
this.
|
|
19115
|
-
this.invalid = !this.input.checkValidity();
|
|
19116
|
-
}
|
|
19117
|
-
_handleValueChange() {
|
|
19118
|
-
this.invalid = !this.input.checkValidity();
|
|
19217
|
+
this.setInvalid(false);
|
|
19119
19218
|
}
|
|
19120
19219
|
_renderInput() {
|
|
19220
|
+
const wantFeedbackStyle = this.hasFeedback === "both" || this.hasFeedback === "style";
|
|
19121
19221
|
return html `
|
|
19122
19222
|
<div
|
|
19123
19223
|
class="form-control-group ${classMap({
|
|
19124
19224
|
disabled: this.disabled,
|
|
19125
19225
|
readonly: this.readonly,
|
|
19126
|
-
"is-invalid": this.invalid &&
|
|
19127
|
-
"quantity-toggle": this.classList.contains("quantity-toggle")
|
|
19226
|
+
"is-invalid": this.invalid && wantFeedbackStyle
|
|
19128
19227
|
})}"
|
|
19129
19228
|
@click=${this._handleClick}
|
|
19130
19229
|
>
|
|
@@ -19133,7 +19232,7 @@
|
|
|
19133
19232
|
<input
|
|
19134
19233
|
class="form-control"
|
|
19135
19234
|
type=${this.type}
|
|
19136
|
-
id=${this.
|
|
19235
|
+
id=${this._controlId}
|
|
19137
19236
|
name=${ifDefined(this.name)}
|
|
19138
19237
|
placeholder=${ifDefined(this.placeholder)}
|
|
19139
19238
|
aria-invalid=${this.invalid ? "true" : "false"}
|
|
@@ -19148,15 +19247,14 @@
|
|
|
19148
19247
|
min=${ifDefined(this.min)}
|
|
19149
19248
|
max=${ifDefined(this.max)}
|
|
19150
19249
|
step=${ifDefined(this.step)}
|
|
19151
|
-
@input=${() => this.
|
|
19152
|
-
@change=${() => this._handleChange(
|
|
19153
|
-
@keydown=${this._handleKeyDown}
|
|
19250
|
+
@input=${(e) => this._handleInputChange(e)}
|
|
19251
|
+
@change=${(e) => this._handleChange(e)}
|
|
19154
19252
|
@invalid=${() => this.setInvalid(true)}
|
|
19155
19253
|
@focus=${this._handleFocus}
|
|
19156
19254
|
@blur=${this._handleBlur}
|
|
19157
|
-
aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this.
|
|
19158
|
-
aria-labelledby="${this.
|
|
19159
|
-
? `${this.
|
|
19255
|
+
aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}
|
|
19256
|
+
aria-labelledby="${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback
|
|
19257
|
+
? `${this._controlId}-invalid`
|
|
19160
19258
|
: ""}"
|
|
19161
19259
|
/>
|
|
19162
19260
|
${this.loading ? html `<sgds-spinner size="sm"></sgds-spinner>` : nothing}
|
|
@@ -19173,7 +19271,8 @@
|
|
|
19173
19271
|
`;
|
|
19174
19272
|
}
|
|
19175
19273
|
_renderFeedback() {
|
|
19176
|
-
|
|
19274
|
+
const wantFeedbackText = this.hasFeedback === "both" || this.hasFeedback === "text";
|
|
19275
|
+
return this.invalid && wantFeedbackText
|
|
19177
19276
|
? html ` <div class="invalid-feedback-container">
|
|
19178
19277
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
|
|
19179
19278
|
<path
|
|
@@ -19181,15 +19280,17 @@
|
|
|
19181
19280
|
fill="#B90000"
|
|
19182
19281
|
/>
|
|
19183
19282
|
</svg>
|
|
19184
|
-
<div id="${this.
|
|
19283
|
+
<div id="${this._controlId}-invalid" class="invalid-feedback">
|
|
19284
|
+
${this.invalidFeedback ? this.invalidFeedback : this.input.validationMessage}
|
|
19285
|
+
</div>
|
|
19185
19286
|
</div>`
|
|
19186
19287
|
: html `${this._renderHintText()}`;
|
|
19187
19288
|
}
|
|
19188
19289
|
_renderLabel() {
|
|
19189
19290
|
const labelTemplate = html `
|
|
19190
19291
|
<label
|
|
19191
|
-
for=${this.
|
|
19192
|
-
id=${this.
|
|
19292
|
+
for=${this._controlId}
|
|
19293
|
+
id=${this._labelId}
|
|
19193
19294
|
class=${classMap({
|
|
19194
19295
|
"form-label": true,
|
|
19195
19296
|
required: this.required
|
|
@@ -19200,7 +19301,7 @@
|
|
|
19200
19301
|
return this.label && labelTemplate;
|
|
19201
19302
|
}
|
|
19202
19303
|
_renderHintText() {
|
|
19203
|
-
const hintTextTemplate = html ` <div id="${this.
|
|
19304
|
+
const hintTextTemplate = html ` <div id="${this._controlId}Help" class="form-text">${this.hintText}</div> `;
|
|
19204
19305
|
return this.hintText && hintTextTemplate;
|
|
19205
19306
|
}
|
|
19206
19307
|
render() {
|
|
@@ -19215,10 +19316,7 @@
|
|
|
19215
19316
|
`;
|
|
19216
19317
|
}
|
|
19217
19318
|
}
|
|
19218
|
-
SgdsInput.styles = [...FormControlElement.styles, css_248z$7];
|
|
19219
|
-
__decorate([
|
|
19220
|
-
query("input.form-control")
|
|
19221
|
-
], SgdsInput.prototype, "input", void 0);
|
|
19319
|
+
SgdsInput.styles = [...FormControlElement.styles, css_248z$a, css_248z$7];
|
|
19222
19320
|
__decorate([
|
|
19223
19321
|
property({ reflect: true })
|
|
19224
19322
|
], SgdsInput.prototype, "type", void 0);
|
|
@@ -19237,6 +19335,12 @@
|
|
|
19237
19335
|
__decorate([
|
|
19238
19336
|
property({ type: Number, reflect: true })
|
|
19239
19337
|
], SgdsInput.prototype, "maxlength", void 0);
|
|
19338
|
+
__decorate([
|
|
19339
|
+
property()
|
|
19340
|
+
], SgdsInput.prototype, "min", void 0);
|
|
19341
|
+
__decorate([
|
|
19342
|
+
property()
|
|
19343
|
+
], SgdsInput.prototype, "max", void 0);
|
|
19240
19344
|
__decorate([
|
|
19241
19345
|
property({ type: String, reflect: true })
|
|
19242
19346
|
], SgdsInput.prototype, "placeholder", void 0);
|
|
@@ -19253,8 +19357,11 @@
|
|
|
19253
19357
|
property()
|
|
19254
19358
|
], SgdsInput.prototype, "step", void 0);
|
|
19255
19359
|
__decorate([
|
|
19256
|
-
property({ reflect: true })
|
|
19257
|
-
], SgdsInput.prototype, "
|
|
19360
|
+
property({ type: String, reflect: true })
|
|
19361
|
+
], SgdsInput.prototype, "hasFeedback", void 0);
|
|
19362
|
+
__decorate([
|
|
19363
|
+
property({ type: String, reflect: true })
|
|
19364
|
+
], SgdsInput.prototype, "invalidFeedback", void 0);
|
|
19258
19365
|
__decorate([
|
|
19259
19366
|
defaultValue()
|
|
19260
19367
|
], SgdsInput.prototype, "defaultValue", void 0);
|
|
@@ -19264,12 +19371,21 @@
|
|
|
19264
19371
|
__decorate([
|
|
19265
19372
|
property({ type: Boolean, reflect: true })
|
|
19266
19373
|
], SgdsInput.prototype, "loading", void 0);
|
|
19374
|
+
__decorate([
|
|
19375
|
+
property({ type: Boolean, reflect: true })
|
|
19376
|
+
], SgdsInput.prototype, "required", void 0);
|
|
19377
|
+
__decorate([
|
|
19378
|
+
property({ reflect: true })
|
|
19379
|
+
], SgdsInput.prototype, "value", void 0);
|
|
19380
|
+
__decorate([
|
|
19381
|
+
state()
|
|
19382
|
+
], SgdsInput.prototype, "_isTouched", void 0);
|
|
19383
|
+
__decorate([
|
|
19384
|
+
watch("_isTouched", { waitUntilFirstUpdate: true })
|
|
19385
|
+
], SgdsInput.prototype, "_handleIsTouched", null);
|
|
19267
19386
|
__decorate([
|
|
19268
19387
|
watch("disabled", { waitUntilFirstUpdate: true })
|
|
19269
19388
|
], SgdsInput.prototype, "_handleDisabledChange", null);
|
|
19270
|
-
__decorate([
|
|
19271
|
-
watch("value", { waitUntilFirstUpdate: true })
|
|
19272
|
-
], SgdsInput.prototype, "_handleValueChange", null);
|
|
19273
19389
|
|
|
19274
19390
|
var css_248z$6 = css`.input-container{display:flex;flex-direction:row;width:-webkit-fill-available;width:-moz-available}.form-control-group{border-radius:var(--sgds-form-border-radius-md) 0 0 var(--sgds-form-border-radius-md)}.input-feedback{display:flex;flex-direction:column;width:-webkit-fill-available;width:-moz-available}`;
|
|
19275
19391
|
|
|
@@ -19306,15 +19422,28 @@
|
|
|
19306
19422
|
}
|
|
19307
19423
|
};
|
|
19308
19424
|
this.type = "text";
|
|
19309
|
-
this.hasFeedback =
|
|
19310
|
-
this.
|
|
19425
|
+
this.hasFeedback = "both";
|
|
19426
|
+
// this._handleChange = () => null;
|
|
19427
|
+
// this._handleInputChange = () => null
|
|
19428
|
+
}
|
|
19429
|
+
// connectedCallback(): void {
|
|
19430
|
+
// super.connectedCallback();
|
|
19431
|
+
// this.addEventListener("sgds-change", this._validateInput);
|
|
19432
|
+
// }
|
|
19433
|
+
async _handleChange(e) {
|
|
19434
|
+
this.value = this.input.value;
|
|
19435
|
+
this.emit("sgds-change");
|
|
19436
|
+
super._mixinHandleChange(e);
|
|
19437
|
+
await this._validateInput();
|
|
19311
19438
|
}
|
|
19312
|
-
|
|
19313
|
-
|
|
19314
|
-
this.
|
|
19439
|
+
/** @internal */
|
|
19440
|
+
_handleIsTouched() {
|
|
19441
|
+
if (this._isTouched && this.required) {
|
|
19442
|
+
this.invalid = true;
|
|
19443
|
+
}
|
|
19315
19444
|
}
|
|
19316
|
-
async firstUpdated(
|
|
19317
|
-
super.firstUpdated(
|
|
19445
|
+
async firstUpdated(changedProperties) {
|
|
19446
|
+
super.firstUpdated(changedProperties);
|
|
19318
19447
|
this._applyInputMask(this.dateFormat);
|
|
19319
19448
|
}
|
|
19320
19449
|
async _applyInputMask(dateFormat) {
|
|
@@ -19411,8 +19540,11 @@
|
|
|
19411
19540
|
__decorate([
|
|
19412
19541
|
queryAsync("input")
|
|
19413
19542
|
], DatepickerInput.prototype, "shadowInput", void 0);
|
|
19543
|
+
__decorate([
|
|
19544
|
+
watch("_isTouched", { waitUntilFirstUpdate: true })
|
|
19545
|
+
], DatepickerInput.prototype, "_handleIsTouched", null);
|
|
19414
19546
|
|
|
19415
|
-
var css_248z$5 = css`:host{--sgds-btn-font-weight:var(--sgds-font-weight-regular);--sgds-btn-bg:var(--sgds-primary-bg);--sgds-btn-hover-bg:var(--sgds-primary-bg-emphasis);--sgds-btn-border-radius:var(--sgds-border-radius-md)}:host([variant=primary]){--sgds-btn-bg:var(--sgds-primary-bg);--sgds-btn-color:var(--sgds-default-color-on-dark)}:host([variant=outline]){--sgds-btn-bg:var(--sgds-default-bg-transparent);--sgds-btn-hover-bg:var(--sgds-primary-bg-translucent);--sgds-btn-color:var(--sgds-primary-color);--sgds-btn-border-width:var(--sgds-border-width-1);--sgds-btn-border-color:var(--sgds-primary-border-color)}:host([variant=ghost]){--sgds-btn-bg:var(--sgds-default-bg-transparent);--sgds-btn-hover-bg:var(--sgds-primary-bg-translucent);--sgds-btn-color:var(--sgds-primary-color)}:host([variant=danger]){--sgds-btn-bg:var(--sgds-danger-bg);--sgds-btn-hover-bg:var(--sgds-danger-bg-emphasis);--sgds-btn-color:var(--sgds-default-color-on-dark)}.btn{align-items:center;background-color:var(--sgds-btn-bg);border:1px solid var(--sgds-default-border-color-transparent);border-radius:var(--sgds-btn-border-radius);color:var(--sgds-default-color-on-dark);cursor:pointer;display:inline-flex;font-size:var(--sgds-font-size-2);font-weight:var(--sgds-btn-font-weight);gap:var(--sgds-gap-2-xs);height:var(--sgds-dimension-48);justify-content:center;line-height:var(--sgds-line-height-md);min-width:var(--sgds-dimension-96);padding:0 var(--sgds-padding-lg);text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;user-select:none;vertical-align:middle}.btn-ghost,.btn-outline,.btn-primary{color:var(--sgds-btn-color)}.btn-outline{border:var(--sgds-btn-border-width) solid var(--sgds-btn-border-color)}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn.active,.btn:hover{background-color:var(--sgds-btn-hover-bg)}.btn:focus,.btn:focus-visible{background-color:var(--sgds-btn-hover-bg);border-color:transparent;box-shadow:var(--sgds-box-shadow-focus);outline:0}.btn.disabled,.btn:disabled{color:var(--sgds-btn-color);opacity:var(--sgds-opacity-50);pointer-events:none}.btn-lg{font-size:var(--sgds-font-size-3);height:var(--sgds-dimension-56);min-width:var(--sgds-dimension-112);padding:0 var(--sgds-padding-xl)}.btn-sm{font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-40);min-width:var(--sgds-dimension-80);padding:0 var(--sgds-padding-md)}`;
|
|
19547
|
+
var css_248z$5 = css`:host{--sgds-btn-font-weight:var(--sgds-font-weight-regular);--sgds-btn-bg:var(--sgds-primary-bg);--sgds-btn-hover-bg:var(--sgds-primary-bg-emphasis);--sgds-btn-border-radius:var(--sgds-border-radius-md)}:host([variant=primary]){--sgds-btn-bg:var(--sgds-primary-bg);--sgds-btn-color:var(--sgds-default-color-on-dark)}:host([variant=outline]){--sgds-btn-bg:var(--sgds-default-bg-transparent);--sgds-btn-hover-bg:var(--sgds-primary-bg-translucent);--sgds-btn-color:var(--sgds-primary-color);--sgds-btn-border-width:var(--sgds-border-width-1);--sgds-btn-border-color:var(--sgds-primary-border-color)}:host([variant=ghost]){--sgds-btn-bg:var(--sgds-default-bg-transparent);--sgds-btn-hover-bg:var(--sgds-primary-bg-translucent);--sgds-btn-color:var(--sgds-primary-color)}:host([variant=danger]){--sgds-btn-bg:var(--sgds-danger-bg);--sgds-btn-hover-bg:var(--sgds-danger-bg-emphasis);--sgds-btn-color:var(--sgds-default-color-on-dark)}.btn{align-items:center;background-color:var(--sgds-btn-bg);border:1px solid var(--sgds-default-border-color-transparent);border-radius:var(--sgds-btn-border-radius);color:var(--sgds-default-color-on-dark);cursor:pointer;display:inline-flex;font-size:var(--sgds-font-size-2);font-weight:var(--sgds-btn-font-weight);gap:var(--sgds-gap-2-xs);height:var(--sgds-dimension-48);justify-content:center;line-height:var(--sgds-line-height-md);min-width:var(--sgds-dimension-96);padding:0 var(--sgds-padding-lg);text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;user-select:none;vertical-align:middle}.btn-ghost,.btn-outline,.btn-primary{color:var(--sgds-btn-color)}.btn-outline{border:var(--sgds-btn-border-width) solid var(--sgds-btn-border-color)}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn.active,.btn:hover{background-color:var(--sgds-btn-hover-bg)}.btn:focus,.btn:focus-visible{background-color:var(--sgds-btn-hover-bg);border-color:transparent;box-shadow:var(--sgds-box-shadow-focus);outline:0}.btn.disabled,.btn:disabled{color:var(--sgds-btn-color);opacity:var(--sgds-opacity-50);pointer-events:none}.btn-lg{font-size:var(--sgds-font-size-3);height:var(--sgds-dimension-56);min-width:var(--sgds-dimension-112);padding:0 var(--sgds-padding-xl)}.btn-sm{font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-40);min-width:var(--sgds-dimension-80);padding:0 var(--sgds-padding-md)}.btn slot::slotted(*){color:var(--sgds-btn-color)}`;
|
|
19416
19548
|
|
|
19417
19549
|
class ButtonElement extends SgdsElement {
|
|
19418
19550
|
constructor() {
|
|
@@ -19485,6 +19617,63 @@
|
|
|
19485
19617
|
|
|
19486
19618
|
var css_248z$4 = css`a[target=_blank]:after{background-color:currentColor;content:"/";display:inline-block;margin:0 .125rem;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-up-right"><path fill-rule="evenodd" d="M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5z"/><path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0v-5z"/></svg>');mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-up-right"><path fill-rule="evenodd" d="M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5z"/><path fill-rule="evenodd" d="M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0v-5z"/></svg>');-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;mask-size:73%;-webkit-mask-size:73%;padding:0 .45em}`;
|
|
19487
19619
|
|
|
19620
|
+
/**
|
|
19621
|
+
* A controller to help with form submission
|
|
19622
|
+
*/
|
|
19623
|
+
class FormSubmitController {
|
|
19624
|
+
constructor(host, options) {
|
|
19625
|
+
(this.host = host).addController(this);
|
|
19626
|
+
this.options = Object.assign({ form: (input) => {
|
|
19627
|
+
return input.closest("form");
|
|
19628
|
+
} }, options);
|
|
19629
|
+
}
|
|
19630
|
+
hostConnected() {
|
|
19631
|
+
this.form = this.options.form(this.host);
|
|
19632
|
+
}
|
|
19633
|
+
hostDisconnected() {
|
|
19634
|
+
if (this.form) {
|
|
19635
|
+
this.form = undefined;
|
|
19636
|
+
}
|
|
19637
|
+
}
|
|
19638
|
+
/**
|
|
19639
|
+
* Creates a temporary native HTML button that can participate in form and invoke form submits and reset
|
|
19640
|
+
* Button is removed once action is performed
|
|
19641
|
+
*/
|
|
19642
|
+
doAction(type, invoker) {
|
|
19643
|
+
if (this.form) {
|
|
19644
|
+
const button = document.createElement("button");
|
|
19645
|
+
button.type = type;
|
|
19646
|
+
button.style.position = "absolute";
|
|
19647
|
+
button.style.width = "0";
|
|
19648
|
+
button.style.height = "0";
|
|
19649
|
+
button.style.clipPath = "inset(50%)";
|
|
19650
|
+
button.style.overflow = "hidden";
|
|
19651
|
+
button.style.whiteSpace = "nowrap";
|
|
19652
|
+
// Pass form attributes through to the temporary button
|
|
19653
|
+
if (invoker) {
|
|
19654
|
+
["formaction", "formmethod", "formnovalidate", "formtarget"].forEach(attr => {
|
|
19655
|
+
if (invoker.hasAttribute(attr)) {
|
|
19656
|
+
button.setAttribute(attr, invoker.getAttribute(attr));
|
|
19657
|
+
}
|
|
19658
|
+
});
|
|
19659
|
+
}
|
|
19660
|
+
this.form.append(button);
|
|
19661
|
+
button.click();
|
|
19662
|
+
button.remove();
|
|
19663
|
+
}
|
|
19664
|
+
}
|
|
19665
|
+
/** Resets the form, restoring all the control to their default value */
|
|
19666
|
+
reset(invoker) {
|
|
19667
|
+
this.doAction("reset", invoker);
|
|
19668
|
+
}
|
|
19669
|
+
/** Submits the form, triggering validation and form data injection. */
|
|
19670
|
+
submit(invoker) {
|
|
19671
|
+
// Calling form.submit() bypasses the submit event and constraint validation. To prevent this, we can inject a
|
|
19672
|
+
// native submit button into the form, "click" it, then remove it to simulate a standard form submission.
|
|
19673
|
+
this.doAction("submit", invoker);
|
|
19674
|
+
}
|
|
19675
|
+
}
|
|
19676
|
+
|
|
19488
19677
|
var css_248z$3 = css`:host{display:inline-flex}.btn.full-width,:host([fullWidth]){max-width:var(--sgds-dimension-320);width:100%}.btn.full-width.has-left-icon{justify-content:flex-start}.btn.full-width.has-right-icon{justify-content:space-between}.btn.full-width.has-left-icon.has-right-icon{justify-content:center}.btn span{padding:0 var(--sgds-padding-2-xs)}`;
|
|
19489
19678
|
|
|
19490
19679
|
/**
|