tiny-essentials 1.24.0 → 1.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/node.js.yml +2 -2
- package/README.md +6 -2
- package/changelog/1/24/1.md +12 -0
- package/dist/v1/TinyBasicsEs.min.js +1 -1
- package/dist/v1/TinyDragger.min.js +1 -1
- package/dist/v1/TinyEssentials.min.js +1 -1
- package/dist/v1/TinyHtml.min.js +1 -1
- package/dist/v1/TinySmartScroller.min.js +1 -1
- package/dist/v1/TinyUploadClicker.min.js +1 -1
- package/dist/v1/basics/array.cjs +28 -0
- package/dist/v1/basics/array.d.mts +16 -0
- package/dist/v1/basics/array.mjs +27 -0
- package/dist/v1/basics/index.cjs +2 -4
- package/dist/v1/basics/index.d.mts +2 -2
- package/dist/v1/basics/index.mjs +2 -4
- package/dist/v1/basics/text.cjs +33 -0
- package/dist/v1/basics/text.d.mts +15 -0
- package/dist/v1/basics/text.mjs +28 -0
- package/dist/v1/build/TinyLevelUp.cjs +2 -2
- package/dist/v1/build/TinyLevelUp.d.mts +1 -1
- package/dist/v1/build/TinyLevelUp.mjs +1 -1
- package/dist/v1/index.cjs +4 -6
- package/dist/v1/index.d.mts +3 -3
- package/dist/v1/index.mjs +7 -6
- package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.cjs +220 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.d.mts +98 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.mjs +207 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlButton.cjs +317 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlButton.d.mts +150 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlButton.mjs +290 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.cjs +48 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.d.mts +36 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.mjs +44 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.cjs +102 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.d.mts +65 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.mjs +91 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.cjs +80 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.d.mts +57 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.mjs +75 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlForm.cjs +244 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlForm.d.mts +129 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlForm.mjs +228 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlIcon.cjs +38 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlIcon.d.mts +24 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlIcon.mjs +33 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlIframe.cjs +222 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlIframe.d.mts +108 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlIframe.mjs +212 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlImage.cjs +286 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlImage.d.mts +125 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlImage.mjs +250 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlInput.cjs +154 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlInput.d.mts +76 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlInput.mjs +134 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlLink.cjs +282 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlLink.d.mts +128 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlLink.mjs +264 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlMedia.cjs +358 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlMedia.d.mts +168 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlMedia.mjs +308 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlScript.cjs +226 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlScript.d.mts +99 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlScript.mjs +209 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlSelect.cjs +267 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlSelect.d.mts +146 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlSelect.mjs +251 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlStyle.cjs +110 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlStyle.d.mts +57 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlStyle.mjs +108 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.cjs +209 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.d.mts +101 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.mjs +189 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.cjs +331 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.d.mts +139 -0
- package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.mjs +299 -0
- package/dist/v1/libs/TinyHtml/index.cjs +202 -0
- package/dist/v1/libs/TinyHtml/index.d.mts +82 -0
- package/dist/v1/libs/TinyHtml/index.mjs +185 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.cjs +121 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.d.mts +67 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.mjs +99 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.cjs +109 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.d.mts +63 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.mjs +92 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.cjs +101 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.d.mts +54 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.mjs +82 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.cjs +181 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.d.mts +97 -0
- package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.mjs +160 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.cjs +90 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.d.mts +54 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.mjs +69 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.cjs +59 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.d.mts +43 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.mjs +45 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.cjs +141 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.d.mts +74 -0
- package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.mjs +114 -0
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.cjs +103 -0
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.d.mts +61 -0
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.mjs +85 -0
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.cjs +115 -0
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.d.mts +56 -0
- package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.mjs +94 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.cjs +172 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.d.mts +74 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.mjs +140 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.cjs +145 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.d.mts +77 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.mjs +121 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.cjs +146 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.d.mts +74 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.mjs +120 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.cjs +151 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.d.mts +75 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.mjs +128 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.cjs +150 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.d.mts +74 -0
- package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.mjs +122 -0
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.cjs +134 -0
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.d.mts +74 -0
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.mjs +110 -0
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.cjs +133 -0
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.d.mts +75 -0
- package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.mjs +111 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.cjs +179 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.d.mts +87 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.mjs +151 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.cjs +126 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.d.mts +70 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.mjs +104 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.cjs +177 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.d.mts +91 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.mjs +153 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.cjs +170 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.d.mts +91 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.mjs +143 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.cjs +173 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.d.mts +89 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.mjs +150 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.cjs +166 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.d.mts +81 -0
- package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.mjs +142 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.cjs +135 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.d.mts +47 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.mjs +122 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.cjs +100 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.d.mts +62 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.mjs +94 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.cjs +159 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.d.mts +77 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.mjs +136 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.cjs +193 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.d.mts +91 -0
- package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.mjs +167 -0
- package/dist/v1/libs/TinyHtml.cjs +260 -3
- package/dist/v1/libs/TinyHtml.d.mts +196 -5
- package/dist/v1/libs/TinyHtml.mjs +238 -3
- package/dist/{legacy/libs/userLevel.d.mts → v1/libs/TinyLevelUp.d.mts} +1 -1
- package/docs/v1/libs/TinyHtml.md +4 -4
- package/package.json +11 -24
- package/dist/_virtual/_commonjsHelpers.cjs +0 -7
- package/dist/_virtual/common.cjs +0 -5
- package/dist/_virtual/index.cjs +0 -9
- package/dist/_virtual/index2.cjs +0 -5
- package/dist/_virtual/trace.cjs +0 -5
- package/dist/legacy/crypto/decrypt.cjs +0 -59
- package/dist/legacy/crypto/decrypt.d.mts +0 -20
- package/dist/legacy/crypto/decrypt.mjs +0 -49
- package/dist/legacy/crypto/default.cjs +0 -23
- package/dist/legacy/crypto/default.d.mts +0 -36
- package/dist/legacy/crypto/default.mjs +0 -19
- package/dist/legacy/crypto/encrypt.cjs +0 -55
- package/dist/legacy/crypto/encrypt.d.mts +0 -21
- package/dist/legacy/crypto/encrypt.mjs +0 -47
- package/dist/legacy/crypto/index.cjs +0 -11
- package/dist/legacy/crypto/index.d.mts +0 -5
- package/dist/legacy/crypto/index.mjs +0 -6
- package/dist/legacy/firebase/cookieSession.cjs +0 -123
- package/dist/legacy/firebase/cookieSession.d.mts +0 -57
- package/dist/legacy/firebase/cookieSession.mjs +0 -115
- package/dist/legacy/firebase/database/index.cjs +0 -14
- package/dist/legacy/firebase/database/index.d.mts +0 -8
- package/dist/legacy/firebase/database/index.mjs +0 -8
- package/dist/legacy/firebase/database/presence.cjs +0 -137
- package/dist/legacy/firebase/database/presence.d.mts +0 -13
- package/dist/legacy/firebase/database/presence.mjs +0 -115
- package/dist/legacy/firebase/database/saveAsync.cjs +0 -149
- package/dist/legacy/firebase/database/saveAsync.d.mts +0 -55
- package/dist/legacy/firebase/database/saveAsync.mjs +0 -148
- package/dist/legacy/firebase/databaseEscape.cjs +0 -45
- package/dist/legacy/firebase/databaseEscape.d.mts +0 -12
- package/dist/legacy/firebase/databaseEscape.mjs +0 -38
- package/dist/legacy/firebase/databaseLogger.cjs +0 -261
- package/dist/legacy/firebase/databaseLogger.d.mts +0 -8
- package/dist/legacy/firebase/databaseLogger.mjs +0 -235
- package/dist/legacy/firebase/discord/api/addGuildMember.cjs +0 -74
- package/dist/legacy/firebase/discord/api/addGuildMember.d.mts +0 -39
- package/dist/legacy/firebase/discord/api/addGuildMember.mjs +0 -65
- package/dist/legacy/firebase/discord/api/getGuildWidget.cjs +0 -50
- package/dist/legacy/firebase/discord/api/getGuildWidget.d.mts +0 -18
- package/dist/legacy/firebase/discord/api/getGuildWidget.mjs +0 -44
- package/dist/legacy/firebase/discord/api/getToken.cjs +0 -70
- package/dist/legacy/firebase/discord/api/getToken.d.mts +0 -36
- package/dist/legacy/firebase/discord/api/getToken.mjs +0 -64
- package/dist/legacy/firebase/discord/api/getUser.cjs +0 -61
- package/dist/legacy/firebase/discord/api/getUser.d.mts +0 -28
- package/dist/legacy/firebase/discord/api/getUser.mjs +0 -55
- package/dist/legacy/firebase/discord/api/getUserConnections.cjs +0 -60
- package/dist/legacy/firebase/discord/api/getUserConnections.d.mts +0 -27
- package/dist/legacy/firebase/discord/api/getUserConnections.mjs +0 -54
- package/dist/legacy/firebase/discord/api/getUserGuilds.cjs +0 -59
- package/dist/legacy/firebase/discord/api/getUserGuilds.d.mts +0 -26
- package/dist/legacy/firebase/discord/api/getUserGuilds.mjs +0 -53
- package/dist/legacy/firebase/discord/api/index.cjs +0 -27
- package/dist/legacy/firebase/discord/api/index.d.mts +0 -20
- package/dist/legacy/firebase/discord/api/index.mjs +0 -21
- package/dist/legacy/firebase/discord/api/refreshToken.cjs +0 -80
- package/dist/legacy/firebase/discord/api/refreshToken.d.mts +0 -46
- package/dist/legacy/firebase/discord/api/refreshToken.mjs +0 -74
- package/dist/legacy/firebase/discord/api/revokeToken.cjs +0 -64
- package/dist/legacy/firebase/discord/api/revokeToken.d.mts +0 -30
- package/dist/legacy/firebase/discord/api/revokeToken.mjs +0 -59
- package/dist/legacy/firebase/discord/config.cjs +0 -23
- package/dist/legacy/firebase/discord/config.d.mts +0 -28
- package/dist/legacy/firebase/discord/config.mjs +0 -18
- package/dist/legacy/firebase/discord/firebase_redirect/index.cjs +0 -14
- package/dist/legacy/firebase/discord/firebase_redirect/index.d.mts +0 -8
- package/dist/legacy/firebase/discord/firebase_redirect/index.mjs +0 -8
- package/dist/legacy/firebase/discord/firebase_redirect/login.cjs +0 -112
- package/dist/legacy/firebase/discord/firebase_redirect/login.d.mts +0 -5
- package/dist/legacy/firebase/discord/firebase_redirect/login.mjs +0 -108
- package/dist/legacy/firebase/discord/firebase_redirect/logout.cjs +0 -102
- package/dist/legacy/firebase/discord/firebase_redirect/logout.d.mts +0 -5
- package/dist/legacy/firebase/discord/firebase_redirect/logout.mjs +0 -98
- package/dist/legacy/firebase/discord/get/authURLGenerator.cjs +0 -79
- package/dist/legacy/firebase/discord/get/authURLGenerator.d.mts +0 -24
- package/dist/legacy/firebase/discord/get/authURLGenerator.mjs +0 -68
- package/dist/legacy/firebase/discord/get/cookie-session.cjs +0 -35
- package/dist/legacy/firebase/discord/get/cookie-session.d.mts +0 -21
- package/dist/legacy/firebase/discord/get/cookie-session.mjs +0 -29
- package/dist/legacy/firebase/discord/get/credentials.cjs +0 -26
- package/dist/legacy/firebase/discord/get/credentials.d.mts +0 -20
- package/dist/legacy/firebase/discord/get/credentials.mjs +0 -21
- package/dist/legacy/firebase/discord/get/errorValidator.cjs +0 -63
- package/dist/legacy/firebase/discord/get/errorValidator.d.mts +0 -29
- package/dist/legacy/firebase/discord/get/errorValidator.mjs +0 -56
- package/dist/legacy/firebase/discord/get/index.cjs +0 -20
- package/dist/legacy/firebase/discord/get/index.d.mts +0 -14
- package/dist/legacy/firebase/discord/get/index.mjs +0 -14
- package/dist/legacy/firebase/discord/get/randomAvatar.cjs +0 -40
- package/dist/legacy/firebase/discord/get/randomAvatar.d.mts +0 -23
- package/dist/legacy/firebase/discord/get/randomAvatar.mjs +0 -31
- package/dist/legacy/firebase/discord/http/index.cjs +0 -18
- package/dist/legacy/firebase/discord/http/index.d.mts +0 -12
- package/dist/legacy/firebase/discord/http/index.mjs +0 -12
- package/dist/legacy/firebase/discord/http/login.cjs +0 -130
- package/dist/legacy/firebase/discord/http/login.d.mts +0 -22
- package/dist/legacy/firebase/discord/http/login.mjs +0 -124
- package/dist/legacy/firebase/discord/http/logout.cjs +0 -158
- package/dist/legacy/firebase/discord/http/logout.d.mts +0 -23
- package/dist/legacy/firebase/discord/http/logout.mjs +0 -144
- package/dist/legacy/firebase/discord/http/redirect.cjs +0 -191
- package/dist/legacy/firebase/discord/http/redirect.d.mts +0 -25
- package/dist/legacy/firebase/discord/http/redirect.mjs +0 -179
- package/dist/legacy/firebase/discord/http/refreshToken.cjs +0 -136
- package/dist/legacy/firebase/discord/http/refreshToken.d.mts +0 -25
- package/dist/legacy/firebase/discord/http/refreshToken.mjs +0 -122
- package/dist/legacy/firebase/discord/index.cjs +0 -22
- package/dist/legacy/firebase/discord/index.d.mts +0 -16
- package/dist/legacy/firebase/discord/index.mjs +0 -16
- package/dist/legacy/firebase/discord/template/cookie-session.cjs +0 -1433
- package/dist/legacy/firebase/discord/template/cookie-session.d.mts +0 -23
- package/dist/legacy/firebase/discord/template/cookie-session.mjs +0 -1160
- package/dist/legacy/firebase/domainRedirect.cjs +0 -37
- package/dist/legacy/firebase/domainRedirect.d.mts +0 -13
- package/dist/legacy/firebase/domainRedirect.mjs +0 -28
- package/dist/legacy/firebase/escape.cjs +0 -77
- package/dist/legacy/firebase/escape.d.mts +0 -18
- package/dist/legacy/firebase/escape.mjs +0 -59
- package/dist/legacy/firebase/getDBAsync.cjs +0 -35
- package/dist/legacy/firebase/getDBAsync.d.mts +0 -11
- package/dist/legacy/firebase/getDBAsync.mjs +0 -27
- package/dist/legacy/firebase/getDBData.cjs +0 -24
- package/dist/legacy/firebase/getDBData.d.mts +0 -2
- package/dist/legacy/firebase/getDBData.mjs +0 -18
- package/dist/legacy/firebase/getDBValue.cjs +0 -19
- package/dist/legacy/firebase/getDBValue.d.mts +0 -10
- package/dist/legacy/firebase/getDBValue.mjs +0 -15
- package/dist/legacy/firebase/index.cjs +0 -264
- package/dist/legacy/firebase/index.d.mts +0 -52
- package/dist/legacy/firebase/index.mjs +0 -235
- package/dist/legacy/firebase/isEmulator.cjs +0 -16
- package/dist/legacy/firebase/isEmulator.d.mts +0 -9
- package/dist/legacy/firebase/isEmulator.mjs +0 -11
- package/dist/legacy/firebase/logger.cjs +0 -140
- package/dist/legacy/firebase/logger.d.mts +0 -8
- package/dist/legacy/firebase/logger.mjs +0 -126
- package/dist/legacy/firebase/mySQL.cjs +0 -30
- package/dist/legacy/firebase/mySQL.d.mts +0 -11
- package/dist/legacy/firebase/mySQL.mjs +0 -23
- package/dist/legacy/firebase/mysqlConnector/create.cjs +0 -121
- package/dist/legacy/firebase/mysqlConnector/create.d.mts +0 -37
- package/dist/legacy/firebase/mysqlConnector/create.mjs +0 -110
- package/dist/legacy/firebase/mysqlConnector/index.cjs +0 -26
- package/dist/legacy/firebase/mysqlConnector/index.d.mts +0 -12
- package/dist/legacy/firebase/mysqlConnector/index.mjs +0 -17
- package/dist/legacy/firebase/mysqlConnector/nextPrev.cjs +0 -77
- package/dist/legacy/firebase/mysqlConnector/nextPrev.d.mts +0 -32
- package/dist/legacy/firebase/mysqlConnector/nextPrev.mjs +0 -64
- package/dist/legacy/firebase/mysqlConnector/pagination.cjs +0 -93
- package/dist/legacy/firebase/mysqlConnector/pagination.d.mts +0 -34
- package/dist/legacy/firebase/mysqlConnector/pagination.mjs +0 -88
- package/dist/legacy/firebase/mysqlConnector/sameUser.cjs +0 -31
- package/dist/legacy/firebase/mysqlConnector/sameUser.d.mts +0 -13
- package/dist/legacy/firebase/mysqlConnector/sameUser.mjs +0 -24
- package/dist/legacy/firebase/transactionDBAsync.cjs +0 -35
- package/dist/legacy/firebase/transactionDBAsync.d.mts +0 -12
- package/dist/legacy/firebase/transactionDBAsync.mjs +0 -28
- package/dist/legacy/get/countObj.cjs +0 -7
- package/dist/legacy/get/countObj.d.mts +0 -3
- package/dist/legacy/get/countObj.mjs +0 -2
- package/dist/legacy/get/decimalColor.cjs +0 -63
- package/dist/legacy/get/decimalColor.d.mts +0 -14
- package/dist/legacy/get/decimalColor.mjs +0 -56
- package/dist/legacy/get/objType.cjs +0 -7
- package/dist/legacy/get/objType.d.mts +0 -3
- package/dist/legacy/get/objType.mjs +0 -2
- package/dist/legacy/get/pagination.cjs +0 -109
- package/dist/legacy/get/pagination.d.mts +0 -44
- package/dist/legacy/get/pagination.mjs +0 -100
- package/dist/legacy/get/queryUrlByName.cjs +0 -32
- package/dist/legacy/get/queryUrlByName.d.mts +0 -22
- package/dist/legacy/get/queryUrlByName.mjs +0 -29
- package/dist/legacy/get/queryUrlJSON.cjs +0 -57
- package/dist/legacy/get/queryUrlJSON.d.mts +0 -25
- package/dist/legacy/get/queryUrlJSON.mjs +0 -59
- package/dist/legacy/get/super_string_filter.cjs +0 -109
- package/dist/legacy/get/super_string_filter.d.mts +0 -27
- package/dist/legacy/get/super_string_filter.mjs +0 -95
- package/dist/legacy/get/versionCheck.cjs +0 -50
- package/dist/legacy/get/versionCheck.d.mts +0 -29
- package/dist/legacy/get/versionCheck.mjs +0 -40
- package/dist/legacy/http/HTTP-1.0.cjs +0 -153
- package/dist/legacy/http/HTTP-1.0.d.mts +0 -9
- package/dist/legacy/http/HTTP-1.0.mjs +0 -138
- package/dist/legacy/http/auth.cjs +0 -71
- package/dist/legacy/http/auth.d.mts +0 -43
- package/dist/legacy/http/auth.mjs +0 -64
- package/dist/legacy/http/check_domain.cjs +0 -103
- package/dist/legacy/http/check_domain.d.mts +0 -13
- package/dist/legacy/http/check_domain.mjs +0 -98
- package/dist/legacy/http/csrfTokenAnalyze.cjs +0 -50
- package/dist/legacy/http/csrfTokenAnalyze.d.mts +0 -23
- package/dist/legacy/http/csrfTokenAnalyze.mjs +0 -45
- package/dist/legacy/http/domainValidator.cjs +0 -106
- package/dist/legacy/http/domainValidator.d.mts +0 -41
- package/dist/legacy/http/domainValidator.mjs +0 -89
- package/dist/legacy/http/errorsCallback.cjs +0 -64
- package/dist/legacy/http/errorsCallback.d.mts +0 -41
- package/dist/legacy/http/errorsCallback.mjs +0 -58
- package/dist/legacy/http/fetch/json.cjs +0 -50
- package/dist/legacy/http/fetch/json.d.mts +0 -24
- package/dist/legacy/http/fetch/json.mjs +0 -43
- package/dist/legacy/http/fetch/text.cjs +0 -49
- package/dist/legacy/http/fetch/text.d.mts +0 -23
- package/dist/legacy/http/fetch/text.mjs +0 -42
- package/dist/legacy/http/fileCache.cjs +0 -80
- package/dist/legacy/http/fileCache.d.mts +0 -37
- package/dist/legacy/http/fileCache.mjs +0 -71
- package/dist/legacy/http/getDomainURL.cjs +0 -60
- package/dist/legacy/http/getDomainURL.d.mts +0 -20
- package/dist/legacy/http/getDomainURL.mjs +0 -55
- package/dist/legacy/http/userIP.cjs +0 -65
- package/dist/legacy/http/userIP.d.mts +0 -27
- package/dist/legacy/http/userIP.mjs +0 -53
- package/dist/legacy/index.cjs +0 -125
- package/dist/legacy/index.d.mts +0 -89
- package/dist/legacy/index.mjs +0 -93
- package/dist/legacy/libs/arraySortPositions.cjs +0 -30
- package/dist/legacy/libs/arraySortPositions.d.mts +0 -17
- package/dist/legacy/libs/arraySortPositions.mjs +0 -27
- package/dist/legacy/libs/capitalize.cjs +0 -22
- package/dist/legacy/libs/capitalize.d.mts +0 -15
- package/dist/legacy/libs/capitalize.mjs +0 -18
- package/dist/legacy/libs/convertBytes.cjs +0 -66
- package/dist/legacy/libs/convertBytes.d.mts +0 -18
- package/dist/legacy/libs/convertBytes.mjs +0 -57
- package/dist/legacy/libs/custom_module_loader.cjs +0 -91
- package/dist/legacy/libs/custom_module_loader.d.mts +0 -6
- package/dist/legacy/libs/custom_module_loader.mjs +0 -87
- package/dist/legacy/libs/dice.cjs +0 -37
- package/dist/legacy/libs/dice.d.mts +0 -6
- package/dist/legacy/libs/dice.mjs +0 -33
- package/dist/legacy/libs/markdown.cjs +0 -97
- package/dist/legacy/libs/markdown.d.mts +0 -12
- package/dist/legacy/libs/markdown.mjs +0 -90
- package/dist/legacy/libs/percentage.cjs +0 -23
- package/dist/legacy/libs/percentage.d.mts +0 -5
- package/dist/legacy/libs/percentage.mjs +0 -20
- package/dist/legacy/libs/regex/getLetter.cjs +0 -24
- package/dist/legacy/libs/regex/getLetter.d.mts +0 -15
- package/dist/legacy/libs/regex/getLetter.mjs +0 -21
- package/dist/legacy/libs/replaceAsync.cjs +0 -35
- package/dist/legacy/libs/replaceAsync.d.mts +0 -16
- package/dist/legacy/libs/replaceAsync.mjs +0 -28
- package/dist/legacy/libs/rule3.cjs +0 -59
- package/dist/legacy/libs/rule3.d.mts +0 -6
- package/dist/legacy/libs/rule3.mjs +0 -55
- package/dist/legacy/momentjs/getAge.cjs +0 -29
- package/dist/legacy/momentjs/getAge.d.mts +0 -11
- package/dist/legacy/momentjs/getAge.mjs +0 -23
- package/dist/legacy/momentjs/index.cjs +0 -9
- package/dist/legacy/momentjs/index.d.mts +0 -4
- package/dist/legacy/momentjs/index.mjs +0 -3
- package/dist/legacy/momentjs/timeDuration.cjs +0 -31
- package/dist/legacy/momentjs/timeDuration.d.mts +0 -12
- package/dist/legacy/momentjs/timeDuration.mjs +0 -25
- package/dist/legacy/socket.io/antiFlood/index.cjs +0 -9
- package/dist/legacy/socket.io/antiFlood/index.d.mts +0 -4
- package/dist/legacy/socket.io/antiFlood/index.mjs +0 -3
- package/dist/legacy/socket.io/antiFlood/install.cjs +0 -34
- package/dist/legacy/socket.io/antiFlood/install.d.mts +0 -16
- package/dist/legacy/socket.io/antiFlood/install.mjs +0 -29
- package/dist/legacy/socket.io/antiFlood/verify.cjs +0 -95
- package/dist/legacy/socket.io/antiFlood/verify.d.mts +0 -20
- package/dist/legacy/socket.io/antiFlood/verify.mjs +0 -79
- package/dist/legacy/socket.io/cookie-session.cjs +0 -27
- package/dist/legacy/socket.io/cookie-session.d.mts +0 -11
- package/dist/legacy/socket.io/cookie-session.mjs +0 -22
- package/dist/legacy/socket.io/discord.cjs +0 -62
- package/dist/legacy/socket.io/discord.d.mts +0 -12
- package/dist/legacy/socket.io/discord.mjs +0 -53
- package/dist/legacy/socket.io/index.cjs +0 -13
- package/dist/legacy/socket.io/index.d.mts +0 -10
- package/dist/legacy/socket.io/index.mjs +0 -9
- package/dist/node_modules/firebase-functions/lib/common/trace.cjs +0 -81
- package/dist/node_modules/firebase-functions/lib/logger/common.cjs +0 -57
- package/dist/node_modules/firebase-functions/lib/logger/index.cjs +0 -159
- /package/dist/{legacy/libs/userLevel.cjs → v1/libs/TinyLevelUp.cjs} +0 -0
- /package/dist/{legacy/libs/userLevel.mjs → v1/libs/TinyLevelUp.mjs} +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export default TinyHtmlButton;
|
|
2
|
+
/**
|
|
3
|
+
* TinyHtmlButton is a helper class for <button> elements with full attribute support and validation.
|
|
4
|
+
* It extends TinyHtmlTemplate for direct DOM manipulation.
|
|
5
|
+
*
|
|
6
|
+
* Supported attributes:
|
|
7
|
+
* - autofocus
|
|
8
|
+
* - command, commandfor
|
|
9
|
+
* - disabled
|
|
10
|
+
* - form, formaction, formenctype, formmethod, formnovalidate, formtarget
|
|
11
|
+
* - name
|
|
12
|
+
* - popovertarget, popovertargetaction
|
|
13
|
+
* - type (button|submit|reset)
|
|
14
|
+
* - value
|
|
15
|
+
*
|
|
16
|
+
* @extends TinyHtmlTemplate<HTMLButtonElement>
|
|
17
|
+
*/
|
|
18
|
+
declare class TinyHtmlButton extends TinyHtmlTemplate<HTMLButtonElement> {
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new TinyHtmlButton instance.
|
|
21
|
+
*
|
|
22
|
+
* @param {Object} config - Configuration object for the button.
|
|
23
|
+
* @param {string|Element|TinyHtml<any>} config.label - The text/HTML/element to place inside the button.
|
|
24
|
+
* If a non-string Element/TinyHtml is provided, `allowHtml` must be true.
|
|
25
|
+
* @param {string|string[]|Set<string>} [config.tags=[]] - Initial CSS classes to apply.
|
|
26
|
+
* @param {boolean} [config.allowHtml=false] - Whether to allow HTML or DOM nodes as label.
|
|
27
|
+
* @param {'button'|'submit'|'reset'} [config.type='button'] - Button type. Allowed values: "button", "submit", "reset".
|
|
28
|
+
* @param {boolean} [config.autofocus=false] - Whether the button should autofocus on load.
|
|
29
|
+
* @param {'show-modal'|'close'|'request-close'|'show-popover'|'hide-popover'|'toggle-popover'} [config.command] - Command action (built-ins: "show-modal","close","request-close","show-popover","hide-popover","toggle-popover")
|
|
30
|
+
* or a custom command which MUST start with `--` (two hyphens).
|
|
31
|
+
* @param {string} [config.commandfor] - ID of the element controlled by the command. Must be a non-empty string.
|
|
32
|
+
* @param {boolean} [config.disabled=false] - Whether the button is disabled.
|
|
33
|
+
* @param {string} [config.form] - ID of the associated <form>. Must be a non-empty string if provided.
|
|
34
|
+
* @param {string} [config.formaction] - URL that overrides the form action when this button is used to submit.
|
|
35
|
+
* @param {'application/x-www-form-urlencoded'|'multipart/form-data'|'text/plain'} [config.formenctype]
|
|
36
|
+
* - Encoding type used when the button submits the form.
|
|
37
|
+
* @param {'get'|'post'|'dialog'} [config.formmethod] - HTTP method used for this button submission.
|
|
38
|
+
* @param {boolean} [config.formnovalidate=false] - If true, disables validation when this button submits.
|
|
39
|
+
* @param {'_self'|'_blank'|'_parent'|'_top'|'_unfencedTop'} [config.formtarget] - Target browsing context for this button's submission (keywords or name).
|
|
40
|
+
* @param {string} [config.name] - Button name (sent with value when submitting).
|
|
41
|
+
* @param {string} [config.popovertarget] - ID of the popover to control (non-empty string).
|
|
42
|
+
* @param {'show'|'hide'|'toggle'} [config.popovertargetaction] - Action for popovertarget.
|
|
43
|
+
* @param {string} [config.value] - Value submitted with the form when this button is used.
|
|
44
|
+
* @param {string} [config.mainClass=''] - Main CSS class to append to the element.
|
|
45
|
+
*
|
|
46
|
+
* @throws {TypeError} If `label` is not a string, Element, or TinyHtml instance.
|
|
47
|
+
* @throws {Error} If an Element/TinyHtml `label` is passed but `allowHtml` is false.
|
|
48
|
+
* @throws {TypeError} If `type` is not one of "button", "submit", "reset".
|
|
49
|
+
* @throws {TypeError} If `allowHtml` is not a boolean.
|
|
50
|
+
* @throws {TypeError} If `autofocus`, `disabled` or `formnovalidate` are not booleans.
|
|
51
|
+
* @throws {TypeError} If `command` is not a valid builtin command nor a custom `--*` token.
|
|
52
|
+
* @throws {TypeError} If `commandfor`, `form`, `formaction`, `name`, `popovertarget`, or `value` are not strings.
|
|
53
|
+
* @throws {TypeError} If `formenctype` is not one of the allowed encodings.
|
|
54
|
+
* @throws {TypeError} If `formmethod` is not one of 'get','post','dialog'.
|
|
55
|
+
* @throws {TypeError} If `formtarget` is not a valid keyword or browsing context name.
|
|
56
|
+
*/
|
|
57
|
+
constructor({ label, tags, allowHtml, type, autofocus, command, commandfor, disabled, form, formaction, formenctype, formmethod, formnovalidate, formtarget, name, popovertarget, popovertargetaction, value, mainClass, }: {
|
|
58
|
+
label: string | Element | TinyHtml<any>;
|
|
59
|
+
tags?: string | string[] | Set<string> | undefined;
|
|
60
|
+
allowHtml?: boolean | undefined;
|
|
61
|
+
type?: "button" | "reset" | "submit" | undefined;
|
|
62
|
+
autofocus?: boolean | undefined;
|
|
63
|
+
command?: "close" | "show-modal" | "request-close" | "show-popover" | "hide-popover" | "toggle-popover" | undefined;
|
|
64
|
+
commandfor?: string | undefined;
|
|
65
|
+
disabled?: boolean | undefined;
|
|
66
|
+
form?: string | undefined;
|
|
67
|
+
formaction?: string | undefined;
|
|
68
|
+
formenctype?: "text/plain" | "application/x-www-form-urlencoded" | "multipart/form-data" | undefined;
|
|
69
|
+
formmethod?: "dialog" | "get" | "post" | undefined;
|
|
70
|
+
formnovalidate?: boolean | undefined;
|
|
71
|
+
formtarget?: "_blank" | "_self" | "_parent" | "_top" | "_unfencedTop" | undefined;
|
|
72
|
+
name?: string | undefined;
|
|
73
|
+
popovertarget?: string | undefined;
|
|
74
|
+
popovertargetaction?: "hide" | "show" | "toggle" | undefined;
|
|
75
|
+
value?: string | undefined;
|
|
76
|
+
mainClass?: string | undefined;
|
|
77
|
+
});
|
|
78
|
+
/** @param {'button'|'submit'|'reset'} val */
|
|
79
|
+
set type(val: "button" | "submit" | "reset");
|
|
80
|
+
/** @returns {string|null} */
|
|
81
|
+
get type(): string | null;
|
|
82
|
+
/** @param {boolean} state */
|
|
83
|
+
set autofocus(state: boolean);
|
|
84
|
+
/** @returns {boolean} */
|
|
85
|
+
get autofocus(): boolean;
|
|
86
|
+
/** @param {boolean} state */
|
|
87
|
+
set disabled(state: boolean);
|
|
88
|
+
/** @returns {boolean} */
|
|
89
|
+
get disabled(): boolean;
|
|
90
|
+
/** @param {boolean} state */
|
|
91
|
+
set formnovalidate(state: boolean);
|
|
92
|
+
/** @returns {boolean} */
|
|
93
|
+
get formnovalidate(): boolean;
|
|
94
|
+
/** @param {'show-modal'|'close'|'request-close'|'show-popover'|'hide-popover'|'toggle-popover'} cmd */
|
|
95
|
+
set command(cmd: "show-modal" | "close" | "request-close" | "show-popover" | "hide-popover" | "toggle-popover");
|
|
96
|
+
/** @returns {string|null} */
|
|
97
|
+
get command(): string | null;
|
|
98
|
+
/** @param {string} val */
|
|
99
|
+
set commandfor(val: string);
|
|
100
|
+
/** @returns {string|null} */
|
|
101
|
+
get commandfor(): string | null;
|
|
102
|
+
/** @param {string} val */
|
|
103
|
+
set form(val: string);
|
|
104
|
+
/** @returns {string|null} */
|
|
105
|
+
get form(): string | null;
|
|
106
|
+
/** @param {string} val */
|
|
107
|
+
set formaction(val: string);
|
|
108
|
+
/** @returns {string|null} */
|
|
109
|
+
get formaction(): string | null;
|
|
110
|
+
/** @param {'application/x-www-form-urlencoded'|'multipart/form-data'|'text/plain'} val */
|
|
111
|
+
set formenctype(val: "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain");
|
|
112
|
+
/** @returns {string|null} */
|
|
113
|
+
get formenctype(): string | null;
|
|
114
|
+
/** @param {'get'|'post'|'dialog'} val */
|
|
115
|
+
set formmethod(val: "get" | "post" | "dialog");
|
|
116
|
+
/** @returns {string|null} */
|
|
117
|
+
get formmethod(): string | null;
|
|
118
|
+
/** @param {'_self'|'_blank'|'_parent'|'_top'|'_unfencedTop'} val */
|
|
119
|
+
set formtarget(val: "_self" | "_blank" | "_parent" | "_top" | "_unfencedTop");
|
|
120
|
+
/** @returns {string|null} */
|
|
121
|
+
get formtarget(): string | null;
|
|
122
|
+
/** @param {string} val */
|
|
123
|
+
set name(val: string);
|
|
124
|
+
/** @returns {string|null} */
|
|
125
|
+
get name(): string | null;
|
|
126
|
+
/** @param {string} val */
|
|
127
|
+
set popovertarget(val: string);
|
|
128
|
+
/** @returns {string|null} */
|
|
129
|
+
get popovertarget(): string | null;
|
|
130
|
+
/** @param {'show'|'hide'|'toggle'} val */
|
|
131
|
+
set popovertargetaction(val: "show" | "hide" | "toggle");
|
|
132
|
+
/** @returns {string|null} */
|
|
133
|
+
get popovertargetaction(): string | null;
|
|
134
|
+
set value(val: string | null);
|
|
135
|
+
/** @returns {string|null} */
|
|
136
|
+
get value(): string | null;
|
|
137
|
+
/**
|
|
138
|
+
* Updates the button label with text, HTML, or an element.
|
|
139
|
+
*
|
|
140
|
+
* @param {string|Element|TinyHtml<any>} label - The new label.
|
|
141
|
+
* @param {boolean} [allowHtml=false] - Whether to allow raw HTML or DOM elements.
|
|
142
|
+
* @returns {this}
|
|
143
|
+
* @throws {TypeError} If the label is invalid.
|
|
144
|
+
* @throws {Error} If DOM/HTML is passed but allowHtml=false.
|
|
145
|
+
*/
|
|
146
|
+
setLabel(label: string | Element | TinyHtml<any>, allowHtml?: boolean): this;
|
|
147
|
+
}
|
|
148
|
+
import TinyHtmlTemplate from './TinyHtmlTemplate.mjs';
|
|
149
|
+
import TinyHtml from '../TinyHtml.mjs';
|
|
150
|
+
//# sourceMappingURL=TinyHtmlButton.d.mts.map
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import TinyHtml from '../TinyHtml.mjs';
|
|
2
|
+
import TinyHtmlTemplate from './TinyHtmlTemplate.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* TinyHtmlButton is a helper class for <button> elements with full attribute support and validation.
|
|
5
|
+
* It extends TinyHtmlTemplate for direct DOM manipulation.
|
|
6
|
+
*
|
|
7
|
+
* Supported attributes:
|
|
8
|
+
* - autofocus
|
|
9
|
+
* - command, commandfor
|
|
10
|
+
* - disabled
|
|
11
|
+
* - form, formaction, formenctype, formmethod, formnovalidate, formtarget
|
|
12
|
+
* - name
|
|
13
|
+
* - popovertarget, popovertargetaction
|
|
14
|
+
* - type (button|submit|reset)
|
|
15
|
+
* - value
|
|
16
|
+
*
|
|
17
|
+
* @extends TinyHtmlTemplate<HTMLButtonElement>
|
|
18
|
+
*/
|
|
19
|
+
class TinyHtmlButton extends TinyHtmlTemplate {
|
|
20
|
+
/**
|
|
21
|
+
* Creates a new TinyHtmlButton instance.
|
|
22
|
+
*
|
|
23
|
+
* @param {Object} config - Configuration object for the button.
|
|
24
|
+
* @param {string|Element|TinyHtml<any>} config.label - The text/HTML/element to place inside the button.
|
|
25
|
+
* If a non-string Element/TinyHtml is provided, `allowHtml` must be true.
|
|
26
|
+
* @param {string|string[]|Set<string>} [config.tags=[]] - Initial CSS classes to apply.
|
|
27
|
+
* @param {boolean} [config.allowHtml=false] - Whether to allow HTML or DOM nodes as label.
|
|
28
|
+
* @param {'button'|'submit'|'reset'} [config.type='button'] - Button type. Allowed values: "button", "submit", "reset".
|
|
29
|
+
* @param {boolean} [config.autofocus=false] - Whether the button should autofocus on load.
|
|
30
|
+
* @param {'show-modal'|'close'|'request-close'|'show-popover'|'hide-popover'|'toggle-popover'} [config.command] - Command action (built-ins: "show-modal","close","request-close","show-popover","hide-popover","toggle-popover")
|
|
31
|
+
* or a custom command which MUST start with `--` (two hyphens).
|
|
32
|
+
* @param {string} [config.commandfor] - ID of the element controlled by the command. Must be a non-empty string.
|
|
33
|
+
* @param {boolean} [config.disabled=false] - Whether the button is disabled.
|
|
34
|
+
* @param {string} [config.form] - ID of the associated <form>. Must be a non-empty string if provided.
|
|
35
|
+
* @param {string} [config.formaction] - URL that overrides the form action when this button is used to submit.
|
|
36
|
+
* @param {'application/x-www-form-urlencoded'|'multipart/form-data'|'text/plain'} [config.formenctype]
|
|
37
|
+
* - Encoding type used when the button submits the form.
|
|
38
|
+
* @param {'get'|'post'|'dialog'} [config.formmethod] - HTTP method used for this button submission.
|
|
39
|
+
* @param {boolean} [config.formnovalidate=false] - If true, disables validation when this button submits.
|
|
40
|
+
* @param {'_self'|'_blank'|'_parent'|'_top'|'_unfencedTop'} [config.formtarget] - Target browsing context for this button's submission (keywords or name).
|
|
41
|
+
* @param {string} [config.name] - Button name (sent with value when submitting).
|
|
42
|
+
* @param {string} [config.popovertarget] - ID of the popover to control (non-empty string).
|
|
43
|
+
* @param {'show'|'hide'|'toggle'} [config.popovertargetaction] - Action for popovertarget.
|
|
44
|
+
* @param {string} [config.value] - Value submitted with the form when this button is used.
|
|
45
|
+
* @param {string} [config.mainClass=''] - Main CSS class to append to the element.
|
|
46
|
+
*
|
|
47
|
+
* @throws {TypeError} If `label` is not a string, Element, or TinyHtml instance.
|
|
48
|
+
* @throws {Error} If an Element/TinyHtml `label` is passed but `allowHtml` is false.
|
|
49
|
+
* @throws {TypeError} If `type` is not one of "button", "submit", "reset".
|
|
50
|
+
* @throws {TypeError} If `allowHtml` is not a boolean.
|
|
51
|
+
* @throws {TypeError} If `autofocus`, `disabled` or `formnovalidate` are not booleans.
|
|
52
|
+
* @throws {TypeError} If `command` is not a valid builtin command nor a custom `--*` token.
|
|
53
|
+
* @throws {TypeError} If `commandfor`, `form`, `formaction`, `name`, `popovertarget`, or `value` are not strings.
|
|
54
|
+
* @throws {TypeError} If `formenctype` is not one of the allowed encodings.
|
|
55
|
+
* @throws {TypeError} If `formmethod` is not one of 'get','post','dialog'.
|
|
56
|
+
* @throws {TypeError} If `formtarget` is not a valid keyword or browsing context name.
|
|
57
|
+
*/
|
|
58
|
+
constructor({ label, tags = [], allowHtml = false, type = 'button', autofocus = false, command, commandfor, disabled = false, form, formaction, formenctype, formmethod, formnovalidate = false, formtarget, name, popovertarget, popovertargetaction, value, mainClass = '', }) {
|
|
59
|
+
super(document.createElement('button'), tags, mainClass);
|
|
60
|
+
if (label === undefined || label === null)
|
|
61
|
+
throw new TypeError('TinyHtmlButton: "label" is required.');
|
|
62
|
+
this.setLabel(label, allowHtml);
|
|
63
|
+
this.type = type;
|
|
64
|
+
this.autofocus = autofocus;
|
|
65
|
+
this.disabled = disabled;
|
|
66
|
+
this.formnovalidate = formnovalidate;
|
|
67
|
+
if (command !== undefined)
|
|
68
|
+
this.command = command;
|
|
69
|
+
if (commandfor !== undefined)
|
|
70
|
+
this.commandfor = commandfor;
|
|
71
|
+
if (form !== undefined)
|
|
72
|
+
this.form = form;
|
|
73
|
+
if (formaction !== undefined)
|
|
74
|
+
this.formaction = formaction;
|
|
75
|
+
if (formenctype !== undefined)
|
|
76
|
+
this.formenctype = formenctype;
|
|
77
|
+
if (formmethod !== undefined)
|
|
78
|
+
this.formmethod = formmethod;
|
|
79
|
+
if (formtarget !== undefined)
|
|
80
|
+
this.formtarget = formtarget;
|
|
81
|
+
if (name !== undefined)
|
|
82
|
+
this.name = name;
|
|
83
|
+
if (popovertarget !== undefined)
|
|
84
|
+
this.popovertarget = popovertarget;
|
|
85
|
+
if (popovertargetaction !== undefined)
|
|
86
|
+
this.popovertargetaction = popovertargetaction;
|
|
87
|
+
if (value !== undefined)
|
|
88
|
+
this.value = value;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Updates the button label with text, HTML, or an element.
|
|
92
|
+
*
|
|
93
|
+
* @param {string|Element|TinyHtml<any>} label - The new label.
|
|
94
|
+
* @param {boolean} [allowHtml=false] - Whether to allow raw HTML or DOM elements.
|
|
95
|
+
* @returns {this}
|
|
96
|
+
* @throws {TypeError} If the label is invalid.
|
|
97
|
+
* @throws {Error} If DOM/HTML is passed but allowHtml=false.
|
|
98
|
+
*/
|
|
99
|
+
setLabel(label, allowHtml = false) {
|
|
100
|
+
if (typeof label === 'string') {
|
|
101
|
+
if (!allowHtml)
|
|
102
|
+
this.setText(label);
|
|
103
|
+
else
|
|
104
|
+
this.setHtml(label);
|
|
105
|
+
}
|
|
106
|
+
else if (label instanceof Element || label instanceof TinyHtml) {
|
|
107
|
+
if (!allowHtml)
|
|
108
|
+
throw new Error('setLabel: Passing an Element/TinyHtml requires allowHtml=true.');
|
|
109
|
+
this.empty().append(label);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
throw new TypeError("setLabel: 'label' must be a string, Element, or TinyHtml instance.");
|
|
113
|
+
}
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
// --- Getters & Setters ---
|
|
117
|
+
/** @returns {string|null} */
|
|
118
|
+
get type() {
|
|
119
|
+
return this.attrString('type');
|
|
120
|
+
}
|
|
121
|
+
/** @param {'button'|'submit'|'reset'} val */
|
|
122
|
+
set type(val) {
|
|
123
|
+
const allowed = ['button', 'submit', 'reset'];
|
|
124
|
+
if (typeof val !== 'string' || !allowed.includes(val))
|
|
125
|
+
throw new TypeError(`TinyHtmlButton.type must be one of: ${allowed.join(', ')}`);
|
|
126
|
+
this.setAttr('type', val);
|
|
127
|
+
}
|
|
128
|
+
/** @returns {boolean} */
|
|
129
|
+
get disabled() {
|
|
130
|
+
return this.hasProp('disabled');
|
|
131
|
+
}
|
|
132
|
+
/** @param {boolean} state */
|
|
133
|
+
set disabled(state) {
|
|
134
|
+
if (typeof state !== 'boolean')
|
|
135
|
+
throw new TypeError('TinyHtmlButton.disabled must be boolean.');
|
|
136
|
+
if (state)
|
|
137
|
+
this.addProp('disabled');
|
|
138
|
+
else
|
|
139
|
+
this.removeProp('disabled');
|
|
140
|
+
}
|
|
141
|
+
/** @returns {boolean} */
|
|
142
|
+
get autofocus() {
|
|
143
|
+
return this.hasProp('autofocus');
|
|
144
|
+
}
|
|
145
|
+
/** @param {boolean} state */
|
|
146
|
+
set autofocus(state) {
|
|
147
|
+
if (typeof state !== 'boolean')
|
|
148
|
+
throw new TypeError('TinyHtmlButton.autofocus must be boolean.');
|
|
149
|
+
if (state)
|
|
150
|
+
this.addProp('autofocus');
|
|
151
|
+
else
|
|
152
|
+
this.removeProp('autofocus');
|
|
153
|
+
}
|
|
154
|
+
/** @returns {boolean} */
|
|
155
|
+
get formnovalidate() {
|
|
156
|
+
return this.hasProp('formnovalidate');
|
|
157
|
+
}
|
|
158
|
+
/** @param {boolean} state */
|
|
159
|
+
set formnovalidate(state) {
|
|
160
|
+
if (typeof state !== 'boolean')
|
|
161
|
+
throw new TypeError('TinyHtmlButton.formnovalidate must be boolean.');
|
|
162
|
+
if (state)
|
|
163
|
+
this.addProp('formnovalidate');
|
|
164
|
+
else
|
|
165
|
+
this.removeProp('formnovalidate');
|
|
166
|
+
}
|
|
167
|
+
/** @returns {string|null} */
|
|
168
|
+
get command() {
|
|
169
|
+
return this.attrString('command');
|
|
170
|
+
}
|
|
171
|
+
/** @param {'show-modal'|'close'|'request-close'|'show-popover'|'hide-popover'|'toggle-popover'} cmd */
|
|
172
|
+
set command(cmd) {
|
|
173
|
+
const builtins = [
|
|
174
|
+
'show-modal',
|
|
175
|
+
'close',
|
|
176
|
+
'request-close',
|
|
177
|
+
'show-popover',
|
|
178
|
+
'hide-popover',
|
|
179
|
+
'toggle-popover',
|
|
180
|
+
];
|
|
181
|
+
if (typeof cmd !== 'string' || (!builtins.includes(cmd) && !cmd.startsWith('--')))
|
|
182
|
+
throw new TypeError('TinyHtmlButton.command must be a built-in or custom string starting with "--".');
|
|
183
|
+
this.setAttr('command', cmd);
|
|
184
|
+
}
|
|
185
|
+
/** @returns {string|null} */
|
|
186
|
+
get commandfor() {
|
|
187
|
+
return this.attrString('commandfor');
|
|
188
|
+
}
|
|
189
|
+
/** @param {string} val */
|
|
190
|
+
set commandfor(val) {
|
|
191
|
+
if (typeof val !== 'string' || !val.trim())
|
|
192
|
+
throw new TypeError('TinyHtmlButton.commandfor must be a non-empty string.');
|
|
193
|
+
this.setAttr('commandfor', val);
|
|
194
|
+
}
|
|
195
|
+
/** @returns {string|null} */
|
|
196
|
+
get form() {
|
|
197
|
+
return this.attrString('form');
|
|
198
|
+
}
|
|
199
|
+
/** @param {string} val */
|
|
200
|
+
set form(val) {
|
|
201
|
+
if (typeof val !== 'string' || !val.trim())
|
|
202
|
+
throw new TypeError('TinyHtmlButton.form must be a non-empty string.');
|
|
203
|
+
this.setAttr('form', val);
|
|
204
|
+
}
|
|
205
|
+
/** @returns {string|null} */
|
|
206
|
+
get formaction() {
|
|
207
|
+
return this.attrString('formaction');
|
|
208
|
+
}
|
|
209
|
+
/** @param {string} val */
|
|
210
|
+
set formaction(val) {
|
|
211
|
+
if (typeof val !== 'string' || !val.trim())
|
|
212
|
+
throw new TypeError('TinyHtmlButton.formaction must be a non-empty string.');
|
|
213
|
+
this.setAttr('formaction', val);
|
|
214
|
+
}
|
|
215
|
+
/** @returns {string|null} */
|
|
216
|
+
get formenctype() {
|
|
217
|
+
return this.attrString('formenctype');
|
|
218
|
+
}
|
|
219
|
+
/** @param {'application/x-www-form-urlencoded'|'multipart/form-data'|'text/plain'} val */
|
|
220
|
+
set formenctype(val) {
|
|
221
|
+
const valid = ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'];
|
|
222
|
+
if (!valid.includes(val))
|
|
223
|
+
throw new TypeError(`TinyHtmlButton.formenctype must be one of: ${valid.join(', ')}`);
|
|
224
|
+
this.setAttr('formenctype', val);
|
|
225
|
+
}
|
|
226
|
+
/** @returns {string|null} */
|
|
227
|
+
get formmethod() {
|
|
228
|
+
return this.attrString('formmethod');
|
|
229
|
+
}
|
|
230
|
+
/** @param {'get'|'post'|'dialog'} val */
|
|
231
|
+
set formmethod(val) {
|
|
232
|
+
const valid = ['get', 'post', 'dialog'];
|
|
233
|
+
if (typeof val !== 'string' || !valid.includes(val.toLowerCase()))
|
|
234
|
+
throw new TypeError(`TinyHtmlButton.formmethod must be one of: ${valid.join(', ')}`);
|
|
235
|
+
this.setAttr('formmethod', val.toLowerCase());
|
|
236
|
+
}
|
|
237
|
+
/** @returns {string|null} */
|
|
238
|
+
get formtarget() {
|
|
239
|
+
return this.attrString('formtarget');
|
|
240
|
+
}
|
|
241
|
+
/** @param {'_self'|'_blank'|'_parent'|'_top'|'_unfencedTop'} val */
|
|
242
|
+
set formtarget(val) {
|
|
243
|
+
const validTargets = ['_self', '_blank', '_parent', '_top', '_unfencedTop'];
|
|
244
|
+
const validName = /^[a-zA-Z_][\w-]*$/;
|
|
245
|
+
if (typeof val !== 'string' || (!validTargets.includes(val) && !validName.test(val)))
|
|
246
|
+
throw new TypeError(`TinyHtmlButton.formtarget must be a keyword (${validTargets.join(', ')}) or valid name.`);
|
|
247
|
+
this.setAttr('formtarget', val);
|
|
248
|
+
}
|
|
249
|
+
/** @returns {string|null} */
|
|
250
|
+
get name() {
|
|
251
|
+
return this.attr('name');
|
|
252
|
+
}
|
|
253
|
+
/** @param {string} val */
|
|
254
|
+
set name(val) {
|
|
255
|
+
if (typeof val !== 'string' || !val.trim())
|
|
256
|
+
throw new TypeError('TinyHtmlButton.name must be a non-empty string.');
|
|
257
|
+
this.setAttr('name', val);
|
|
258
|
+
}
|
|
259
|
+
/** @returns {string|null} */
|
|
260
|
+
get popovertarget() {
|
|
261
|
+
return this.attr('popovertarget');
|
|
262
|
+
}
|
|
263
|
+
/** @param {string} val */
|
|
264
|
+
set popovertarget(val) {
|
|
265
|
+
if (typeof val !== 'string' || !val.trim())
|
|
266
|
+
throw new TypeError('TinyHtmlButton.popovertarget must be a non-empty string.');
|
|
267
|
+
this.setAttr('popovertarget', val);
|
|
268
|
+
}
|
|
269
|
+
/** @returns {string|null} */
|
|
270
|
+
get popovertargetaction() {
|
|
271
|
+
return this.attrString('popovertargetaction');
|
|
272
|
+
}
|
|
273
|
+
/** @param {'show'|'hide'|'toggle'} val */
|
|
274
|
+
set popovertargetaction(val) {
|
|
275
|
+
const allowed = ['show', 'hide', 'toggle'];
|
|
276
|
+
if (typeof val !== 'string' || !allowed.includes(val))
|
|
277
|
+
throw new TypeError(`TinyHtmlButton.popovertargetaction must be one of: ${allowed.join(', ')}`);
|
|
278
|
+
this.setAttr('popovertargetaction', val);
|
|
279
|
+
}
|
|
280
|
+
/** @returns {string|null} */
|
|
281
|
+
get value() {
|
|
282
|
+
return this.attr('value');
|
|
283
|
+
}
|
|
284
|
+
set value(val) {
|
|
285
|
+
if (typeof val !== 'string')
|
|
286
|
+
throw new TypeError('TinyHtmlButton.value must be a string.');
|
|
287
|
+
this.setAttr('value', val);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
export default TinyHtmlButton;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var TinyHtmlTemplate = require('./TinyHtmlTemplate.cjs');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* TinyHtmlCanvas is a helper for <canvas> elements,
|
|
7
|
+
* providing a direct way to configure its size and retrieve the rendering context.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const canvas = new TinyHtmlCanvas({ width: 800, height: 600 });
|
|
11
|
+
* const ctx = canvas.getContext('2d');
|
|
12
|
+
*
|
|
13
|
+
* @extends TinyHtmlTemplate<HTMLCanvasElement>
|
|
14
|
+
*/
|
|
15
|
+
class TinyHtmlCanvas extends TinyHtmlTemplate {
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new TinyHtmlCanvas instance.
|
|
18
|
+
* @param {Object} config
|
|
19
|
+
* @param {number} [config.width] - Canvas width in pixels.
|
|
20
|
+
* @param {number} [config.height] - Canvas height in pixels.
|
|
21
|
+
* @param {string|string[]|Set<string>} [config.tags=[]] - Initial CSS classes.
|
|
22
|
+
* @param {string} [config.mainClass=""] - Main CSS class.
|
|
23
|
+
*/
|
|
24
|
+
constructor({ width, height, tags = [], mainClass = '' } = {}) {
|
|
25
|
+
super(document.createElement('canvas'), tags, mainClass);
|
|
26
|
+
|
|
27
|
+
if (width !== undefined) this.width = width;
|
|
28
|
+
if (height !== undefined) this.height = height;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Gets the rendering context of the canvas.
|
|
33
|
+
* @param {string} [type="2d"] - Context type ("2d", "webgl", etc.).
|
|
34
|
+
* @param {any} [options={}] - Context options.
|
|
35
|
+
* @returns {RenderingContext|null}
|
|
36
|
+
*/
|
|
37
|
+
getContext(type = '2d', options = {}) {
|
|
38
|
+
if (typeof type !== 'string') {
|
|
39
|
+
throw new TypeError(`getContext: "type" must be a string. Got: ${typeof type}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const el = this.get(0);
|
|
43
|
+
if (!(el instanceof HTMLCanvasElement)) return null;
|
|
44
|
+
return el.getContext(type, options);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
module.exports = TinyHtmlCanvas;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export default TinyHtmlCanvas;
|
|
2
|
+
/**
|
|
3
|
+
* TinyHtmlCanvas is a helper for <canvas> elements,
|
|
4
|
+
* providing a direct way to configure its size and retrieve the rendering context.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const canvas = new TinyHtmlCanvas({ width: 800, height: 600 });
|
|
8
|
+
* const ctx = canvas.getContext('2d');
|
|
9
|
+
*
|
|
10
|
+
* @extends TinyHtmlTemplate<HTMLCanvasElement>
|
|
11
|
+
*/
|
|
12
|
+
declare class TinyHtmlCanvas extends TinyHtmlTemplate<HTMLCanvasElement> {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new TinyHtmlCanvas instance.
|
|
15
|
+
* @param {Object} config
|
|
16
|
+
* @param {number} [config.width] - Canvas width in pixels.
|
|
17
|
+
* @param {number} [config.height] - Canvas height in pixels.
|
|
18
|
+
* @param {string|string[]|Set<string>} [config.tags=[]] - Initial CSS classes.
|
|
19
|
+
* @param {string} [config.mainClass=""] - Main CSS class.
|
|
20
|
+
*/
|
|
21
|
+
constructor({ width, height, tags, mainClass }?: {
|
|
22
|
+
width?: number | undefined;
|
|
23
|
+
height?: number | undefined;
|
|
24
|
+
tags?: string | string[] | Set<string> | undefined;
|
|
25
|
+
mainClass?: string | undefined;
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Gets the rendering context of the canvas.
|
|
29
|
+
* @param {string} [type="2d"] - Context type ("2d", "webgl", etc.).
|
|
30
|
+
* @param {any} [options={}] - Context options.
|
|
31
|
+
* @returns {RenderingContext|null}
|
|
32
|
+
*/
|
|
33
|
+
getContext(type?: string, options?: any): RenderingContext | null;
|
|
34
|
+
}
|
|
35
|
+
import TinyHtmlTemplate from './TinyHtmlTemplate.mjs';
|
|
36
|
+
//# sourceMappingURL=TinyHtmlCanvas.d.mts.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import TinyHtmlTemplate from './TinyHtmlTemplate.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* TinyHtmlCanvas is a helper for <canvas> elements,
|
|
4
|
+
* providing a direct way to configure its size and retrieve the rendering context.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const canvas = new TinyHtmlCanvas({ width: 800, height: 600 });
|
|
8
|
+
* const ctx = canvas.getContext('2d');
|
|
9
|
+
*
|
|
10
|
+
* @extends TinyHtmlTemplate<HTMLCanvasElement>
|
|
11
|
+
*/
|
|
12
|
+
class TinyHtmlCanvas extends TinyHtmlTemplate {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new TinyHtmlCanvas instance.
|
|
15
|
+
* @param {Object} config
|
|
16
|
+
* @param {number} [config.width] - Canvas width in pixels.
|
|
17
|
+
* @param {number} [config.height] - Canvas height in pixels.
|
|
18
|
+
* @param {string|string[]|Set<string>} [config.tags=[]] - Initial CSS classes.
|
|
19
|
+
* @param {string} [config.mainClass=""] - Main CSS class.
|
|
20
|
+
*/
|
|
21
|
+
constructor({ width, height, tags = [], mainClass = '' } = {}) {
|
|
22
|
+
super(document.createElement('canvas'), tags, mainClass);
|
|
23
|
+
if (width !== undefined)
|
|
24
|
+
this.width = width;
|
|
25
|
+
if (height !== undefined)
|
|
26
|
+
this.height = height;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Gets the rendering context of the canvas.
|
|
30
|
+
* @param {string} [type="2d"] - Context type ("2d", "webgl", etc.).
|
|
31
|
+
* @param {any} [options={}] - Context options.
|
|
32
|
+
* @returns {RenderingContext|null}
|
|
33
|
+
*/
|
|
34
|
+
getContext(type = '2d', options = {}) {
|
|
35
|
+
if (typeof type !== 'string') {
|
|
36
|
+
throw new TypeError(`getContext: "type" must be a string. Got: ${typeof type}`);
|
|
37
|
+
}
|
|
38
|
+
const el = this.get(0);
|
|
39
|
+
if (!(el instanceof HTMLCanvasElement))
|
|
40
|
+
return null;
|
|
41
|
+
return el.getContext(type, options);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export default TinyHtmlCanvas;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var TinyHtmlTemplate = require('./TinyHtmlTemplate.cjs');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* TinyHtmlDatalist is a helper class for creating and managing <datalist> elements.
|
|
7
|
+
* A <datalist> provides predefined options for <input> elements via the `list` attribute.
|
|
8
|
+
*
|
|
9
|
+
* Only <option> children are valid inside <datalist>.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const datalist = new TinyHtmlDatalist({ id: 'browsers' });
|
|
13
|
+
* datalist.addOption({ value: 'Firefox' });
|
|
14
|
+
* datalist.addOption({ value: 'Chrome' });
|
|
15
|
+
* document.body.appendChild(datalist.el);
|
|
16
|
+
*
|
|
17
|
+
* <input list="browsers">
|
|
18
|
+
*
|
|
19
|
+
* @extends TinyHtmlTemplate<HTMLDataListElement>
|
|
20
|
+
*/
|
|
21
|
+
class TinyHtmlDatalist extends TinyHtmlTemplate {
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new TinyHtmlDatalist instance.
|
|
24
|
+
* @param {Object} config - Configuration object.
|
|
25
|
+
* @param {string} [config.id] - The unique identifier for the datalist (to be linked with <input list="...">).
|
|
26
|
+
* @param {string|string[]|Set<string>} [config.tags=[]] - Initial CSS classes.
|
|
27
|
+
* @param {string} [config.mainClass=""] - Main CSS class.
|
|
28
|
+
* @param {Array<{value: string, label?: string}>} [config.options=[]] - Initial <option> elements.
|
|
29
|
+
*/
|
|
30
|
+
constructor({ id, tags = [], mainClass = '', options = [] } = {}) {
|
|
31
|
+
super(document.createElement('datalist'), tags, mainClass);
|
|
32
|
+
|
|
33
|
+
if (id !== undefined) this.id = id;
|
|
34
|
+
if (options !== undefined) this.options = options;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** @param {Array<{value: string, label?: string}>} options */
|
|
38
|
+
set options(options) {
|
|
39
|
+
if (!Array.isArray(options)) {
|
|
40
|
+
throw new TypeError('TinyHtmlDatalist: "options" must be an array.');
|
|
41
|
+
}
|
|
42
|
+
// limpa opções anteriores
|
|
43
|
+
this.el.innerHTML = '';
|
|
44
|
+
for (const opt of options) {
|
|
45
|
+
this.addOption(opt);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** @returns {Array<{value: string, label: string|null}>} */
|
|
50
|
+
get options() {
|
|
51
|
+
return Array.from(this.el.children)
|
|
52
|
+
.filter((child) => child instanceof HTMLOptionElement)
|
|
53
|
+
.map((opt) => ({
|
|
54
|
+
value: opt.value,
|
|
55
|
+
label: opt.label || null,
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Adds a new <option> to the datalist.
|
|
61
|
+
* @param {Object} config - Option configuration.
|
|
62
|
+
* @param {string} config.value - The value of the option (required).
|
|
63
|
+
* @param {string} [config.label] - Optional label for accessibility or display.
|
|
64
|
+
* @returns {HTMLOptionElement} The created <option> element.
|
|
65
|
+
*/
|
|
66
|
+
addOption({ value, label }) {
|
|
67
|
+
if (typeof value !== 'string') {
|
|
68
|
+
throw new TypeError('TinyHtmlDatalist.addOption: "value" must be a string.');
|
|
69
|
+
}
|
|
70
|
+
if (label !== undefined && typeof label !== 'string') {
|
|
71
|
+
throw new TypeError('TinyHtmlDatalist.addOption: "label" must be a string if provided.');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const option = document.createElement('option');
|
|
75
|
+
option.value = value;
|
|
76
|
+
if (label) option.label = label;
|
|
77
|
+
this.el.appendChild(option);
|
|
78
|
+
return option;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Removes an option by its value.
|
|
83
|
+
* @param {string} value - The value of the option to remove.
|
|
84
|
+
* @returns {boolean} True if an option was removed, false otherwise.
|
|
85
|
+
*/
|
|
86
|
+
removeOption(value) {
|
|
87
|
+
if (typeof value !== 'string')
|
|
88
|
+
throw new TypeError('TinyHtmlDatalist.removeOption: "value" must be a string.');
|
|
89
|
+
|
|
90
|
+
const option = Array.from(this.el.children).find(
|
|
91
|
+
(child) => child instanceof HTMLOptionElement && child.value === value,
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
if (option) {
|
|
95
|
+
option.remove();
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
module.exports = TinyHtmlDatalist;
|