@loadspark/core 0.0.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/LICENSE.md +71 -0
- package/README.md +628 -0
- package/dist/access/accessors.d.ts +22 -0
- package/dist/access/accessors.d.ts.map +1 -0
- package/dist/access/accessors.js +20 -0
- package/dist/access/accessors.js.map +1 -0
- package/dist/access/builders.d.ts +4 -0
- package/dist/access/builders.d.ts.map +1 -0
- package/dist/access/builders.js +26 -0
- package/dist/access/builders.js.map +1 -0
- package/dist/access/index.d.ts +4 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js +5 -0
- package/dist/access/index.js.map +1 -0
- package/dist/access/roles.d.ts +38 -0
- package/dist/access/roles.d.ts.map +1 -0
- package/dist/access/roles.js +33 -0
- package/dist/access/roles.js.map +1 -0
- package/dist/collections/users/access.d.ts +30 -0
- package/dist/collections/users/access.d.ts.map +1 -0
- package/dist/collections/users/access.js +96 -0
- package/dist/collections/users/access.js.map +1 -0
- package/dist/collections/users/config.d.ts +9 -0
- package/dist/collections/users/config.d.ts.map +1 -0
- package/dist/collections/users/config.js +55 -0
- package/dist/collections/users/config.js.map +1 -0
- package/dist/collections/users/fields.d.ts +4 -0
- package/dist/collections/users/fields.d.ts.map +1 -0
- package/dist/collections/users/fields.js +97 -0
- package/dist/collections/users/fields.js.map +1 -0
- package/dist/collections/users/hooks.d.ts +25 -0
- package/dist/collections/users/hooks.d.ts.map +1 -0
- package/dist/collections/users/hooks.js +50 -0
- package/dist/collections/users/hooks.js.map +1 -0
- package/dist/collections/users/types.d.ts +18 -0
- package/dist/collections/users/types.d.ts.map +1 -0
- package/dist/collections/users/types.js +8 -0
- package/dist/collections/users/types.js.map +1 -0
- package/dist/constants.d.ts +45 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +46 -0
- package/dist/constants.js.map +1 -0
- package/dist/exports/access/index.d.ts +2 -0
- package/dist/exports/access/index.d.ts.map +1 -0
- package/dist/exports/access/index.js +3 -0
- package/dist/exports/access/index.js.map +1 -0
- package/dist/exports/fields/AlertBox/client.d.ts +2 -0
- package/dist/exports/fields/AlertBox/client.d.ts.map +1 -0
- package/dist/exports/fields/AlertBox/client.js +3 -0
- package/dist/exports/fields/AlertBox/client.js.map +1 -0
- package/dist/exports/fields/AlertBox/index.d.ts +2 -0
- package/dist/exports/fields/AlertBox/index.d.ts.map +1 -0
- package/dist/exports/fields/AlertBox/index.js +3 -0
- package/dist/exports/fields/AlertBox/index.js.map +1 -0
- package/dist/exports/fields/ColourText/client.d.ts +2 -0
- package/dist/exports/fields/ColourText/client.d.ts.map +1 -0
- package/dist/exports/fields/ColourText/client.js +3 -0
- package/dist/exports/fields/ColourText/client.js.map +1 -0
- package/dist/exports/fields/ColourText/index.d.ts +2 -0
- package/dist/exports/fields/ColourText/index.d.ts.map +1 -0
- package/dist/exports/fields/ColourText/index.js +3 -0
- package/dist/exports/fields/ColourText/index.js.map +1 -0
- package/dist/exports/fields/Combo/client.d.ts +2 -0
- package/dist/exports/fields/Combo/client.d.ts.map +1 -0
- package/dist/exports/fields/Combo/client.js +3 -0
- package/dist/exports/fields/Combo/client.js.map +1 -0
- package/dist/exports/fields/Combo/index.d.ts +2 -0
- package/dist/exports/fields/Combo/index.d.ts.map +1 -0
- package/dist/exports/fields/Combo/index.js +3 -0
- package/dist/exports/fields/Combo/index.js.map +1 -0
- package/dist/exports/fields/Countries/index.d.ts +2 -0
- package/dist/exports/fields/Countries/index.d.ts.map +1 -0
- package/dist/exports/fields/Countries/index.js +3 -0
- package/dist/exports/fields/Countries/index.js.map +1 -0
- package/dist/exports/fields/Number/client.d.ts +2 -0
- package/dist/exports/fields/Number/client.d.ts.map +1 -0
- package/dist/exports/fields/Number/client.js +3 -0
- package/dist/exports/fields/Number/client.js.map +1 -0
- package/dist/exports/fields/Number/index.d.ts +2 -0
- package/dist/exports/fields/Number/index.d.ts.map +1 -0
- package/dist/exports/fields/Number/index.js +3 -0
- package/dist/exports/fields/Number/index.js.map +1 -0
- package/dist/exports/fields/OpeningHours/client.d.ts +2 -0
- package/dist/exports/fields/OpeningHours/client.d.ts.map +1 -0
- package/dist/exports/fields/OpeningHours/client.js +3 -0
- package/dist/exports/fields/OpeningHours/client.js.map +1 -0
- package/dist/exports/fields/OpeningHours/index.d.ts +2 -0
- package/dist/exports/fields/OpeningHours/index.d.ts.map +1 -0
- package/dist/exports/fields/OpeningHours/index.js +3 -0
- package/dist/exports/fields/OpeningHours/index.js.map +1 -0
- package/dist/exports/fields/Pattern/client.d.ts +2 -0
- package/dist/exports/fields/Pattern/client.d.ts.map +1 -0
- package/dist/exports/fields/Pattern/client.js +3 -0
- package/dist/exports/fields/Pattern/client.js.map +1 -0
- package/dist/exports/fields/Pattern/index.d.ts +2 -0
- package/dist/exports/fields/Pattern/index.d.ts.map +1 -0
- package/dist/exports/fields/Pattern/index.js +3 -0
- package/dist/exports/fields/Pattern/index.js.map +1 -0
- package/dist/exports/fields/Range/client.d.ts +2 -0
- package/dist/exports/fields/Range/client.d.ts.map +1 -0
- package/dist/exports/fields/Range/client.js +3 -0
- package/dist/exports/fields/Range/client.js.map +1 -0
- package/dist/exports/fields/Range/index.d.ts +2 -0
- package/dist/exports/fields/Range/index.d.ts.map +1 -0
- package/dist/exports/fields/Range/index.js +3 -0
- package/dist/exports/fields/Range/index.js.map +1 -0
- package/dist/exports/fields/Telephone/client.d.ts +2 -0
- package/dist/exports/fields/Telephone/client.d.ts.map +1 -0
- package/dist/exports/fields/Telephone/client.js +3 -0
- package/dist/exports/fields/Telephone/client.js.map +1 -0
- package/dist/exports/fields/Telephone/index.d.ts +2 -0
- package/dist/exports/fields/Telephone/index.d.ts.map +1 -0
- package/dist/exports/fields/Telephone/index.js +3 -0
- package/dist/exports/fields/Telephone/index.js.map +1 -0
- package/dist/exports/fields/client.d.ts +2 -0
- package/dist/exports/fields/client.d.ts.map +1 -0
- package/dist/exports/fields/client.js +2 -0
- package/dist/exports/fields/client.js.map +1 -0
- package/dist/exports/fields/index.d.ts +10 -0
- package/dist/exports/fields/index.d.ts.map +1 -0
- package/dist/exports/fields/index.js +11 -0
- package/dist/exports/fields/index.js.map +1 -0
- package/dist/exports/translations/index.d.ts +2 -0
- package/dist/exports/translations/index.d.ts.map +1 -0
- package/dist/exports/translations/index.js +3 -0
- package/dist/exports/translations/index.js.map +1 -0
- package/dist/exports/users/index.d.ts +4 -0
- package/dist/exports/users/index.d.ts.map +1 -0
- package/dist/exports/users/index.js +5 -0
- package/dist/exports/users/index.js.map +1 -0
- package/dist/exports/validations/index.d.ts +4 -0
- package/dist/exports/validations/index.d.ts.map +1 -0
- package/dist/exports/validations/index.js +5 -0
- package/dist/exports/validations/index.js.map +1 -0
- package/dist/fields/AlertBox/Component.d.ts +14 -0
- package/dist/fields/AlertBox/Component.d.ts.map +1 -0
- package/dist/fields/AlertBox/Component.js +32 -0
- package/dist/fields/AlertBox/Component.js.map +1 -0
- package/dist/fields/AlertBox/icons/AlertIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/AlertIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/AlertIcon.js +27 -0
- package/dist/fields/AlertBox/icons/AlertIcon.js.map +1 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.js +35 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.js.map +1 -0
- package/dist/fields/AlertBox/icons/InfoIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/InfoIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/InfoIcon.js +29 -0
- package/dist/fields/AlertBox/icons/InfoIcon.js.map +1 -0
- package/dist/fields/AlertBox/index.d.ts +76 -0
- package/dist/fields/AlertBox/index.d.ts.map +1 -0
- package/dist/fields/AlertBox/index.js +64 -0
- package/dist/fields/AlertBox/index.js.map +1 -0
- package/dist/fields/AlertBox/styles.css +42 -0
- package/dist/fields/ColourText/Component.d.ts +8 -0
- package/dist/fields/ColourText/Component.d.ts.map +1 -0
- package/dist/fields/ColourText/Component.js +102 -0
- package/dist/fields/ColourText/Component.js.map +1 -0
- package/dist/fields/ColourText/index.d.ts +35 -0
- package/dist/fields/ColourText/index.d.ts.map +1 -0
- package/dist/fields/ColourText/index.js +41 -0
- package/dist/fields/ColourText/index.js.map +1 -0
- package/dist/fields/ColourText/styles.css +21 -0
- package/dist/fields/ColourText/validate.d.ts +3 -0
- package/dist/fields/ColourText/validate.d.ts.map +1 -0
- package/dist/fields/ColourText/validate.js +30 -0
- package/dist/fields/ColourText/validate.js.map +1 -0
- package/dist/fields/Combo/Component.d.ts +16 -0
- package/dist/fields/Combo/Component.d.ts.map +1 -0
- package/dist/fields/Combo/Component.js +105 -0
- package/dist/fields/Combo/Component.js.map +1 -0
- package/dist/fields/Combo/beforeValidate.d.ts +4 -0
- package/dist/fields/Combo/beforeValidate.d.ts.map +1 -0
- package/dist/fields/Combo/beforeValidate.js +30 -0
- package/dist/fields/Combo/beforeValidate.js.map +1 -0
- package/dist/fields/Combo/index.d.ts +58 -0
- package/dist/fields/Combo/index.d.ts.map +1 -0
- package/dist/fields/Combo/index.js +74 -0
- package/dist/fields/Combo/index.js.map +1 -0
- package/dist/fields/Countries/index.d.ts +49 -0
- package/dist/fields/Countries/index.d.ts.map +1 -0
- package/dist/fields/Countries/index.js +59 -0
- package/dist/fields/Countries/index.js.map +1 -0
- package/dist/fields/Number/Component.d.ts +14 -0
- package/dist/fields/Number/Component.d.ts.map +1 -0
- package/dist/fields/Number/Component.js +108 -0
- package/dist/fields/Number/Component.js.map +1 -0
- package/dist/fields/Number/index.d.ts +64 -0
- package/dist/fields/Number/index.d.ts.map +1 -0
- package/dist/fields/Number/index.js +66 -0
- package/dist/fields/Number/index.js.map +1 -0
- package/dist/fields/Number/styles.css +0 -0
- package/dist/fields/OpeningHours/Component.d.ts +7 -0
- package/dist/fields/OpeningHours/Component.d.ts.map +1 -0
- package/dist/fields/OpeningHours/Component.js +161 -0
- package/dist/fields/OpeningHours/Component.js.map +1 -0
- package/dist/fields/OpeningHours/index.d.ts +51 -0
- package/dist/fields/OpeningHours/index.d.ts.map +1 -0
- package/dist/fields/OpeningHours/index.js +49 -0
- package/dist/fields/OpeningHours/index.js.map +1 -0
- package/dist/fields/OpeningHours/styles.css +124 -0
- package/dist/fields/OpeningHours/validate.d.ts +3 -0
- package/dist/fields/OpeningHours/validate.d.ts.map +1 -0
- package/dist/fields/OpeningHours/validate.js +39 -0
- package/dist/fields/OpeningHours/validate.js.map +1 -0
- package/dist/fields/Pattern/Component.d.ts +14 -0
- package/dist/fields/Pattern/Component.d.ts.map +1 -0
- package/dist/fields/Pattern/Component.js +88 -0
- package/dist/fields/Pattern/Component.js.map +1 -0
- package/dist/fields/Pattern/index.d.ts +59 -0
- package/dist/fields/Pattern/index.d.ts.map +1 -0
- package/dist/fields/Pattern/index.js +55 -0
- package/dist/fields/Pattern/index.js.map +1 -0
- package/dist/fields/Pattern/styles.css +34 -0
- package/dist/fields/Range/Component.d.ts +13 -0
- package/dist/fields/Range/Component.d.ts.map +1 -0
- package/dist/fields/Range/Component.js +138 -0
- package/dist/fields/Range/Component.js.map +1 -0
- package/dist/fields/Range/index.d.ts +82 -0
- package/dist/fields/Range/index.d.ts.map +1 -0
- package/dist/fields/Range/index.js +63 -0
- package/dist/fields/Range/index.js.map +1 -0
- package/dist/fields/Range/range.scss +138 -0
- package/dist/fields/Range/types.d.ts +5 -0
- package/dist/fields/Range/types.d.ts.map +1 -0
- package/dist/fields/Range/types.js +3 -0
- package/dist/fields/Range/types.js.map +1 -0
- package/dist/fields/Telephone/Component.d.ts +13 -0
- package/dist/fields/Telephone/Component.d.ts.map +1 -0
- package/dist/fields/Telephone/Component.js +92 -0
- package/dist/fields/Telephone/Component.js.map +1 -0
- package/dist/fields/Telephone/index.d.ts +99 -0
- package/dist/fields/Telephone/index.d.ts.map +1 -0
- package/dist/fields/Telephone/index.js +59 -0
- package/dist/fields/Telephone/index.js.map +1 -0
- package/dist/fields/Telephone/validate.d.ts +3 -0
- package/dist/fields/Telephone/validate.d.ts.map +1 -0
- package/dist/fields/Telephone/validate.js +13 -0
- package/dist/fields/Telephone/validate.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/translations/index.d.ts +6 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +92 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/translations/languages/ar.d.ts +576 -0
- package/dist/translations/languages/ar.d.ts.map +1 -0
- package/dist/translations/languages/ar.js +329 -0
- package/dist/translations/languages/ar.js.map +1 -0
- package/dist/translations/languages/az.d.ts +576 -0
- package/dist/translations/languages/az.d.ts.map +1 -0
- package/dist/translations/languages/az.js +329 -0
- package/dist/translations/languages/az.js.map +1 -0
- package/dist/translations/languages/bg.d.ts +576 -0
- package/dist/translations/languages/bg.d.ts.map +1 -0
- package/dist/translations/languages/bg.js +329 -0
- package/dist/translations/languages/bg.js.map +1 -0
- package/dist/translations/languages/bnBd.d.ts +576 -0
- package/dist/translations/languages/bnBd.d.ts.map +1 -0
- package/dist/translations/languages/bnBd.js +329 -0
- package/dist/translations/languages/bnBd.js.map +1 -0
- package/dist/translations/languages/bnIn.d.ts +576 -0
- package/dist/translations/languages/bnIn.d.ts.map +1 -0
- package/dist/translations/languages/bnIn.js +329 -0
- package/dist/translations/languages/bnIn.js.map +1 -0
- package/dist/translations/languages/ca.d.ts +576 -0
- package/dist/translations/languages/ca.d.ts.map +1 -0
- package/dist/translations/languages/ca.js +329 -0
- package/dist/translations/languages/ca.js.map +1 -0
- package/dist/translations/languages/cs.d.ts +576 -0
- package/dist/translations/languages/cs.d.ts.map +1 -0
- package/dist/translations/languages/cs.js +329 -0
- package/dist/translations/languages/cs.js.map +1 -0
- package/dist/translations/languages/da.d.ts +576 -0
- package/dist/translations/languages/da.d.ts.map +1 -0
- package/dist/translations/languages/da.js +329 -0
- package/dist/translations/languages/da.js.map +1 -0
- package/dist/translations/languages/de.d.ts +576 -0
- package/dist/translations/languages/de.d.ts.map +1 -0
- package/dist/translations/languages/de.js +329 -0
- package/dist/translations/languages/de.js.map +1 -0
- package/dist/translations/languages/en.d.ts +576 -0
- package/dist/translations/languages/en.d.ts.map +1 -0
- package/dist/translations/languages/en.js +329 -0
- package/dist/translations/languages/en.js.map +1 -0
- package/dist/translations/languages/es.d.ts +576 -0
- package/dist/translations/languages/es.d.ts.map +1 -0
- package/dist/translations/languages/es.js +329 -0
- package/dist/translations/languages/es.js.map +1 -0
- package/dist/translations/languages/et.d.ts +576 -0
- package/dist/translations/languages/et.d.ts.map +1 -0
- package/dist/translations/languages/et.js +329 -0
- package/dist/translations/languages/et.js.map +1 -0
- package/dist/translations/languages/fa.d.ts +576 -0
- package/dist/translations/languages/fa.d.ts.map +1 -0
- package/dist/translations/languages/fa.js +329 -0
- package/dist/translations/languages/fa.js.map +1 -0
- package/dist/translations/languages/fr.d.ts +576 -0
- package/dist/translations/languages/fr.d.ts.map +1 -0
- package/dist/translations/languages/fr.js +329 -0
- package/dist/translations/languages/fr.js.map +1 -0
- package/dist/translations/languages/he.d.ts +576 -0
- package/dist/translations/languages/he.d.ts.map +1 -0
- package/dist/translations/languages/he.js +329 -0
- package/dist/translations/languages/he.js.map +1 -0
- package/dist/translations/languages/hr.d.ts +576 -0
- package/dist/translations/languages/hr.d.ts.map +1 -0
- package/dist/translations/languages/hr.js +329 -0
- package/dist/translations/languages/hr.js.map +1 -0
- package/dist/translations/languages/hu.d.ts +576 -0
- package/dist/translations/languages/hu.d.ts.map +1 -0
- package/dist/translations/languages/hu.js +329 -0
- package/dist/translations/languages/hu.js.map +1 -0
- package/dist/translations/languages/hy.d.ts +576 -0
- package/dist/translations/languages/hy.d.ts.map +1 -0
- package/dist/translations/languages/hy.js +329 -0
- package/dist/translations/languages/hy.js.map +1 -0
- package/dist/translations/languages/id.d.ts +576 -0
- package/dist/translations/languages/id.d.ts.map +1 -0
- package/dist/translations/languages/id.js +329 -0
- package/dist/translations/languages/id.js.map +1 -0
- package/dist/translations/languages/is.d.ts +576 -0
- package/dist/translations/languages/is.d.ts.map +1 -0
- package/dist/translations/languages/is.js +329 -0
- package/dist/translations/languages/is.js.map +1 -0
- package/dist/translations/languages/it.d.ts +576 -0
- package/dist/translations/languages/it.d.ts.map +1 -0
- package/dist/translations/languages/it.js +329 -0
- package/dist/translations/languages/it.js.map +1 -0
- package/dist/translations/languages/ja.d.ts +576 -0
- package/dist/translations/languages/ja.d.ts.map +1 -0
- package/dist/translations/languages/ja.js +329 -0
- package/dist/translations/languages/ja.js.map +1 -0
- package/dist/translations/languages/ko.d.ts +576 -0
- package/dist/translations/languages/ko.d.ts.map +1 -0
- package/dist/translations/languages/ko.js +329 -0
- package/dist/translations/languages/ko.js.map +1 -0
- package/dist/translations/languages/lt.d.ts +576 -0
- package/dist/translations/languages/lt.d.ts.map +1 -0
- package/dist/translations/languages/lt.js +329 -0
- package/dist/translations/languages/lt.js.map +1 -0
- package/dist/translations/languages/lv.d.ts +576 -0
- package/dist/translations/languages/lv.d.ts.map +1 -0
- package/dist/translations/languages/lv.js +329 -0
- package/dist/translations/languages/lv.js.map +1 -0
- package/dist/translations/languages/my.d.ts +576 -0
- package/dist/translations/languages/my.d.ts.map +1 -0
- package/dist/translations/languages/my.js +329 -0
- package/dist/translations/languages/my.js.map +1 -0
- package/dist/translations/languages/nb.d.ts +576 -0
- package/dist/translations/languages/nb.d.ts.map +1 -0
- package/dist/translations/languages/nb.js +329 -0
- package/dist/translations/languages/nb.js.map +1 -0
- package/dist/translations/languages/nl.d.ts +576 -0
- package/dist/translations/languages/nl.d.ts.map +1 -0
- package/dist/translations/languages/nl.js +329 -0
- package/dist/translations/languages/nl.js.map +1 -0
- package/dist/translations/languages/pl.d.ts +576 -0
- package/dist/translations/languages/pl.d.ts.map +1 -0
- package/dist/translations/languages/pl.js +329 -0
- package/dist/translations/languages/pl.js.map +1 -0
- package/dist/translations/languages/pt.d.ts +576 -0
- package/dist/translations/languages/pt.d.ts.map +1 -0
- package/dist/translations/languages/pt.js +329 -0
- package/dist/translations/languages/pt.js.map +1 -0
- package/dist/translations/languages/ro.d.ts +576 -0
- package/dist/translations/languages/ro.d.ts.map +1 -0
- package/dist/translations/languages/ro.js +329 -0
- package/dist/translations/languages/ro.js.map +1 -0
- package/dist/translations/languages/rs.d.ts +576 -0
- package/dist/translations/languages/rs.d.ts.map +1 -0
- package/dist/translations/languages/rs.js +329 -0
- package/dist/translations/languages/rs.js.map +1 -0
- package/dist/translations/languages/rsLatin.d.ts +576 -0
- package/dist/translations/languages/rsLatin.d.ts.map +1 -0
- package/dist/translations/languages/rsLatin.js +329 -0
- package/dist/translations/languages/rsLatin.js.map +1 -0
- package/dist/translations/languages/ru.d.ts +576 -0
- package/dist/translations/languages/ru.d.ts.map +1 -0
- package/dist/translations/languages/ru.js +329 -0
- package/dist/translations/languages/ru.js.map +1 -0
- package/dist/translations/languages/sk.d.ts +576 -0
- package/dist/translations/languages/sk.d.ts.map +1 -0
- package/dist/translations/languages/sk.js +329 -0
- package/dist/translations/languages/sk.js.map +1 -0
- package/dist/translations/languages/sl.d.ts +576 -0
- package/dist/translations/languages/sl.d.ts.map +1 -0
- package/dist/translations/languages/sl.js +329 -0
- package/dist/translations/languages/sl.js.map +1 -0
- package/dist/translations/languages/sv.d.ts +576 -0
- package/dist/translations/languages/sv.d.ts.map +1 -0
- package/dist/translations/languages/sv.js +329 -0
- package/dist/translations/languages/sv.js.map +1 -0
- package/dist/translations/languages/ta.d.ts +576 -0
- package/dist/translations/languages/ta.d.ts.map +1 -0
- package/dist/translations/languages/ta.js +329 -0
- package/dist/translations/languages/ta.js.map +1 -0
- package/dist/translations/languages/th.d.ts +576 -0
- package/dist/translations/languages/th.d.ts.map +1 -0
- package/dist/translations/languages/th.js +329 -0
- package/dist/translations/languages/th.js.map +1 -0
- package/dist/translations/languages/tr.d.ts +576 -0
- package/dist/translations/languages/tr.d.ts.map +1 -0
- package/dist/translations/languages/tr.js +329 -0
- package/dist/translations/languages/tr.js.map +1 -0
- package/dist/translations/languages/uk.d.ts +576 -0
- package/dist/translations/languages/uk.d.ts.map +1 -0
- package/dist/translations/languages/uk.js +329 -0
- package/dist/translations/languages/uk.js.map +1 -0
- package/dist/translations/languages/vi.d.ts +576 -0
- package/dist/translations/languages/vi.d.ts.map +1 -0
- package/dist/translations/languages/vi.js +329 -0
- package/dist/translations/languages/vi.js.map +1 -0
- package/dist/translations/languages/zh.d.ts +576 -0
- package/dist/translations/languages/zh.d.ts.map +1 -0
- package/dist/translations/languages/zh.js +329 -0
- package/dist/translations/languages/zh.js.map +1 -0
- package/dist/translations/languages/zhTw.d.ts +576 -0
- package/dist/translations/languages/zhTw.d.ts.map +1 -0
- package/dist/translations/languages/zhTw.js +329 -0
- package/dist/translations/languages/zhTw.js.map +1 -0
- package/dist/types.d.ts +269 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +257 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +32 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +82 -0
- package/dist/utils.js.map +1 -0
- package/dist/validations/dates.d.ts +230 -0
- package/dist/validations/dates.d.ts.map +1 -0
- package/dist/validations/dates.js +254 -0
- package/dist/validations/dates.js.map +1 -0
- package/dist/validations/numbers.d.ts +118 -0
- package/dist/validations/numbers.d.ts.map +1 -0
- package/dist/validations/numbers.js +151 -0
- package/dist/validations/numbers.js.map +1 -0
- package/dist/validations/relationLinkedUser.d.ts +43 -0
- package/dist/validations/relationLinkedUser.d.ts.map +1 -0
- package/dist/validations/relationLinkedUser.js +54 -0
- package/dist/validations/relationLinkedUser.js.map +1 -0
- package/package.json +228 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const hexRegex = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
2
|
+
const rgbRegex = /^rgba?\(\s*(?:\d{1,3}\s*,){2}\s*\d{1,3}\s*(?:,\s*(?:0|1|0?\.\d+)\s*)?\)$/;
|
|
3
|
+
const hslRegex = /^hsla?\(\s*\d{1,3}\s*,\s*\d{1,3}%\s*,\s*\d{1,3}%\s*(?:,\s*(?:0|1|0?\.\d+)\s*)?\)$/;
|
|
4
|
+
function isLikelyColor(value) {
|
|
5
|
+
if (hexRegex.test(value)) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (rgbRegex.test(value)) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
if (hslRegex.test(value)) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
return typeof value === 'string' && value.length > 0 && /^[a-z]+$/i.test(value);
|
|
15
|
+
}
|
|
16
|
+
export const validate = (required)=>(value, ctx)=>{
|
|
17
|
+
const t = ctx.req.t;
|
|
18
|
+
if (!required && (!value || value === '')) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
if (required && (!value || value === '')) {
|
|
22
|
+
return t('validation:required');
|
|
23
|
+
}
|
|
24
|
+
if (typeof value !== 'string' || !isLikelyColor(value)) {
|
|
25
|
+
return t('loadspark-core:validation:color:invalid');
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/ColourText/validate.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\nimport type { Validate } from 'payload'\n\nimport type { loadsparkCoreTranslationsKeys } from '../../translations/index.js'\n\nconst hexRegex = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i\nconst rgbRegex = /^rgba?\\(\\s*(?:\\d{1,3}\\s*,){2}\\s*\\d{1,3}\\s*(?:,\\s*(?:0|1|0?\\.\\d+)\\s*)?\\)$/\nconst hslRegex = /^hsla?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*(?:,\\s*(?:0|1|0?\\.\\d+)\\s*)?\\)$/\n\nfunction isLikelyColor(value: string): boolean {\n if (hexRegex.test(value)) {\n return true\n }\n if (rgbRegex.test(value)) {\n return true\n }\n if (hslRegex.test(value)) {\n return true\n }\n\n return typeof value === 'string' && value.length > 0 && /^[a-z]+$/i.test(value)\n}\n\nexport const validate =\n (required?: boolean): Validate =>\n (value, ctx) => {\n const t = ctx.req.t as TFunction<loadsparkCoreTranslationsKeys>\n if (!required && (!value || value === '')) {\n return true\n }\n if (required && (!value || value === '')) {\n return t('validation:required')\n }\n\n if (typeof value !== 'string' || !isLikelyColor(value)) {\n return t('loadspark-core:validation:color:invalid')\n }\n\n return true\n }\n"],"names":["hexRegex","rgbRegex","hslRegex","isLikelyColor","value","test","length","validate","required","ctx","t","req"],"mappings":"AAKA,MAAMA,WAAW;AACjB,MAAMC,WAAW;AACjB,MAAMC,WAAW;AAEjB,SAASC,cAAcC,KAAa;IAClC,IAAIJ,SAASK,IAAI,CAACD,QAAQ;QACxB,OAAO;IACT;IACA,IAAIH,SAASI,IAAI,CAACD,QAAQ;QACxB,OAAO;IACT;IACA,IAAIF,SAASG,IAAI,CAACD,QAAQ;QACxB,OAAO;IACT;IAEA,OAAO,OAAOA,UAAU,YAAYA,MAAME,MAAM,GAAG,KAAK,YAAYD,IAAI,CAACD;AAC3E;AAEA,OAAO,MAAMG,WACX,CAACC,WACD,CAACJ,OAAOK;QACN,MAAMC,IAAID,IAAIE,GAAG,CAACD,CAAC;QACnB,IAAI,CAACF,YAAa,CAAA,CAACJ,SAASA,UAAU,EAAC,GAAI;YACzC,OAAO;QACT;QACA,IAAII,YAAa,CAAA,CAACJ,SAASA,UAAU,EAAC,GAAI;YACxC,OAAOM,EAAE;QACX;QAEA,IAAI,OAAON,UAAU,YAAY,CAACD,cAAcC,QAAQ;YACtD,OAAOM,EAAE;QACX;QAEA,OAAO;IACT,EAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TextFieldClientProps } from 'payload';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { Config } from './index.js';
|
|
4
|
+
type Props = {
|
|
5
|
+
className?: string;
|
|
6
|
+
config: {
|
|
7
|
+
options: Config;
|
|
8
|
+
watchFields: string[];
|
|
9
|
+
};
|
|
10
|
+
path: string;
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
readOnly?: boolean;
|
|
13
|
+
} & TextFieldClientProps;
|
|
14
|
+
export declare const ComboComponent: React.FC<Props>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=Component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../src/fields/Combo/Component.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAWnD,OAAO,KAA+B,MAAM,OAAO,CAAA;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,EAAE,CAAA;KACtB,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,oBAAoB,CAAA;AAExB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4G1C,CAAA"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { FieldDescription, FieldError, FieldLabel, RenderCustomComponent, TextInput, useField, useFormFields } from '@payloadcms/ui';
|
|
4
|
+
import React, { useCallback, useMemo } from 'react';
|
|
5
|
+
export const ComboComponent = (props)=>{
|
|
6
|
+
const { config, field, path, readOnly, validate } = props;
|
|
7
|
+
const { admin: { className, description, placeholder, readOnly: adminReadOnly } = {}, label, required } = field;
|
|
8
|
+
const memoizedValidate = useCallback(// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
(value, options)=>{
|
|
10
|
+
if (typeof validate === 'function') {
|
|
11
|
+
return validate(value, {
|
|
12
|
+
...options,
|
|
13
|
+
required
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}, [
|
|
17
|
+
validate,
|
|
18
|
+
required
|
|
19
|
+
]);
|
|
20
|
+
const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, errorMessage, setValue, showError, value } = useField({
|
|
21
|
+
path,
|
|
22
|
+
// @ts-expect-error - memoizedValidate is not typed
|
|
23
|
+
validate: memoizedValidate
|
|
24
|
+
});
|
|
25
|
+
const classes = [
|
|
26
|
+
'field-type',
|
|
27
|
+
'text',
|
|
28
|
+
className,
|
|
29
|
+
showError && 'error',
|
|
30
|
+
readOnly && 'read-only',
|
|
31
|
+
'container'
|
|
32
|
+
].filter(Boolean).join(' ');
|
|
33
|
+
const fields = useFormFields(([fields])=>{
|
|
34
|
+
return config.watchFields.map((watch)=>fields[watch] ?? {
|
|
35
|
+
value: ''
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
const processedValue = useMemo(()=>{
|
|
39
|
+
const separator = config.options?.separator ?? ' ';
|
|
40
|
+
return fields.filter((item)=>item && item.value != null).reduce((acc, current, index)=>{
|
|
41
|
+
const v = String(current.value);
|
|
42
|
+
return acc + (index > 0 ? separator : '') + v;
|
|
43
|
+
}, config.options.initial ?? '');
|
|
44
|
+
}, [
|
|
45
|
+
fields,
|
|
46
|
+
config
|
|
47
|
+
]);
|
|
48
|
+
React.useEffect(()=>{
|
|
49
|
+
if (processedValue !== value) {
|
|
50
|
+
setValue(processedValue);
|
|
51
|
+
}
|
|
52
|
+
}, [
|
|
53
|
+
processedValue,
|
|
54
|
+
value,
|
|
55
|
+
setValue
|
|
56
|
+
]);
|
|
57
|
+
const isReadonly = Boolean(readOnly) || adminReadOnly;
|
|
58
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
59
|
+
className: `bfComboFieldWrapper field-type`,
|
|
60
|
+
children: [
|
|
61
|
+
/*#__PURE__*/ _jsx(RenderCustomComponent, {
|
|
62
|
+
CustomComponent: Label,
|
|
63
|
+
Fallback: /*#__PURE__*/ _jsx(FieldLabel, {
|
|
64
|
+
label: label,
|
|
65
|
+
path: path,
|
|
66
|
+
required: required
|
|
67
|
+
})
|
|
68
|
+
}),
|
|
69
|
+
BeforeInput,
|
|
70
|
+
/*#__PURE__*/ _jsx("div", {
|
|
71
|
+
className: classes,
|
|
72
|
+
children: /*#__PURE__*/ _jsx(TextInput, {
|
|
73
|
+
className: 'comboInput',
|
|
74
|
+
Error: /*#__PURE__*/ _jsx(FieldError, {
|
|
75
|
+
message: errorMessage
|
|
76
|
+
}),
|
|
77
|
+
label: undefined,
|
|
78
|
+
onChange: (e)=>{
|
|
79
|
+
setValue(e.target.value);
|
|
80
|
+
},
|
|
81
|
+
path: path,
|
|
82
|
+
placeholder: placeholder ?? undefined,
|
|
83
|
+
readOnly: isReadonly,
|
|
84
|
+
required: required,
|
|
85
|
+
showError: showError,
|
|
86
|
+
style: {
|
|
87
|
+
marginBottom: 0
|
|
88
|
+
},
|
|
89
|
+
value: value
|
|
90
|
+
})
|
|
91
|
+
}),
|
|
92
|
+
/*#__PURE__*/ _jsx(RenderCustomComponent, {
|
|
93
|
+
CustomComponent: Description,
|
|
94
|
+
Fallback: /*#__PURE__*/ _jsx(FieldDescription, {
|
|
95
|
+
className: `field-description-${path.replace(/\./g, '__')}`,
|
|
96
|
+
description: description ?? '',
|
|
97
|
+
path: path
|
|
98
|
+
})
|
|
99
|
+
}),
|
|
100
|
+
AfterInput
|
|
101
|
+
]
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=Component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Combo/Component.tsx"],"sourcesContent":["'use client'\n\nimport type { TextFieldClientProps } from 'payload'\n\nimport {\n FieldDescription,\n FieldError,\n FieldLabel,\n RenderCustomComponent,\n TextInput,\n useField,\n useFormFields,\n} from '@payloadcms/ui'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { Config } from './index.js'\n\ntype Props = {\n className?: string\n config: {\n options: Config\n watchFields: string[]\n }\n path: string\n placeholder?: string\n readOnly?: boolean\n} & TextFieldClientProps\n\nexport const ComboComponent: React.FC<Props> = (props) => {\n const { config, field, path, readOnly, validate } = props\n\n const {\n admin: { className, description, placeholder, readOnly: adminReadOnly } = {},\n label,\n required,\n } = field\n\n const memoizedValidate = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (value: number[] & string, options: any) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Label } = {},\n errorMessage,\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n // @ts-expect-error - memoizedValidate is not typed\n validate: memoizedValidate,\n })\n\n const classes = [\n 'field-type',\n 'text',\n className,\n showError && 'error',\n readOnly && 'read-only',\n 'container',\n ]\n .filter(Boolean)\n .join(' ')\n\n const fields = useFormFields(([fields]) => {\n return config.watchFields.map((watch) => fields[watch] ?? { value: '' })\n })\n\n const processedValue = useMemo(() => {\n const separator = config.options?.separator ?? ' '\n\n return fields\n .filter((item) => item && item.value != null)\n .reduce((acc, current, index) => {\n const v = String(current.value)\n return acc + (index > 0 ? separator : '') + v\n }, config.options.initial ?? '')\n }, [fields, config])\n\n React.useEffect(() => {\n if (processedValue !== value) {\n setValue(processedValue)\n }\n }, [processedValue, value, setValue])\n\n const isReadonly = Boolean(readOnly) || adminReadOnly\n\n return (\n <div className={`bfComboFieldWrapper field-type`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={<FieldLabel label={label} path={path} required={required} />}\n />\n\n {BeforeInput}\n\n <div className={classes}>\n <TextInput\n className={'comboInput'}\n Error={<FieldError message={errorMessage} />}\n label={undefined}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={(placeholder as string) ?? undefined}\n readOnly={isReadonly}\n required={required}\n showError={showError}\n style={{\n marginBottom: 0,\n }}\n value={value}\n />\n </div>\n\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <FieldDescription\n className={`field-description-${path.replace(/\\./g, '__')}`}\n description={description ?? ''}\n path={path}\n />\n }\n />\n\n {AfterInput}\n </div>\n )\n}\n"],"names":["FieldDescription","FieldError","FieldLabel","RenderCustomComponent","TextInput","useField","useFormFields","React","useCallback","useMemo","ComboComponent","props","config","field","path","readOnly","validate","admin","className","description","placeholder","adminReadOnly","label","required","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Label","errorMessage","setValue","showError","classes","filter","Boolean","join","fields","watchFields","map","watch","processedValue","separator","item","reduce","acc","current","index","v","String","initial","useEffect","isReadonly","div","CustomComponent","Fallback","Error","message","undefined","onChange","e","target","style","marginBottom","replace"],"mappings":"AAAA;;AAIA,SACEA,gBAAgB,EAChBC,UAAU,EACVC,UAAU,EACVC,qBAAqB,EACrBC,SAAS,EACTC,QAAQ,EACRC,aAAa,QACR,iBAAgB;AACvB,OAAOC,SAASC,WAAW,EAAEC,OAAO,QAAQ,QAAO;AAenD,OAAO,MAAMC,iBAAkC,CAACC;IAC9C,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGL;IAEpD,MAAM,EACJM,OAAO,EAAEC,SAAS,EAAEC,WAAW,EAAEC,WAAW,EAAEL,UAAUM,aAAa,EAAE,GAAG,CAAC,CAAC,EAC5EC,KAAK,EACLC,QAAQ,EACT,GAAGV;IAEJ,MAAMW,mBAAmBhB,YACvB,8DAA8D;IAC9D,CAACiB,OAA0BC;QACzB,IAAI,OAAOV,aAAa,YAAY;YAClC,OAAOA,SAASS,OAAO;gBAAE,GAAGC,OAAO;gBAAEH;YAAS;QAChD;IACF,GACA;QAACP;QAAUO;KAAS;IAGtB,MAAM,EACJI,kBAAkB,EAAEC,UAAU,EAAEC,WAAW,EAAEC,WAAW,EAAEC,KAAK,EAAE,GAAG,CAAC,CAAC,EACtEC,YAAY,EACZC,QAAQ,EACRC,SAAS,EACTT,KAAK,EACN,GAAGpB,SAAiB;QACnBS;QACA,mDAAmD;QACnDE,UAAUQ;IACZ;IAEA,MAAMW,UAAU;QACd;QACA;QACAjB;QACAgB,aAAa;QACbnB,YAAY;QACZ;KACD,CACEqB,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,MAAMC,SAASjC,cAAc,CAAC,CAACiC,OAAO;QACpC,OAAO3B,OAAO4B,WAAW,CAACC,GAAG,CAAC,CAACC,QAAUH,MAAM,CAACG,MAAM,IAAI;gBAAEjB,OAAO;YAAG;IACxE;IAEA,MAAMkB,iBAAiBlC,QAAQ;QAC7B,MAAMmC,YAAYhC,OAAOc,OAAO,EAAEkB,aAAa;QAE/C,OAAOL,OACJH,MAAM,CAAC,CAACS,OAASA,QAAQA,KAAKpB,KAAK,IAAI,MACvCqB,MAAM,CAAC,CAACC,KAAKC,SAASC;YACrB,MAAMC,IAAIC,OAAOH,QAAQvB,KAAK;YAC9B,OAAOsB,MAAOE,CAAAA,QAAQ,IAAIL,YAAY,EAAC,IAAKM;QAC9C,GAAGtC,OAAOc,OAAO,CAAC0B,OAAO,IAAI;IACjC,GAAG;QAACb;QAAQ3B;KAAO;IAEnBL,MAAM8C,SAAS,CAAC;QACd,IAAIV,mBAAmBlB,OAAO;YAC5BQ,SAASU;QACX;IACF,GAAG;QAACA;QAAgBlB;QAAOQ;KAAS;IAEpC,MAAMqB,aAAajB,QAAQtB,aAAaM;IAExC,qBACE,MAACkC;QAAIrC,WAAW,CAAC,8BAA8B,CAAC;;0BAC9C,KAACf;gBACCqD,iBAAiBzB;gBACjB0B,wBAAU,KAACvD;oBAAWoB,OAAOA;oBAAOR,MAAMA;oBAAMS,UAAUA;;;YAG3DM;0BAED,KAAC0B;gBAAIrC,WAAWiB;0BACd,cAAA,KAAC/B;oBACCc,WAAW;oBACXwC,qBAAO,KAACzD;wBAAW0D,SAAS3B;;oBAC5BV,OAAOsC;oBACPC,UAAU,CAACC;wBACT7B,SAAS6B,EAAEC,MAAM,CAACtC,KAAK;oBACzB;oBACAX,MAAMA;oBACNM,aAAa,AAACA,eAA0BwC;oBACxC7C,UAAUuC;oBACV/B,UAAUA;oBACVW,WAAWA;oBACX8B,OAAO;wBACLC,cAAc;oBAChB;oBACAxC,OAAOA;;;0BAIX,KAACtB;gBACCqD,iBAAiB1B;gBACjB2B,wBACE,KAACzD;oBACCkB,WAAW,CAAC,kBAAkB,EAAEJ,KAAKoD,OAAO,CAAC,OAAO,OAAO;oBAC3D/C,aAAaA,eAAe;oBAC5BL,MAAMA;;;YAKXc;;;AAGP,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beforeValidate.d.ts","sourceRoot":"","sources":["../../../src/fields/Combo/beforeValidate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAIxC,eAAO,MAAM,cAAc,gBACX,MAAM,EAAE,WAAW,MAAM,KAAG,SAsCzC,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getItemInNestedObject } from '../../utils.js';
|
|
2
|
+
export const beforeValidate = (watchFields, options)=>({ data, operation, originalDoc, value })=>{
|
|
3
|
+
// Process on both create and update to keep the derived value in sync
|
|
4
|
+
const missingFields = [];
|
|
5
|
+
const fields = watchFields.map((field)=>{
|
|
6
|
+
const nestedItem = getItemInNestedObject(field, data);
|
|
7
|
+
if (!nestedItem) {
|
|
8
|
+
missingFields.push(field);
|
|
9
|
+
} else {
|
|
10
|
+
return nestedItem;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
/* Repeat the same but in the original doc to make sure we get all the data we can */ if (missingFields.length > 0 && Boolean(originalDoc)) {
|
|
14
|
+
missingFields.forEach((field)=>{
|
|
15
|
+
const nestedItem = getItemInNestedObject(field, originalDoc);
|
|
16
|
+
if (nestedItem) {
|
|
17
|
+
fields.push(nestedItem);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const separator = options?.separator ?? ' ';
|
|
22
|
+
const processedValue = fields.filter((item)=>Boolean(item)).reduce((accumulator, currentValue, currentIndex)=>{
|
|
23
|
+
// const value = options.callback ? options.callback(String(currentValue)) : String(currentValue)
|
|
24
|
+
const value = String(currentValue);
|
|
25
|
+
return String(accumulator) + (currentIndex > 0 ? separator : '') + value;
|
|
26
|
+
}, options.initial);
|
|
27
|
+
return processedValue;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=beforeValidate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Combo/beforeValidate.ts"],"sourcesContent":["import type { FieldHook } from 'payload'\n\nimport type { Config } from './index.js'\n\nimport { getItemInNestedObject } from '../../utils.js'\n\nexport const beforeValidate =\n (watchFields: string[], options: Config): FieldHook =>\n ({ data, operation, originalDoc, value }) => {\n // Process on both create and update to keep the derived value in sync\n const missingFields: string[] = []\n\n const fields = watchFields.map((field) => {\n const nestedItem = getItemInNestedObject(field, data as Record<string, unknown>) as string\n\n if (!nestedItem) {\n missingFields.push(field)\n } else {\n return nestedItem\n }\n })\n\n /* Repeat the same but in the original doc to make sure we get all the data we can */\n if (missingFields.length > 0 && Boolean(originalDoc)) {\n missingFields.forEach((field) => {\n const nestedItem = getItemInNestedObject(field, originalDoc) as string\n\n if (nestedItem) {\n fields.push(nestedItem)\n }\n })\n }\n\n const separator = options?.separator ?? ' '\n\n const processedValue = fields\n .filter((item) => Boolean(item))\n .reduce((accumulator, currentValue, currentIndex) => {\n // const value = options.callback ? options.callback(String(currentValue)) : String(currentValue)\n const value = String(currentValue)\n\n return String(accumulator) + (currentIndex > 0 ? separator : '') + value\n }, options.initial)\n\n return processedValue\n }\n"],"names":["getItemInNestedObject","beforeValidate","watchFields","options","data","operation","originalDoc","value","missingFields","fields","map","field","nestedItem","push","length","Boolean","forEach","separator","processedValue","filter","item","reduce","accumulator","currentValue","currentIndex","String","initial"],"mappings":"AAIA,SAASA,qBAAqB,QAAQ,iBAAgB;AAEtD,OAAO,MAAMC,iBACX,CAACC,aAAuBC,UACxB,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,WAAW,EAAEC,KAAK,EAAE;QACtC,sEAAsE;QACtE,MAAMC,gBAA0B,EAAE;QAElC,MAAMC,SAASP,YAAYQ,GAAG,CAAC,CAACC;YAC9B,MAAMC,aAAaZ,sBAAsBW,OAAOP;YAEhD,IAAI,CAACQ,YAAY;gBACfJ,cAAcK,IAAI,CAACF;YACrB,OAAO;gBACL,OAAOC;YACT;QACF;QAEA,mFAAmF,GACnF,IAAIJ,cAAcM,MAAM,GAAG,KAAKC,QAAQT,cAAc;YACpDE,cAAcQ,OAAO,CAAC,CAACL;gBACrB,MAAMC,aAAaZ,sBAAsBW,OAAOL;gBAEhD,IAAIM,YAAY;oBACdH,OAAOI,IAAI,CAACD;gBACd;YACF;QACF;QAEA,MAAMK,YAAYd,SAASc,aAAa;QAExC,MAAMC,iBAAiBT,OACpBU,MAAM,CAAC,CAACC,OAASL,QAAQK,OACzBC,MAAM,CAAC,CAACC,aAAaC,cAAcC;YAClC,iGAAiG;YACjG,MAAMjB,QAAQkB,OAAOF;YAErB,OAAOE,OAAOH,eAAgBE,CAAAA,eAAe,IAAIP,YAAY,EAAC,IAAKV;QACrE,GAAGJ,QAAQuB,OAAO;QAEpB,OAAOR;IACT,EAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type Field, type TextField } from 'payload';
|
|
2
|
+
export type Config = {
|
|
3
|
+
initial?: string;
|
|
4
|
+
separator?: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Factory function type for creating a Combo field.
|
|
8
|
+
*
|
|
9
|
+
* @param overrides - Any Payload TextField properties to override (except type)
|
|
10
|
+
* @param fieldToUse - Array of field paths to combine (nested paths supported, e.g., 'user.name')
|
|
11
|
+
* @param options - Optional configuration for value processing
|
|
12
|
+
*
|
|
13
|
+
* @returns A Payload Field configuration
|
|
14
|
+
*/
|
|
15
|
+
export type Combo = (
|
|
16
|
+
/**
|
|
17
|
+
* Field overrides
|
|
18
|
+
*/
|
|
19
|
+
overrides: Omit<TextField, 'type'>,
|
|
20
|
+
/**
|
|
21
|
+
* An array of string mapping the field path names, nested fields are supported here
|
|
22
|
+
* @default {string[]} ['title']
|
|
23
|
+
*/
|
|
24
|
+
fieldToUse: string[],
|
|
25
|
+
/**
|
|
26
|
+
* Additional configuration for processing the value
|
|
27
|
+
* @default { separator: ' ' }
|
|
28
|
+
*/
|
|
29
|
+
options?: Config) => Field;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a Combo field that combines multiple field values into one.
|
|
32
|
+
*
|
|
33
|
+
* This field automatically combines values from multiple fields (specified by their paths)
|
|
34
|
+
* into a single text field. The combined value is updated automatically when any of the
|
|
35
|
+
* source fields change. Useful for creating full names, addresses, or other composite values.
|
|
36
|
+
*
|
|
37
|
+
* @param overrides - Any Payload TextField properties to override (name, label, etc.)
|
|
38
|
+
* @param fieldToUse - Array of field paths to combine (e.g., ['firstName', 'lastName'] or ['user.profile.firstName'])
|
|
39
|
+
* @param options - Optional configuration
|
|
40
|
+
* @param options.separator - String to use between combined values (defaults to ' ')
|
|
41
|
+
* @param options.initial - Initial value for the field (defaults to '')
|
|
42
|
+
*
|
|
43
|
+
* @returns A Payload Field configuration
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* ComboField(
|
|
48
|
+
* {
|
|
49
|
+
* name: 'fullName',
|
|
50
|
+
* label: { en: 'Full Name', de: 'Vollständiger Name' }
|
|
51
|
+
* },
|
|
52
|
+
* ['firstName', 'lastName'],
|
|
53
|
+
* { separator: ' ' }
|
|
54
|
+
* )
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare const ComboField: Combo;
|
|
58
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Combo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAA;AAI/D,MAAM,MAAM,MAAM,GAAG;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,GAAG;AAClB;;GAEG;AACH,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;AAClC;;;GAGG;AACH,UAAU,EAAE,MAAM,EAAE;AACpB;;;GAGG;AACH,OAAO,CAAC,EAAE,MAAM,KACb,KAAK,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,UAAU,EAAE,KA0CxB,CAAA"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { deepMerge } from 'payload';
|
|
2
|
+
import { beforeValidate } from './beforeValidate.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Combo field that combines multiple field values into one.
|
|
5
|
+
*
|
|
6
|
+
* This field automatically combines values from multiple fields (specified by their paths)
|
|
7
|
+
* into a single text field. The combined value is updated automatically when any of the
|
|
8
|
+
* source fields change. Useful for creating full names, addresses, or other composite values.
|
|
9
|
+
*
|
|
10
|
+
* @param overrides - Any Payload TextField properties to override (name, label, etc.)
|
|
11
|
+
* @param fieldToUse - Array of field paths to combine (e.g., ['firstName', 'lastName'] or ['user.profile.firstName'])
|
|
12
|
+
* @param options - Optional configuration
|
|
13
|
+
* @param options.separator - String to use between combined values (defaults to ' ')
|
|
14
|
+
* @param options.initial - Initial value for the field (defaults to '')
|
|
15
|
+
*
|
|
16
|
+
* @returns A Payload Field configuration
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* ComboField(
|
|
21
|
+
* {
|
|
22
|
+
* name: 'fullName',
|
|
23
|
+
* label: { en: 'Full Name', de: 'Vollständiger Name' }
|
|
24
|
+
* },
|
|
25
|
+
* ['firstName', 'lastName'],
|
|
26
|
+
* { separator: ' ' }
|
|
27
|
+
* )
|
|
28
|
+
* ```
|
|
29
|
+
*/ export const ComboField = (overrides, fieldToUse, options = {
|
|
30
|
+
initial: '',
|
|
31
|
+
separator: ' '
|
|
32
|
+
})=>{
|
|
33
|
+
const comboField = deepMerge({
|
|
34
|
+
name: 'combo',
|
|
35
|
+
type: 'text',
|
|
36
|
+
admin: {
|
|
37
|
+
components: {
|
|
38
|
+
Field: {
|
|
39
|
+
clientProps: {
|
|
40
|
+
config: {
|
|
41
|
+
options: {
|
|
42
|
+
initial: options.initial,
|
|
43
|
+
separator: options.separator
|
|
44
|
+
},
|
|
45
|
+
watchFields: fieldToUse
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
path: '@loadspark/core/fields/Combo/client#ComboComponent'
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
hooks: {
|
|
53
|
+
afterRead: [
|
|
54
|
+
...overrides.hooks?.afterRead || []
|
|
55
|
+
],
|
|
56
|
+
beforeChange: [
|
|
57
|
+
...overrides.hooks?.beforeChange || []
|
|
58
|
+
],
|
|
59
|
+
beforeDuplicate: [
|
|
60
|
+
...overrides.hooks?.beforeDuplicate || []
|
|
61
|
+
],
|
|
62
|
+
beforeValidate: [
|
|
63
|
+
...overrides.hooks?.beforeValidate || [],
|
|
64
|
+
beforeValidate(fieldToUse, options)
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
...overrides,
|
|
69
|
+
hooks: undefined
|
|
70
|
+
});
|
|
71
|
+
return comboField;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Combo/index.ts"],"sourcesContent":["import { deepMerge, type Field, type TextField } from 'payload'\n\nimport { beforeValidate } from './beforeValidate.js'\n\nexport type Config = {\n // commented out for now until we can find a better pattern\n // callback?: (value: string) => Promise<string> | string\n initial?: string\n separator?: string\n}\n\n/**\n * Factory function type for creating a Combo field.\n *\n * @param overrides - Any Payload TextField properties to override (except type)\n * @param fieldToUse - Array of field paths to combine (nested paths supported, e.g., 'user.name')\n * @param options - Optional configuration for value processing\n *\n * @returns A Payload Field configuration\n */\nexport type Combo = (\n /**\n * Field overrides\n */\n overrides: Omit<TextField, 'type'>,\n /**\n * An array of string mapping the field path names, nested fields are supported here\n * @default {string[]} ['title']\n */\n fieldToUse: string[],\n /**\n * Additional configuration for processing the value\n * @default { separator: ' ' }\n */\n options?: Config,\n) => Field\n\n/**\n * Creates a Combo field that combines multiple field values into one.\n *\n * This field automatically combines values from multiple fields (specified by their paths)\n * into a single text field. The combined value is updated automatically when any of the\n * source fields change. Useful for creating full names, addresses, or other composite values.\n *\n * @param overrides - Any Payload TextField properties to override (name, label, etc.)\n * @param fieldToUse - Array of field paths to combine (e.g., ['firstName', 'lastName'] or ['user.profile.firstName'])\n * @param options - Optional configuration\n * @param options.separator - String to use between combined values (defaults to ' ')\n * @param options.initial - Initial value for the field (defaults to '')\n *\n * @returns A Payload Field configuration\n *\n * @example\n * ```ts\n * ComboField(\n * {\n * name: 'fullName',\n * label: { en: 'Full Name', de: 'Vollständiger Name' }\n * },\n * ['firstName', 'lastName'],\n * { separator: ' ' }\n * )\n * ```\n */\nexport const ComboField: Combo = (\n overrides,\n fieldToUse: string[],\n options: Config = { initial: '', separator: ' ' },\n) => {\n const comboField = deepMerge<TextField, Omit<TextField, 'type'>>(\n {\n name: 'combo',\n type: 'text',\n admin: {\n components: {\n Field: {\n clientProps: {\n config: {\n options: {\n initial: options.initial,\n separator: options.separator,\n },\n watchFields: fieldToUse,\n },\n },\n path: '@loadspark/core/fields/Combo/client#ComboComponent',\n },\n },\n },\n hooks: {\n afterRead: [...(overrides.hooks?.afterRead || [])],\n beforeChange: [...(overrides.hooks?.beforeChange || [])],\n beforeDuplicate: [...(overrides.hooks?.beforeDuplicate || [])],\n beforeValidate: [\n ...(overrides.hooks?.beforeValidate || []),\n beforeValidate(fieldToUse, options),\n ],\n },\n },\n {\n ...overrides,\n hooks: undefined,\n },\n )\n\n return comboField\n}\n"],"names":["deepMerge","beforeValidate","ComboField","overrides","fieldToUse","options","initial","separator","comboField","name","type","admin","components","Field","clientProps","config","watchFields","path","hooks","afterRead","beforeChange","beforeDuplicate","undefined"],"mappings":"AAAA,SAASA,SAAS,QAAoC,UAAS;AAE/D,SAASC,cAAc,QAAQ,sBAAqB;AAmCpD;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,MAAMC,aAAoB,CAC/BC,WACAC,YACAC,UAAkB;IAAEC,SAAS;IAAIC,WAAW;AAAI,CAAC;IAEjD,MAAMC,aAAaR,UACjB;QACES,MAAM;QACNC,MAAM;QACNC,OAAO;YACLC,YAAY;gBACVC,OAAO;oBACLC,aAAa;wBACXC,QAAQ;4BACNV,SAAS;gCACPC,SAASD,QAAQC,OAAO;gCACxBC,WAAWF,QAAQE,SAAS;4BAC9B;4BACAS,aAAaZ;wBACf;oBACF;oBACAa,MAAM;gBACR;YACF;QACF;QACAC,OAAO;YACLC,WAAW;mBAAKhB,UAAUe,KAAK,EAAEC,aAAa,EAAE;aAAE;YAClDC,cAAc;mBAAKjB,UAAUe,KAAK,EAAEE,gBAAgB,EAAE;aAAE;YACxDC,iBAAiB;mBAAKlB,UAAUe,KAAK,EAAEG,mBAAmB,EAAE;aAAE;YAC9DpB,gBAAgB;mBACVE,UAAUe,KAAK,EAAEjB,kBAAkB,EAAE;gBACzCA,eAAeG,YAAYC;aAC5B;QACH;IACF,GACA;QACE,GAAGF,SAAS;QACZe,OAAOI;IACT;IAGF,OAAOd;AACT,EAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type Field, type SelectField } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Factory function type for creating a Countries select field.
|
|
4
|
+
*
|
|
5
|
+
* @param overrides - Optional Payload SelectField properties to override (except type)
|
|
6
|
+
*
|
|
7
|
+
* @returns A Payload Field configuration
|
|
8
|
+
*/
|
|
9
|
+
export type CountriesSelect = (
|
|
10
|
+
/**
|
|
11
|
+
* Field overrides
|
|
12
|
+
*/
|
|
13
|
+
overrides?: Partial<Omit<SelectField, 'type'>>) => Field;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a Countries select field with pre-populated country options.
|
|
16
|
+
*
|
|
17
|
+
* This field provides a select dropdown with all supported countries from the
|
|
18
|
+
* @flexiweb/core constants. Each country includes:
|
|
19
|
+
* - ISO 2-letter country code as the value
|
|
20
|
+
* - Multilingual labels (German and English)
|
|
21
|
+
*
|
|
22
|
+
* The field name automatically adjusts based on `hasMany`:
|
|
23
|
+
* - Single select: 'country'
|
|
24
|
+
* - Multiple select: 'countries'
|
|
25
|
+
*
|
|
26
|
+
* @param overrides - Optional Payload SelectField properties to override
|
|
27
|
+
* @param overrides.hasMany - If true, allows selecting multiple countries
|
|
28
|
+
* @param overrides.label - Custom label (defaults to 'Country' / 'Countries' based on hasMany)
|
|
29
|
+
* @param overrides.name - Custom field name (defaults to 'country' or 'countries')
|
|
30
|
+
*
|
|
31
|
+
* @returns A Payload Field configuration
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Single country selection
|
|
36
|
+
* CountriesSelectField({
|
|
37
|
+
* name: 'country',
|
|
38
|
+
* label: { en: 'Country', de: 'Land' }
|
|
39
|
+
* })
|
|
40
|
+
*
|
|
41
|
+
* // Multiple countries
|
|
42
|
+
* CountriesSelectField({
|
|
43
|
+
* hasMany: true,
|
|
44
|
+
* label: { en: 'Countries', de: 'Länder' }
|
|
45
|
+
* })
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare const CountriesSelectField: CountriesSelect;
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Countries/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAA;AAMjE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;AAC5B;;GAEG;AACH,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAC3C,KAAK,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,oBAAoB,EAAE,eA2BlC,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { deepMerge } from 'payload';
|
|
2
|
+
import { Country } from '../../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Countries select field with pre-populated country options.
|
|
5
|
+
*
|
|
6
|
+
* This field provides a select dropdown with all supported countries from the
|
|
7
|
+
* @flexiweb/core constants. Each country includes:
|
|
8
|
+
* - ISO 2-letter country code as the value
|
|
9
|
+
* - Multilingual labels (German and English)
|
|
10
|
+
*
|
|
11
|
+
* The field name automatically adjusts based on `hasMany`:
|
|
12
|
+
* - Single select: 'country'
|
|
13
|
+
* - Multiple select: 'countries'
|
|
14
|
+
*
|
|
15
|
+
* @param overrides - Optional Payload SelectField properties to override
|
|
16
|
+
* @param overrides.hasMany - If true, allows selecting multiple countries
|
|
17
|
+
* @param overrides.label - Custom label (defaults to 'Country' / 'Countries' based on hasMany)
|
|
18
|
+
* @param overrides.name - Custom field name (defaults to 'country' or 'countries')
|
|
19
|
+
*
|
|
20
|
+
* @returns A Payload Field configuration
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* // Single country selection
|
|
25
|
+
* CountriesSelectField({
|
|
26
|
+
* name: 'country',
|
|
27
|
+
* label: { en: 'Country', de: 'Land' }
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* // Multiple countries
|
|
31
|
+
* CountriesSelectField({
|
|
32
|
+
* hasMany: true,
|
|
33
|
+
* label: { en: 'Countries', de: 'Länder' }
|
|
34
|
+
* })
|
|
35
|
+
* ```
|
|
36
|
+
*/ export const CountriesSelectField = (overrides)=>{
|
|
37
|
+
const countries = Object.values(Country).map((code)=>({
|
|
38
|
+
label: ({ i18n })=>{
|
|
39
|
+
const t = i18n.t;
|
|
40
|
+
return t(`loadspark-core:general:countries:list:${code}`);
|
|
41
|
+
},
|
|
42
|
+
value: code
|
|
43
|
+
}));
|
|
44
|
+
const selectField = deepMerge({
|
|
45
|
+
name: overrides?.hasMany ? 'countries' : 'country',
|
|
46
|
+
type: 'select',
|
|
47
|
+
label: overrides?.hasMany ? ({ i18n })=>{
|
|
48
|
+
const t = i18n.t;
|
|
49
|
+
return t('loadspark-core:general:countries:plural');
|
|
50
|
+
} : ({ i18n })=>{
|
|
51
|
+
const t = i18n.t;
|
|
52
|
+
return t('loadspark-core:general:countries:singular');
|
|
53
|
+
},
|
|
54
|
+
options: countries
|
|
55
|
+
}, overrides || {});
|
|
56
|
+
return selectField;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Countries/index.ts"],"sourcesContent":["import type { I18nClient, TFunction } from '@payloadcms/translations'\n\nimport { deepMerge, type Field, type SelectField } from 'payload'\n\nimport type { loadsparkCoreTranslationsKeys } from '../../translations/index.js'\n\nimport { Country } from '../../types.js'\n\n/**\n * Factory function type for creating a Countries select field.\n *\n * @param overrides - Optional Payload SelectField properties to override (except type)\n *\n * @returns A Payload Field configuration\n */\nexport type CountriesSelect = (\n /**\n * Field overrides\n */\n overrides?: Partial<Omit<SelectField, 'type'>>,\n) => Field\n\n/**\n * Creates a Countries select field with pre-populated country options.\n *\n * This field provides a select dropdown with all supported countries from the\n * @flexiweb/core constants. Each country includes:\n * - ISO 2-letter country code as the value\n * - Multilingual labels (German and English)\n *\n * The field name automatically adjusts based on `hasMany`:\n * - Single select: 'country'\n * - Multiple select: 'countries'\n *\n * @param overrides - Optional Payload SelectField properties to override\n * @param overrides.hasMany - If true, allows selecting multiple countries\n * @param overrides.label - Custom label (defaults to 'Country' / 'Countries' based on hasMany)\n * @param overrides.name - Custom field name (defaults to 'country' or 'countries')\n *\n * @returns A Payload Field configuration\n *\n * @example\n * ```ts\n * // Single country selection\n * CountriesSelectField({\n * name: 'country',\n * label: { en: 'Country', de: 'Land' }\n * })\n *\n * // Multiple countries\n * CountriesSelectField({\n * hasMany: true,\n * label: { en: 'Countries', de: 'Länder' }\n * })\n * ```\n */\nexport const CountriesSelectField: CountriesSelect = (overrides) => {\n const countries = Object.values(Country).map((code) => ({\n label: ({ i18n }: { i18n: I18nClient }) => {\n const t = i18n.t as TFunction<loadsparkCoreTranslationsKeys>\n return t(`loadspark-core:general:countries:list:${code}`)\n },\n value: code,\n }))\n const selectField = deepMerge<SelectField, Omit<SelectField, 'type'>>(\n {\n name: overrides?.hasMany ? 'countries' : 'country',\n type: 'select',\n label: overrides?.hasMany\n ? ({ i18n }) => {\n const t = i18n.t as TFunction<loadsparkCoreTranslationsKeys>\n return t('loadspark-core:general:countries:plural')\n }\n : ({ i18n }) => {\n const t = i18n.t as TFunction<loadsparkCoreTranslationsKeys>\n return t('loadspark-core:general:countries:singular')\n },\n options: countries,\n },\n overrides || {},\n )\n\n return selectField\n}\n"],"names":["deepMerge","Country","CountriesSelectField","overrides","countries","Object","values","map","code","label","i18n","t","value","selectField","name","hasMany","type","options"],"mappings":"AAEA,SAASA,SAAS,QAAsC,UAAS;AAIjE,SAASC,OAAO,QAAQ,iBAAgB;AAgBxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCC,GACD,OAAO,MAAMC,uBAAwC,CAACC;IACpD,MAAMC,YAAYC,OAAOC,MAAM,CAACL,SAASM,GAAG,CAAC,CAACC,OAAU,CAAA;YACtDC,OAAO,CAAC,EAAEC,IAAI,EAAwB;gBACpC,MAAMC,IAAID,KAAKC,CAAC;gBAChB,OAAOA,EAAE,CAAC,sCAAsC,EAAEH,MAAM;YAC1D;YACAI,OAAOJ;QACT,CAAA;IACA,MAAMK,cAAcb,UAClB;QACEc,MAAMX,WAAWY,UAAU,cAAc;QACzCC,MAAM;QACNP,OAAON,WAAWY,UACd,CAAC,EAAEL,IAAI,EAAE;YACP,MAAMC,IAAID,KAAKC,CAAC;YAChB,OAAOA,EAAE;QACX,IACA,CAAC,EAAED,IAAI,EAAE;YACP,MAAMC,IAAID,KAAKC,CAAC;YAChB,OAAOA,EAAE;QACX;QACJM,SAASb;IACX,GACAD,aAAa,CAAC;IAGhB,OAAOU;AACT,EAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { NumberFieldClientProps, TextFieldClientProps } from 'payload';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { Config } from './index.js';
|
|
4
|
+
import './styles.css';
|
|
5
|
+
type Props = {
|
|
6
|
+
className?: string;
|
|
7
|
+
config: Config;
|
|
8
|
+
path: string;
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
} & (NumberFieldClientProps | TextFieldClientProps);
|
|
12
|
+
export declare const NumberComponent: React.FC<Props>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=Component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../src/fields/Number/Component.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAS3E,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,CAAA;AAEnD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwH3C,CAAA"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */ 'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { FieldDescription, FieldError, FieldLabel, RenderCustomComponent, useField } from '@payloadcms/ui';
|
|
4
|
+
import React, { useCallback } from 'react';
|
|
5
|
+
import { NumericFormat } from 'react-number-format';
|
|
6
|
+
import './styles.css';
|
|
7
|
+
export const NumberComponent = (props)=>{
|
|
8
|
+
const { config, field, path, readOnly, validate } = props;
|
|
9
|
+
const { type, admin: { className, description, placeholder, readOnly: adminReadOnly } = {}, label, required } = field;
|
|
10
|
+
const memoizedValidate = useCallback((value, options)=>{
|
|
11
|
+
if (typeof validate === 'function') {
|
|
12
|
+
return validate(value, {
|
|
13
|
+
...options,
|
|
14
|
+
required
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}, [
|
|
18
|
+
validate,
|
|
19
|
+
required
|
|
20
|
+
]);
|
|
21
|
+
const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, errorMessage, setValue, showError, value } = useField({
|
|
22
|
+
path,
|
|
23
|
+
// @ts-expect-error - memoizedValidate is not typed
|
|
24
|
+
validate: memoizedValidate
|
|
25
|
+
});
|
|
26
|
+
const { ...componentProps } = config;
|
|
27
|
+
const formatValue = useCallback((value)=>{
|
|
28
|
+
const prefix = componentProps.prefix;
|
|
29
|
+
const suffix = componentProps.suffix;
|
|
30
|
+
const thousandSeparator = componentProps.thousandSeparator;
|
|
31
|
+
if (type === 'number') {
|
|
32
|
+
let cleanValue = value;
|
|
33
|
+
if (prefix) {
|
|
34
|
+
cleanValue = cleanValue.replaceAll(prefix, '');
|
|
35
|
+
}
|
|
36
|
+
if (suffix) {
|
|
37
|
+
cleanValue = cleanValue.replaceAll(suffix, '');
|
|
38
|
+
}
|
|
39
|
+
if (thousandSeparator) {
|
|
40
|
+
cleanValue = typeof thousandSeparator === 'string' ? cleanValue.replaceAll(thousandSeparator, '') : cleanValue.replaceAll(',', '');
|
|
41
|
+
}
|
|
42
|
+
return cleanValue;
|
|
43
|
+
} else {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
}, [
|
|
47
|
+
type,
|
|
48
|
+
componentProps
|
|
49
|
+
]);
|
|
50
|
+
const classes = [
|
|
51
|
+
'field-type',
|
|
52
|
+
'text',
|
|
53
|
+
className,
|
|
54
|
+
showError && 'error',
|
|
55
|
+
readOnly && 'read-only',
|
|
56
|
+
'container'
|
|
57
|
+
].filter(Boolean).join(' ');
|
|
58
|
+
const isReadonly = Boolean(readOnly) || Boolean(adminReadOnly);
|
|
59
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
60
|
+
className: `bfNumericFieldWrapper field-type`,
|
|
61
|
+
children: [
|
|
62
|
+
/*#__PURE__*/ _jsx(RenderCustomComponent, {
|
|
63
|
+
CustomComponent: Label,
|
|
64
|
+
Fallback: /*#__PURE__*/ _jsx(FieldLabel, {
|
|
65
|
+
label: label,
|
|
66
|
+
path: path,
|
|
67
|
+
required: required
|
|
68
|
+
})
|
|
69
|
+
}),
|
|
70
|
+
BeforeInput,
|
|
71
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
72
|
+
className: classes,
|
|
73
|
+
children: [
|
|
74
|
+
/*#__PURE__*/ _jsx(FieldError, {
|
|
75
|
+
message: errorMessage ?? '',
|
|
76
|
+
showError: showError
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ _jsx(NumericFormat, {
|
|
79
|
+
className: "numberInput",
|
|
80
|
+
id: `field-${path.replace(/\./g, '__')}`,
|
|
81
|
+
name: path,
|
|
82
|
+
onChange: (e)=>{
|
|
83
|
+
const cleaned = formatValue(e.target.value);
|
|
84
|
+
const numeric = cleaned === '' || cleaned === null ? null : Number(cleaned);
|
|
85
|
+
setValue(Number.isNaN(numeric) ? null : numeric);
|
|
86
|
+
},
|
|
87
|
+
placeholder: typeof placeholder === 'string' ? placeholder : '',
|
|
88
|
+
readOnly: isReadonly,
|
|
89
|
+
required: required,
|
|
90
|
+
value: value ?? '',
|
|
91
|
+
...componentProps
|
|
92
|
+
})
|
|
93
|
+
]
|
|
94
|
+
}),
|
|
95
|
+
/*#__PURE__*/ _jsx(RenderCustomComponent, {
|
|
96
|
+
CustomComponent: Description,
|
|
97
|
+
Fallback: /*#__PURE__*/ _jsx(FieldDescription, {
|
|
98
|
+
className: `field-description-${path.replace(/\./g, '__')}`,
|
|
99
|
+
description: description ?? '',
|
|
100
|
+
path: path
|
|
101
|
+
})
|
|
102
|
+
}),
|
|
103
|
+
AfterInput
|
|
104
|
+
]
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=Component.js.map
|