playbook_ui 15.7.0.pre.alpha.PLAY2675dropdownquickpickcustomquickpickdates13330 → 15.7.0.pre.alpha.PLAY2704multilevelselectsingledisabledoptions13404

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +1 -13
  3. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -2
  4. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -2
  5. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +1 -6
  6. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +0 -121
  7. data/app/pb_kits/playbook/pb_dropdown/quickpick/index.ts +9 -85
  8. data/app/pb_kits/playbook/pb_dropdown/quickpick_helper.rb +2 -83
  9. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +9 -7
  10. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/index.js +3 -8
  11. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +7 -0
  12. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.md +1 -1
  13. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_disabled.html.erb +135 -0
  14. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_disabled.jsx +147 -0
  15. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_disabled.md +1 -0
  16. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  17. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -0
  18. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx +402 -27
  19. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select_options.tsx +1 -0
  20. data/app/pb_kits/playbook/pb_radio/_radio.scss +8 -0
  21. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +41 -3
  22. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_emoji_mask.html.erb +7 -0
  23. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_emoji_mask.jsx +24 -0
  24. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_emoji_mask.md +2 -0
  25. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +2 -0
  26. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  27. data/app/pb_kits/playbook/pb_text_input/index.js +49 -8
  28. data/app/pb_kits/playbook/pb_text_input/text_input.rb +5 -1
  29. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +53 -0
  30. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +38 -2
  31. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_emoji_mask.html.erb +5 -0
  32. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_emoji_mask.jsx +24 -0
  33. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_emoji_mask.md +1 -0
  34. data/app/pb_kits/playbook/pb_textarea/docs/example.yml +2 -0
  35. data/app/pb_kits/playbook/pb_textarea/docs/index.js +1 -0
  36. data/app/pb_kits/playbook/pb_textarea/index.ts +62 -5
  37. data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +1 -0
  38. data/app/pb_kits/playbook/pb_textarea/textarea.rb +8 -0
  39. data/app/pb_kits/playbook/pb_textarea/textarea.test.js +57 -2
  40. data/app/pb_kits/playbook/utilities/emojiMask.ts +42 -0
  41. data/dist/chunks/{_typeahead-Ckz1ce-2.js → _typeahead-DQWz6v7R.js} +2 -2
  42. data/dist/chunks/{lib-DxDBrGZX.js → lib-DxCgrqqG.js} +1 -1
  43. data/dist/chunks/vendor.js +3 -3
  44. data/dist/playbook-rails-react-bindings.js +1 -1
  45. data/dist/playbook-rails.js +1 -1
  46. data/dist/playbook.css +1 -1
  47. data/lib/playbook/forms/builder/form_field_builder.rb +2 -0
  48. data/lib/playbook/version.rb +1 -1
  49. metadata +14 -8
  50. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_custom.jsx +0 -56
  51. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_custom.md +0 -10
  52. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_custom_rails.html.erb +0 -64
  53. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_custom_rails.md +0 -10
@@ -0,0 +1,42 @@
1
+ // Regex to match emoji/pictographic characters
2
+ // With modifiers: Zero Width Joiner, Variation Selectors, Skin Tone Modifiers
3
+ export const EMOJI_REGEX = /\p{Extended_Pictographic}|\u200D|\uFE0F|[\u{1F3FB}-\u{1F3FF}]/gu
4
+
5
+ // Utility function to strip emojis from text when typing emojis
6
+ export const stripEmojisForTyping = (text: string): string => {
7
+ return text.replace(EMOJI_REGEX, '')
8
+ }
9
+
10
+ // Utility function to strip emojis and clean up whitespace when pasting emojis
11
+ export const stripEmojisForPaste = (text: string): string => {
12
+ return stripEmojisForTyping(text)
13
+ .replace(/\s+/g, ' ')
14
+ .trim()
15
+ }
16
+
17
+ type EmojiMaskResult = {
18
+ value: string
19
+ cursor: number | null
20
+ }
21
+
22
+ // Union type for elements that support emoji masking
23
+ type TextInputElement = HTMLInputElement | HTMLTextAreaElement
24
+
25
+ export const applyEmojiMask = (
26
+ element: TextInputElement
27
+ ): EmojiMaskResult => {
28
+ const cursor = element.selectionStart
29
+ const original = element.value
30
+ const filtered = stripEmojisForTyping(original)
31
+
32
+ if (original !== filtered) {
33
+ const beforeCursor = original.slice(0, cursor || 0)
34
+ const newCursor = stripEmojisForTyping(beforeCursor).length
35
+ element.value = filtered
36
+ element.selectionStart = element.selectionEnd = newCursor
37
+ return { value: filtered, cursor: newCursor }
38
+ }
39
+ return { value: original, cursor }
40
+ }
41
+
42
+