@7pmlabs/design-system 0.4.7 → 0.4.8

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 (260) hide show
  1. package/dist/design-system10.js +1 -1
  2. package/dist/design-system10.mjs +1 -1
  3. package/dist/design-system100.js +1 -1
  4. package/dist/design-system100.js.map +1 -1
  5. package/dist/design-system100.mjs +5 -24
  6. package/dist/design-system100.mjs.map +1 -1
  7. package/dist/design-system101.js +1 -1
  8. package/dist/design-system101.mjs +1 -1
  9. package/dist/design-system102.js +1 -1
  10. package/dist/design-system102.mjs +1 -1
  11. package/dist/design-system103.js +1 -1
  12. package/dist/design-system103.mjs +2 -2
  13. package/dist/design-system104.js +1 -1
  14. package/dist/design-system104.mjs +2 -6
  15. package/dist/design-system104.mjs.map +1 -1
  16. package/dist/design-system105.js +1 -1
  17. package/dist/design-system105.mjs +5 -3
  18. package/dist/design-system105.mjs.map +1 -1
  19. package/dist/design-system106.js +1 -1
  20. package/dist/design-system106.mjs +4 -2
  21. package/dist/design-system106.mjs.map +1 -1
  22. package/dist/design-system107.js +1 -1
  23. package/dist/design-system107.mjs +2 -2
  24. package/dist/design-system13.js +1 -1
  25. package/dist/design-system13.mjs +1 -1
  26. package/dist/design-system14.js +1 -1
  27. package/dist/design-system14.js.map +1 -1
  28. package/dist/design-system14.mjs +2 -2
  29. package/dist/design-system15.js +1 -1
  30. package/dist/design-system15.mjs +1 -1
  31. package/dist/design-system18.js +1 -1
  32. package/dist/design-system18.js.map +1 -1
  33. package/dist/design-system18.mjs +1 -1
  34. package/dist/design-system18.mjs.map +1 -1
  35. package/dist/design-system19.js +1 -1
  36. package/dist/design-system19.js.map +1 -1
  37. package/dist/design-system19.mjs +3 -3
  38. package/dist/design-system202.js +1 -1
  39. package/dist/design-system202.mjs +5 -5
  40. package/dist/design-system203.js +1 -1
  41. package/dist/design-system203.mjs +1 -1
  42. package/dist/design-system21.js +1 -1
  43. package/dist/design-system21.mjs +1 -1
  44. package/dist/design-system211.js +1 -1
  45. package/dist/design-system211.js.map +1 -1
  46. package/dist/design-system211.mjs +3 -3
  47. package/dist/design-system211.mjs.map +1 -1
  48. package/dist/design-system212.js +1 -1
  49. package/dist/design-system212.js.map +1 -1
  50. package/dist/design-system212.mjs +4 -4
  51. package/dist/design-system212.mjs.map +1 -1
  52. package/dist/design-system213.js +1 -1
  53. package/dist/design-system213.js.map +1 -1
  54. package/dist/design-system213.mjs +4 -10
  55. package/dist/design-system213.mjs.map +1 -1
  56. package/dist/design-system214.js +1 -1
  57. package/dist/design-system214.js.map +1 -1
  58. package/dist/design-system214.mjs +10 -6
  59. package/dist/design-system214.mjs.map +1 -1
  60. package/dist/design-system215.js +1 -1
  61. package/dist/design-system215.js.map +1 -1
  62. package/dist/design-system215.mjs +6 -6
  63. package/dist/design-system215.mjs.map +1 -1
  64. package/dist/design-system216.js +1 -1
  65. package/dist/design-system216.js.map +1 -1
  66. package/dist/design-system216.mjs +6 -4
  67. package/dist/design-system216.mjs.map +1 -1
  68. package/dist/design-system22.js +1 -1
  69. package/dist/design-system22.js.map +1 -1
  70. package/dist/design-system22.mjs +1 -1
  71. package/dist/design-system22.mjs.map +1 -1
  72. package/dist/design-system23.js +1 -1
  73. package/dist/design-system23.mjs +1 -1
  74. package/dist/design-system25.js +1 -1
  75. package/dist/design-system25.mjs +3 -3
  76. package/dist/design-system26.js +1 -1
  77. package/dist/design-system26.mjs +3 -3
  78. package/dist/design-system27.js +1 -1
  79. package/dist/design-system27.mjs +3 -3
  80. package/dist/design-system28.js +1 -1
  81. package/dist/design-system28.mjs +1 -1
  82. package/dist/design-system31.js +1 -1
  83. package/dist/design-system31.mjs +3 -3
  84. package/dist/design-system32.js +1 -1
  85. package/dist/design-system32.mjs +3 -3
  86. package/dist/design-system33.js +1 -1
  87. package/dist/design-system33.mjs +1 -1
  88. package/dist/design-system34.js +1 -1
  89. package/dist/design-system34.mjs +1 -1
  90. package/dist/design-system35.js +1 -1
  91. package/dist/design-system35.mjs +1 -1
  92. package/dist/design-system36.js +1 -1
  93. package/dist/design-system36.mjs +1 -1
  94. package/dist/design-system37.js +1 -1
  95. package/dist/design-system37.mjs +2 -2
  96. package/dist/design-system38.js +1 -1
  97. package/dist/design-system38.mjs +3 -3
  98. package/dist/design-system39.js +1 -1
  99. package/dist/design-system39.mjs +3 -3
  100. package/dist/design-system41.js +1 -1
  101. package/dist/design-system41.mjs +3 -3
  102. package/dist/design-system42.js +1 -1
  103. package/dist/design-system42.mjs +1 -1
  104. package/dist/design-system43.js +1 -1
  105. package/dist/design-system43.mjs +1 -1
  106. package/dist/design-system44.js +1 -1
  107. package/dist/design-system44.mjs +5 -5
  108. package/dist/design-system45.js +1 -1
  109. package/dist/design-system45.js.map +1 -1
  110. package/dist/design-system45.mjs +44 -42
  111. package/dist/design-system45.mjs.map +1 -1
  112. package/dist/design-system46.js +1 -1
  113. package/dist/design-system46.mjs +3 -3
  114. package/dist/design-system48.js +1 -1
  115. package/dist/design-system48.mjs +3 -3
  116. package/dist/design-system49.js +6 -1
  117. package/dist/design-system49.js.map +1 -1
  118. package/dist/design-system49.mjs +107 -2
  119. package/dist/design-system49.mjs.map +1 -1
  120. package/dist/design-system50.js +6 -1
  121. package/dist/design-system50.js.map +1 -1
  122. package/dist/design-system50.mjs +910 -130
  123. package/dist/design-system50.mjs.map +1 -1
  124. package/dist/design-system51.js +7 -1
  125. package/dist/design-system51.js.map +1 -1
  126. package/dist/design-system51.mjs +861 -2
  127. package/dist/design-system51.mjs.map +1 -1
  128. package/dist/design-system52.js +1 -1
  129. package/dist/design-system52.mjs +2 -7
  130. package/dist/design-system52.mjs.map +1 -1
  131. package/dist/design-system53.js +1 -1
  132. package/dist/design-system53.js.map +1 -1
  133. package/dist/design-system53.mjs +132 -2
  134. package/dist/design-system53.mjs.map +1 -1
  135. package/dist/design-system55.js +1 -4
  136. package/dist/design-system55.js.map +1 -1
  137. package/dist/design-system55.mjs +7 -74
  138. package/dist/design-system55.mjs.map +1 -1
  139. package/dist/design-system57.js +1 -1
  140. package/dist/design-system57.mjs +2 -2
  141. package/dist/design-system58.js +4 -1
  142. package/dist/design-system58.js.map +1 -1
  143. package/dist/design-system58.mjs +74 -2
  144. package/dist/design-system58.mjs.map +1 -1
  145. package/dist/design-system59.js +1 -1
  146. package/dist/design-system59.mjs +2 -2
  147. package/dist/design-system60.js +1 -1
  148. package/dist/design-system60.mjs +1 -1
  149. package/dist/design-system61.js +1 -1
  150. package/dist/design-system61.mjs +1 -1
  151. package/dist/design-system62.js +1 -1
  152. package/dist/design-system62.mjs +1 -1
  153. package/dist/design-system63.js +1 -1
  154. package/dist/design-system63.mjs +1 -1
  155. package/dist/design-system64.js +1 -1
  156. package/dist/design-system64.js.map +1 -1
  157. package/dist/design-system64.mjs +2 -28
  158. package/dist/design-system64.mjs.map +1 -1
  159. package/dist/design-system65.js +1 -1
  160. package/dist/design-system65.mjs +2 -2
  161. package/dist/design-system66.js +1 -1
  162. package/dist/design-system66.js.map +1 -1
  163. package/dist/design-system66.mjs +2 -58
  164. package/dist/design-system66.mjs.map +1 -1
  165. package/dist/design-system67.js +1 -1
  166. package/dist/design-system67.js.map +1 -1
  167. package/dist/design-system67.mjs +28 -2
  168. package/dist/design-system67.mjs.map +1 -1
  169. package/dist/design-system68.js +1 -1
  170. package/dist/design-system68.mjs +2 -2
  171. package/dist/design-system69.js +1 -1
  172. package/dist/design-system69.js.map +1 -1
  173. package/dist/design-system69.mjs +58 -2
  174. package/dist/design-system69.mjs.map +1 -1
  175. package/dist/design-system70.js +1 -1
  176. package/dist/design-system70.mjs +2 -2
  177. package/dist/design-system71.js +1 -1
  178. package/dist/design-system71.mjs +1 -1
  179. package/dist/design-system72.js +1 -1
  180. package/dist/design-system72.mjs +1 -1
  181. package/dist/design-system73.js +1 -1
  182. package/dist/design-system73.mjs +1 -1
  183. package/dist/design-system74.js +1 -1
  184. package/dist/design-system74.mjs +2 -2
  185. package/dist/design-system75.js +1 -1
  186. package/dist/design-system75.js.map +1 -1
  187. package/dist/design-system75.mjs +2 -81
  188. package/dist/design-system75.mjs.map +1 -1
  189. package/dist/design-system76.js +1 -1
  190. package/dist/design-system76.mjs +2 -2
  191. package/dist/design-system77.js +1 -1
  192. package/dist/design-system77.mjs +2 -2
  193. package/dist/design-system78.js +1 -1
  194. package/dist/design-system78.js.map +1 -1
  195. package/dist/design-system78.mjs +71 -109
  196. package/dist/design-system78.mjs.map +1 -1
  197. package/dist/design-system80.js +1 -1
  198. package/dist/design-system80.mjs +1 -1
  199. package/dist/design-system81.js +1 -1
  200. package/dist/design-system81.js.map +1 -1
  201. package/dist/design-system81.mjs +119 -2
  202. package/dist/design-system81.mjs.map +1 -1
  203. package/dist/design-system82.js +1 -1
  204. package/dist/design-system82.js.map +1 -1
  205. package/dist/design-system82.mjs +2 -102
  206. package/dist/design-system82.mjs.map +1 -1
  207. package/dist/design-system83.js +1 -1
  208. package/dist/design-system83.mjs +2 -2
  209. package/dist/design-system84.js +1 -1
  210. package/dist/design-system84.js.map +1 -1
  211. package/dist/design-system84.mjs +2 -173
  212. package/dist/design-system84.mjs.map +1 -1
  213. package/dist/design-system85.js +1 -1
  214. package/dist/design-system85.js.map +1 -1
  215. package/dist/design-system85.mjs +102 -2
  216. package/dist/design-system85.mjs.map +1 -1
  217. package/dist/design-system86.js +1 -1
  218. package/dist/design-system86.mjs +2 -2
  219. package/dist/design-system87.js +1 -1
  220. package/dist/design-system87.js.map +1 -1
  221. package/dist/design-system87.mjs +170 -122
  222. package/dist/design-system87.mjs.map +1 -1
  223. package/dist/design-system89.js +1 -6
  224. package/dist/design-system89.js.map +1 -1
  225. package/dist/design-system89.mjs +2 -107
  226. package/dist/design-system89.mjs.map +1 -1
  227. package/dist/design-system9.js +1 -1
  228. package/dist/design-system9.mjs +1 -1
  229. package/dist/design-system90.js +1 -6
  230. package/dist/design-system90.js.map +1 -1
  231. package/dist/design-system90.mjs +140 -910
  232. package/dist/design-system90.mjs.map +1 -1
  233. package/dist/design-system91.js +1 -7
  234. package/dist/design-system91.js.map +1 -1
  235. package/dist/design-system91.mjs +2 -861
  236. package/dist/design-system91.mjs.map +1 -1
  237. package/dist/design-system92.js +1 -1
  238. package/dist/design-system92.mjs +3 -3
  239. package/dist/design-system93.js +5 -1
  240. package/dist/design-system93.js.map +1 -1
  241. package/dist/design-system93.mjs +10 -17
  242. package/dist/design-system93.mjs.map +1 -1
  243. package/dist/design-system94.js +1 -5
  244. package/dist/design-system94.js.map +1 -1
  245. package/dist/design-system94.mjs +17 -10
  246. package/dist/design-system94.mjs.map +1 -1
  247. package/dist/design-system96.js +1 -1
  248. package/dist/design-system96.mjs +1 -1
  249. package/dist/design-system98.js +1 -1
  250. package/dist/design-system98.js.map +1 -1
  251. package/dist/design-system98.mjs +25 -68
  252. package/dist/design-system98.mjs.map +1 -1
  253. package/dist/design-system99.js +1 -1
  254. package/dist/design-system99.js.map +1 -1
  255. package/dist/design-system99.mjs +68 -6
  256. package/dist/design-system99.mjs.map +1 -1
  257. package/dist/style.css +1 -1
  258. package/dist/types/components/BImagePicker/BImagePicker.vue.d.ts +14 -5
  259. package/dist/types/types/components/BImagePicker.d.ts +2 -2
  260. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"design-system18.js","sources":["../src/components/BMultiSelect.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"ds-absolute ds-right-3 ds-z-[1]\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\" }, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = [\"id\", \"disabled\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = [\"id\", \"data-cy\", \"data-ut\"]\nconst _hoisted_11 = { class: \"ds-max-h-72 ds-overflow-y-auto ds-rounded-lg ds-bg-white ds-shadow\" }\nconst _hoisted_12 = { class: \"ds-py-1 ds-text-sm ds-text-black/[0.85]\" }\nconst _hoisted_13 = [\"onClick\"]\n\nimport {\r\n useValidationField,\r\n type ValidationRule,\r\n} from '@/composables/Validation';\r\nimport {\r\n ensureVisiblePosition,\r\n lockScrollBody,\r\n resetPosition,\r\n unlockScrollBody,\r\n} from '@/helpers/ComponentHelper';\r\nimport { v4 as uuid } from 'uuid';\r\nimport {\r\n computed,\r\n nextTick,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n watch,\r\n} from 'vue';\r\nimport { useI18n } from 'vue-i18n';\r\nimport BCheckbox from './BCheckbox.vue';\r\nimport BErrorMessage from './BErrorMessage.vue';\r\nimport BLabel from './BLabel.vue';\r\nimport BTextField from './BTextField.vue';\r\nimport type { DisplayItem } from '@/types';\r\n\r\n//#region Props\r\nexport interface BMultiSelectProps {\r\n inputId?: string;\r\n modelValue: Array<string | number>;\r\n label?: string;\r\n items: DisplayItem[];\r\n disabled?: boolean;\r\n placeholder?: string;\r\n valueCssClass?: string;\r\n menuCssClass?: string;\r\n /**\r\n * Array of custom validation rules.\r\n */\r\n validationRules?: ValidationRule[];\r\n /**\r\n * Validate if the field is left empty.\r\n */\r\n required?: boolean;\r\n requiredErrorMessage?: string;\r\n /**\r\n * Hide the validation error message.\r\n */\r\n hideDetails?: boolean;\r\n /**\r\n * Show number of selected items.\r\n */\r\n showSelectedItemCount?: boolean;\r\n /**\r\n * Allow to type to search.\r\n */\r\n allowInput?: boolean;\r\n}\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BMultiSelect',\n props: {\n inputId: { default: '' },\n modelValue: {},\n label: { default: '' },\n items: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' },\n valueCssClass: { default: '' },\n menuCssClass: { default: '' },\n validationRules: { default: undefined },\n required: { type: Boolean, default: false },\n requiredErrorMessage: { default: '' },\n hideDetails: { type: Boolean, default: false },\n showSelectedItemCount: { type: Boolean, default: false },\n allowInput: { type: Boolean, default: false }\n },\n emits: [\"change\", \"open\", \"close\", \"change:input\", \"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\r\n// https://vuejs.org/guide/essentials/event-handling.html#event-modifiers\r\n\r\n//#endregion\r\n\r\n//#region Events\r\n\r\n//#endregion\r\n\r\n//#region Data\r\nconst selectEl = ref<HTMLElement | null>(null);\r\nconst inputRef = ref<InstanceType<typeof BTextField> | null>(null);\r\nconst selectMenuEl = ref<HTMLElement | null>(null);\r\nconst selectMenu = ref(false);\r\nconst { t } = useI18n();\r\nconst validateRequired: ValidationRule = {\r\n validateRule: (val: Array<string | number>) => !!val && val.length > 0,\r\n errorMessage: () =>\r\n props.requiredErrorMessage || t('ds.global.field_required'),\r\n};\r\nconst inputText = ref('');\r\nconst selectedItems = ref<DisplayItem[]>([]);\r\nconst id = computed(() => props.inputId || `id-${uuid()}`);\r\nconst value = computed({\r\n get() {\r\n return props.modelValue;\r\n },\r\n set(val) {\r\n emit('update:modelValue', val);\r\n },\r\n});\r\nconst btnCssClass = computed(() => {\r\n let result = `ds-border ds-drop-shadow-light ds-text-sm ds-h-[40px] ds-px-3 ds-rounded-lg ds-block ds-w-full ds-inline-flex ds-items-center ds-justify-between `;\r\n result += props.disabled\r\n ? `ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4] `\r\n : `ds-bg-white ds-text-black/[0.85] `;\r\n result += !validationResult.value.valid\r\n ? `ds-border-error focus:ds-ring-1 focus:ds-ring-error `\r\n : `ds-border-black/10 focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus `;\r\n\r\n return result;\r\n});\r\nconst vRules = computed(() => {\r\n let result: ValidationRule[] = [];\r\n\r\n if (props.required) {\r\n result.push(validateRequired);\r\n }\r\n if (props.validationRules) {\r\n result = result.concat(props.validationRules);\r\n }\r\n\r\n return result.length ? result : undefined;\r\n});\r\nconst selectedItemCount = computed(() =>\r\n value.value?.length > 1\r\n ? ` (${t('ds.components.base.multi_select.selected_item_count', {\r\n count: value.value?.length,\r\n })})`\r\n : '',\r\n);\r\nconst labelDisplay = computed(() =>\r\n props.showSelectedItemCount\r\n ? `${props.label}${selectedItemCount.value}`\r\n : props.label,\r\n);\r\nconst { validate, validationResult } = useValidationField(\r\n id.value,\r\n value,\r\n vRules.value,\r\n);\r\n//#endregion\r\n\r\n//#region Watchers\r\nwatch(selectMenu, (val) => {\r\n if (val) {\r\n lockScrollBody();\r\n ensureMenuPosition();\r\n emit('open');\r\n } else {\r\n unlockScrollBody();\r\n resetMenuPosition();\r\n emit('close');\r\n }\r\n});\r\nwatch(\r\n value,\r\n () => {\r\n ensureSelectedItems();\r\n },\r\n {\r\n deep: true,\r\n },\r\n);\r\nwatch(\r\n () => props.items,\r\n () => {\r\n if (value.value.length !== 0 && selectedItems.value.length === 0) {\r\n ensureSelectedItems();\r\n }\r\n },\r\n {\r\n deep: true,\r\n },\r\n);\r\n//#endregion\r\n\r\n//#region Methods\r\nconst ensureSelectedItems = () => {\r\n selectedItems.value = value.value.map((v) => {\r\n let item = selectedItems.value.find((i) => i.value === v);\r\n if (!item) {\r\n item = props.items.find((i) => i.value === v);\r\n }\r\n return { text: item?.text, value: v, cssClass: item?.cssClass };\r\n });\r\n};\r\nconst initPressEscapeEventListener = () => {\r\n document.addEventListener('keydown', closeOnEscapePressed);\r\n};\r\nconst closeOnEscapePressed = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n closeSelectMenu();\r\n }\r\n};\r\nconst initClickOutsideEventListener = () => {\r\n document.addEventListener('click', closeOnClickOutside);\r\n};\r\nconst closeOnClickOutside = (event: any) => {\r\n const refs = [selectEl.value, selectMenuEl.value];\r\n const withinBoundaries = refs.some((r) => event.composedPath().includes(r));\r\n if (!withinBoundaries) {\r\n closeSelectMenu();\r\n }\r\n};\r\nconst onClickItem = (item: DisplayItem) => {\r\n const index = value.value.findIndex((v) => v === item.value);\r\n if (index !== -1) {\r\n value.value.splice(index, 1);\r\n } else {\r\n value.value.push(item.value);\r\n }\r\n emit('change', item.value);\r\n nextTick(() => {\r\n validate();\r\n });\r\n};\r\nconst ensureMenuWidth = (parentEl: HTMLElement, menuEl: HTMLElement) => {\r\n menuEl.style.width = `${parentEl.offsetWidth}px`;\r\n};\r\nconst ensureMenuPosition = () => {\r\n nextTick(() => {\r\n ensureVisiblePosition(selectEl.value!, selectMenuEl.value!);\r\n ensureMenuWidth(selectEl.value!, selectMenuEl.value!);\r\n });\r\n};\r\nconst resetMenuPosition = () => {\r\n resetPosition(selectEl.value!, selectMenuEl.value!);\r\n};\r\nconst onChangeInputText = (text: string) => {\r\n emit('change:input', text);\r\n};\r\nconst closeSelectMenu = () => {\r\n selectMenu.value = false;\r\n inputRef.value?.blur();\r\n inputText.value = '';\r\n};\r\nconst deselectItem = (item: DisplayItem) => {\r\n const index = value.value.findIndex((v) => v === item.value);\r\n if (index !== -1) {\r\n value.value.splice(index, 1);\r\n emit('change', item.value);\r\n nextTick(() => {\r\n validate();\r\n });\r\n }\r\n};\r\nconst init = () => {\r\n if (props.items?.length > 0) {\r\n ensureSelectedItems();\r\n }\r\n};\r\ninit();\r\n//#endregion\r\n\r\n//#region Lifecycle Hooks\r\nonMounted(() => {\r\n initPressEscapeEventListener();\r\n initClickOutsideEventListener();\r\n});\r\nonBeforeUnmount(() => {\r\n document.removeEventListener('keydown', closeOnEscapePressed);\r\n document.removeEventListener('click', closeOnClickOutside);\r\n unlockScrollBody();\r\n // Make sure dropdown menu unmounted with itself\r\n resetMenuPosition();\r\n});\r\n//#endregion\r\n\r\n__expose({ validate, selectMenu });\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", {\n ref_key: \"selectEl\",\n ref: selectEl\n }, [\n _createVNode(BLabel, {\n id: id.value,\n label: labelDisplay.value,\n required: _ctx.required\n }, null, 8, [\"id\", \"label\", \"required\"]),\n (props.allowInput)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([{\r\n 'ds-border-focus ds-ring-1 ds-ring-focus':\r\n selectMenu.value && _unref(validationResult).valid,\r\n 'ds-ring-1 ds-ring-error': selectMenu.value && !_unref(validationResult).valid,\r\n 'ds-border-black/10': _unref(validationResult).valid,\r\n 'ds-border-error': !_unref(validationResult).valid,\r\n }, \"ds-relative ds-flex ds-flex-wrap ds-items-center ds-gap-x-1 ds-rounded-lg ds-border ds-bg-white ds-px-3 ds-py-1 ds-drop-shadow-light\"])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (inputRef.value?.focus()))\n }, _hoisted_3, 2))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(selectedItems.value, (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `item${i}`,\n class: \"ds-my-0.5 ds-flex-initial ds-space-x-1 ds-rounded-lg ds-bg-black/10 ds-px-2\"\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(item.text), 1),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: \"ds-mb-1 ds-inline ds-h-4 ds-w-4 ds-cursor-pointer ds-fill-black/60 hover:ds-fill-black/40\",\n viewBox: \"0 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: ($event: any) => (deselectItem(item))\n }, _hoisted_6, 8, _hoisted_4))\n ]))\n }), 128)),\n (props.allowInput)\n ? (_openBlock(), _createBlock(BTextField, {\n key: 0,\n id: id.value,\n ref_key: \"inputRef\",\n ref: inputRef,\n modelValue: inputText.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event: any) => ((inputText).value = $event)),\n onChangeInputText\n ],\n disabled: props.disabled,\n class: \"ds-flex-auto\",\n \"hide-details\": \"\",\n \"input-css-class\": \"ds-drop-shadow-none ds-border-none !ds-ring-0 ds-px-0 !ds-h-[30px] ds-pl-0\",\n onFocus: _cache[2] || (_cache[2] = ($event: any) => (selectMenu.value = true))\n }, null, 8, [\"id\", \"modelValue\", \"disabled\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n id: id.value,\n class: _normalizeClass(btnCssClass.value),\n disabled: _ctx.disabled,\n type: \"button\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (selectMenu.value = !selectMenu.value))\n }, [\n (selectedItems.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm\"])\n }, _toDisplayString(selectedItems.value?.map((s) => s.text).join(', ')), 3))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm ds-text-black/[0.4]\"])\n }, _toDisplayString(props.placeholder), 3)),\n _createTextVNode(\"   \"),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, _hoisted_9, 2))\n ], 10, _hoisted_7)),\n _withDirectives(_createElementVNode(\"div\", {\n id: `${id.value}Menu`,\n ref_key: \"selectMenuEl\",\n ref: selectMenuEl,\n class: _normalizeClass([_ctx.menuCssClass, \"ds-absolute ds-z-50 ds-min-w-[8rem] ds-py-1\"]),\n \"data-cy\": _ctx.$attrs['data-cy'] ? `${_ctx.$attrs['data-cy']}Menu` : undefined,\n \"data-ut\": _ctx.$attrs['data-ut'] ? `${_ctx.$attrs['data-ut']}Menu` : undefined\n }, [\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"ul\", _hoisted_12, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.items, (item, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `item${index}`,\n class: \"ds-cursor-pointer\",\n onClick: _withModifiers(($event: any) => (onClickItem(item)), [\"prevent\"])\n }, [\n _createElementVNode(\"a\", {\n class: _normalizeClass([\r\n item.cssClass +\r\n `${\r\n selectedItems.value.some((s) => s.value === item.value)\r\n ? ' ds-bg-slate-100'\r\n : ''\r\n }`\r\n , \"ds-flex ds-items-center ds-space-x-2 ds-px-4 ds-py-2 hover:ds-bg-slate-100\"])\n }, [\n _createVNode(BCheckbox, {\n modelValue: value.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((value).value = $event)),\n value: item.value,\n size: \"sm\"\n }, null, 8, [\"modelValue\", \"value\"]),\n _createElementVNode(\"span\", null, _toDisplayString(item?.text), 1)\n ], 2)\n ], 8, _hoisted_13))\n }), 128))\n ])\n ])\n ], 10, _hoisted_10), [\n [_vShow, selectMenu.value]\n ])\n ], 512),\n (!_ctx.hideDetails)\n ? (_openBlock(), _createBlock(BErrorMessage, {\n key: 0,\n \"error-message\": _unref(validationResult).errorMessage(),\n class: \"ds-mt-1\"\n }, null, 8, [\"error-message\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_sfc_main","_defineComponent","__props","__expose","emit","props","selectEl","ref","inputRef","selectMenuEl","selectMenu","t","useI18n","validateRequired","val","inputText","selectedItems","id","computed","uuid","value","btnCssClass","result","validationResult","vRules","selectedItemCount","_a","_b","labelDisplay","validate","useValidationField","watch","lockScrollBody","ensureMenuPosition","unlockScrollBody","resetMenuPosition","ensureSelectedItems","v","item","i","initPressEscapeEventListener","closeOnEscapePressed","event","closeSelectMenu","initClickOutsideEventListener","closeOnClickOutside","r","onClickItem","index","nextTick","ensureMenuWidth","parentEl","menuEl","ensureVisiblePosition","resetPosition","onChangeInputText","text","deselectItem","onMounted","onBeforeUnmount","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_createVNode","BLabel","_normalizeClass","_unref","$event","_Fragment","_renderList","_toDisplayString","_createBlock","BTextField","_createCommentVNode","s","_createTextVNode","_withDirectives","_withModifiers","BCheckbox","_vShow","BErrorMessage"],"mappings":"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"}
1
+ {"version":3,"file":"design-system18.js","sources":["../src/components/BMultiSelect.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"ds-absolute ds-right-3 ds-z-[1]\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\" }, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = [\"id\", \"disabled\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = [\"id\", \"data-cy\", \"data-ut\"]\nconst _hoisted_11 = { class: \"ds-max-h-72 ds-overflow-y-auto ds-rounded-lg ds-bg-white ds-shadow\" }\nconst _hoisted_12 = { class: \"ds-py-1 ds-text-sm ds-text-black/[0.85]\" }\nconst _hoisted_13 = [\"onClick\"]\n\nimport {\n useValidationField,\n type ValidationRule,\n} from '@/composables/Validation';\nimport {\n ensureVisiblePosition,\n lockScrollBody,\n resetPosition,\n unlockScrollBody,\n} from '@/helpers/ComponentHelper';\nimport { v4 as uuid } from 'uuid';\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n} from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport BCheckbox from './BCheckbox.vue';\nimport BErrorMessage from './BErrorMessage.vue';\nimport BLabel from './BLabel.vue';\nimport BTextField from './BTextField.vue';\nimport type { DisplayItem } from '@/types';\n\n//#region Props\nexport interface BMultiSelectProps {\n inputId?: string;\n modelValue: Array<string | number>;\n label?: string;\n items: DisplayItem[];\n disabled?: boolean;\n placeholder?: string;\n valueCssClass?: string;\n menuCssClass?: string;\n /**\n * Array of custom validation rules.\n */\n validationRules?: ValidationRule[];\n /**\n * Validate if the field is left empty.\n */\n required?: boolean;\n requiredErrorMessage?: string;\n /**\n * Hide the validation error message.\n */\n hideDetails?: boolean;\n /**\n * Show number of selected items.\n */\n showSelectedItemCount?: boolean;\n /**\n * Allow to type to search.\n */\n allowInput?: boolean;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BMultiSelect',\n props: {\n inputId: { default: '' },\n modelValue: {},\n label: { default: '' },\n items: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' },\n valueCssClass: { default: '' },\n menuCssClass: { default: '' },\n validationRules: { default: undefined },\n required: { type: Boolean, default: false },\n requiredErrorMessage: { default: '' },\n hideDetails: { type: Boolean, default: false },\n showSelectedItemCount: { type: Boolean, default: false },\n allowInput: { type: Boolean, default: false }\n },\n emits: [\"change\", \"open\", \"close\", \"change:input\", \"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\n// https://vuejs.org/guide/essentials/event-handling.html#event-modifiers\n\n//#endregion\n\n//#region Events\n\n//#endregion\n\n//#region Data\nconst selectEl = ref<HTMLElement | null>(null);\nconst inputRef = ref<InstanceType<typeof BTextField> | null>(null);\nconst selectMenuEl = ref<HTMLElement | null>(null);\nconst selectMenu = ref(false);\nconst { t } = useI18n();\nconst validateRequired: ValidationRule = {\n validateRule: (val: Array<string | number>) => !!val && val.length > 0,\n errorMessage: () =>\n props.requiredErrorMessage || t('ds.global.field_required'),\n};\nconst inputText = ref('');\nconst selectedItems = ref<DisplayItem[]>([]);\nconst id = computed(() => props.inputId || `id-${uuid()}`);\nconst value = computed({\n get() {\n return props.modelValue;\n },\n set(val) {\n emit('update:modelValue', val);\n },\n});\nconst btnCssClass = computed(() => {\n let result = `ds-border ds-drop-shadow-light ds-text-sm ds-h-[40px] ds-px-3 ds-rounded-lg ds-block ds-w-full ds-inline-flex ds-items-center ds-justify-between `;\n result += props.disabled\n ? `ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4] `\n : `ds-bg-white ds-text-black/[0.85] `;\n result += !validationResult.value.valid\n ? `ds-border-error focus:ds-ring-1 focus:ds-ring-error `\n : `ds-border-black/10 focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus `;\n\n return result;\n});\nconst vRules = computed(() => {\n let result: ValidationRule[] = [];\n\n if (props.required) {\n result.push(validateRequired);\n }\n if (props.validationRules) {\n result = result.concat(props.validationRules);\n }\n\n return result.length ? result : undefined;\n});\nconst selectedItemCount = computed(() =>\n value.value?.length > 1\n ? ` (${t('ds.components.base.multi_select.selected_item_count', {\n count: value.value?.length,\n })})`\n : '',\n);\nconst labelDisplay = computed(() =>\n props.showSelectedItemCount\n ? `${props.label}${selectedItemCount.value}`\n : props.label,\n);\nconst { validate, validationResult } = useValidationField(\n id.value,\n value,\n vRules.value,\n);\n//#endregion\n\n//#region Watchers\nwatch(selectMenu, (val) => {\n if (val) {\n lockScrollBody();\n ensureMenuPosition();\n emit('open');\n } else {\n unlockScrollBody();\n resetMenuPosition();\n emit('close');\n }\n});\nwatch(\n value,\n () => {\n ensureSelectedItems();\n },\n {\n deep: true,\n },\n);\nwatch(\n () => props.items,\n () => {\n if (value.value.length !== 0 && selectedItems.value.length === 0) {\n ensureSelectedItems();\n }\n },\n {\n deep: true,\n },\n);\n//#endregion\n\n//#region Methods\nconst ensureSelectedItems = () => {\n selectedItems.value = value.value.map((v) => {\n let item = selectedItems.value.find((i) => i.value === v);\n if (!item) {\n item = props.items.find((i) => i.value === v);\n }\n return { text: item?.text, value: v, cssClass: item?.cssClass };\n });\n};\nconst initPressEscapeEventListener = () => {\n document.addEventListener('keydown', closeOnEscapePressed);\n};\nconst closeOnEscapePressed = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSelectMenu();\n }\n};\nconst initClickOutsideEventListener = () => {\n document.addEventListener('click', closeOnClickOutside);\n};\nconst closeOnClickOutside = (event: any) => {\n const refs = [selectEl.value, selectMenuEl.value];\n const withinBoundaries = refs.some((r) => event.composedPath().includes(r));\n if (!withinBoundaries) {\n closeSelectMenu();\n }\n};\nconst onClickItem = (item: DisplayItem) => {\n const index = value.value.findIndex((v) => v === item.value);\n if (index !== -1) {\n value.value.splice(index, 1);\n } else {\n value.value.push(item.value);\n }\n emit('change', item.value);\n nextTick(() => {\n validate();\n });\n};\nconst ensureMenuWidth = (parentEl: HTMLElement, menuEl: HTMLElement) => {\n menuEl.style.width = `${parentEl.offsetWidth}px`;\n};\nconst ensureMenuPosition = () => {\n nextTick(() => {\n ensureVisiblePosition(selectEl.value!, selectMenuEl.value!);\n ensureMenuWidth(selectEl.value!, selectMenuEl.value!);\n });\n};\nconst resetMenuPosition = () => {\n resetPosition(selectEl.value!, selectMenuEl.value!);\n};\nconst onChangeInputText = (text: string) => {\n emit('change:input', text);\n};\nconst closeSelectMenu = () => {\n selectMenu.value = false;\n inputRef.value?.blur();\n inputText.value = '';\n};\nconst deselectItem = (item: DisplayItem) => {\n const index = value.value.findIndex((v) => v === item.value);\n if (index !== -1) {\n value.value.splice(index, 1);\n emit('change', item.value);\n nextTick(() => {\n validate();\n });\n }\n};\nconst init = () => {\n if (props.items?.length > 0) {\n ensureSelectedItems();\n }\n};\ninit();\n//#endregion\n\n//#region Lifecycle Hooks\nonMounted(() => {\n initPressEscapeEventListener();\n initClickOutsideEventListener();\n});\nonBeforeUnmount(() => {\n document.removeEventListener('keydown', closeOnEscapePressed);\n document.removeEventListener('click', closeOnClickOutside);\n unlockScrollBody();\n // Make sure dropdown menu unmounted with itself\n resetMenuPosition();\n});\n//#endregion\n\n__expose({ validate, selectMenu });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", {\n ref_key: \"selectEl\",\n ref: selectEl\n }, [\n _createVNode(BLabel, {\n id: id.value,\n label: labelDisplay.value,\n required: _ctx.required\n }, null, 8, [\"id\", \"label\", \"required\"]),\n (props.allowInput)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([{\n 'ds-border-focus ds-ring-1 ds-ring-focus':\n selectMenu.value && _unref(validationResult).valid,\n 'ds-ring-1 ds-ring-error': selectMenu.value && !_unref(validationResult).valid,\n 'ds-border-black/10': _unref(validationResult).valid,\n 'ds-border-error': !_unref(validationResult).valid,\n }, \"ds-relative ds-flex ds-flex-wrap ds-items-center ds-gap-x-1 ds-rounded-lg ds-border ds-bg-white ds-px-3 ds-py-1 ds-drop-shadow-light\"])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (inputRef.value?.focus()))\n }, _hoisted_3, 2))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(selectedItems.value, (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `item${i}`,\n class: \"ds-my-0.5 ds-flex-initial ds-space-x-1 ds-rounded-lg ds-bg-black/10 ds-px-2\"\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(item.text), 1),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: \"ds-mb-1 ds-inline ds-h-4 ds-w-4 ds-cursor-pointer ds-fill-black/60 hover:ds-fill-black/40\",\n viewBox: \"0 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: ($event: any) => (deselectItem(item))\n }, _hoisted_6, 8, _hoisted_4))\n ]))\n }), 128)),\n (props.allowInput)\n ? (_openBlock(), _createBlock(BTextField, {\n key: 0,\n id: id.value,\n ref_key: \"inputRef\",\n ref: inputRef,\n modelValue: inputText.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event: any) => ((inputText).value = $event)),\n onChangeInputText\n ],\n disabled: props.disabled,\n class: \"ds-flex-auto\",\n \"hide-details\": \"\",\n \"input-css-class\": \"ds-drop-shadow-none ds-border-none !ds-ring-0 ds-px-0 !ds-h-[30px] ds-pl-0\",\n onFocus: _cache[2] || (_cache[2] = ($event: any) => (selectMenu.value = true))\n }, null, 8, [\"id\", \"modelValue\", \"disabled\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n id: id.value,\n class: _normalizeClass(btnCssClass.value),\n disabled: _ctx.disabled,\n type: \"button\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (selectMenu.value = !selectMenu.value))\n }, [\n (selectedItems.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm\"])\n }, _toDisplayString(selectedItems.value?.map((s) => s.text).join(', ')), 3))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm ds-text-black/[0.4]\"])\n }, _toDisplayString(props.placeholder), 3)),\n _createTextVNode(\"   \"),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, _hoisted_9, 2))\n ], 10, _hoisted_7)),\n _withDirectives(_createElementVNode(\"div\", {\n id: `${id.value}Menu`,\n ref_key: \"selectMenuEl\",\n ref: selectMenuEl,\n class: _normalizeClass([_ctx.menuCssClass, \"ds-absolute ds-z-50 ds-min-w-[8rem] ds-py-1\"]),\n \"data-cy\": _ctx.$attrs['data-cy'] ? `${_ctx.$attrs['data-cy']}Menu` : undefined,\n \"data-ut\": _ctx.$attrs['data-ut'] ? `${_ctx.$attrs['data-ut']}Menu` : undefined\n }, [\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"ul\", _hoisted_12, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.items, (item, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `item${index}`,\n class: \"ds-cursor-pointer\",\n onClick: _withModifiers(($event: any) => (onClickItem(item)), [\"prevent\"])\n }, [\n _createElementVNode(\"a\", {\n class: _normalizeClass([\n item.cssClass +\n `${\n selectedItems.value.some((s) => s.value === item.value)\n ? ' ds-bg-slate-100'\n : ''\n }`\n , \"ds-flex ds-items-center ds-space-x-2 ds-px-4 ds-py-2 hover:ds-bg-slate-100\"])\n }, [\n _createVNode(BCheckbox, {\n modelValue: value.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((value).value = $event)),\n value: item.value,\n size: \"sm\"\n }, null, 8, [\"modelValue\", \"value\"]),\n _createElementVNode(\"span\", null, _toDisplayString(item?.text), 1)\n ], 2)\n ], 8, _hoisted_13))\n }), 128))\n ])\n ])\n ], 10, _hoisted_10), [\n [_vShow, selectMenu.value]\n ])\n ], 512),\n (!_ctx.hideDetails)\n ? (_openBlock(), _createBlock(BErrorMessage, {\n key: 0,\n \"error-message\": _unref(validationResult).errorMessage(),\n class: \"ds-mt-1\"\n }, null, 8, [\"error-message\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_sfc_main","_defineComponent","__props","__expose","emit","props","selectEl","ref","inputRef","selectMenuEl","selectMenu","t","useI18n","validateRequired","val","inputText","selectedItems","id","computed","uuid","value","btnCssClass","result","validationResult","vRules","selectedItemCount","_a","_b","labelDisplay","validate","useValidationField","watch","lockScrollBody","ensureMenuPosition","unlockScrollBody","resetMenuPosition","ensureSelectedItems","v","item","i","initPressEscapeEventListener","closeOnEscapePressed","event","closeSelectMenu","initClickOutsideEventListener","closeOnClickOutside","r","onClickItem","index","nextTick","ensureMenuWidth","parentEl","menuEl","ensureVisiblePosition","resetPosition","onChangeInputText","text","deselectItem","onMounted","onBeforeUnmount","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_createVNode","BLabel","_normalizeClass","_unref","$event","_Fragment","_renderList","_toDisplayString","_createBlock","BTextField","_createCommentVNode","s","_createTextVNode","_withDirectives","_withModifiers","BCheckbox","_vShow","BErrorMessage"],"mappings":"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"}
@@ -6,7 +6,7 @@ import ve from "./design-system27.mjs";
6
6
  import pe from "./design-system29.mjs";
7
7
  import fe from "./design-system30.mjs";
8
8
  import me from "./design-system39.mjs";
9
- import he from "./design-system93.mjs";
9
+ import he from "./design-system94.mjs";
10
10
  const ge = { class: "ds-absolute ds-right-3 ds-z-[1]" }, be = /* @__PURE__ */ r("path", { d: "M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z" }, null, -1), we = [
11
11
  be
12
12
  ], ke = ["onClick"], xe = /* @__PURE__ */ r("path", { d: "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z" }, null, -1), ye = [
@@ -1 +1 @@
1
- {"version":3,"file":"design-system18.mjs","sources":["../src/components/BMultiSelect.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"ds-absolute ds-right-3 ds-z-[1]\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\" }, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = [\"id\", \"disabled\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = [\"id\", \"data-cy\", \"data-ut\"]\nconst _hoisted_11 = { class: \"ds-max-h-72 ds-overflow-y-auto ds-rounded-lg ds-bg-white ds-shadow\" }\nconst _hoisted_12 = { class: \"ds-py-1 ds-text-sm ds-text-black/[0.85]\" }\nconst _hoisted_13 = [\"onClick\"]\n\nimport {\r\n useValidationField,\r\n type ValidationRule,\r\n} from '@/composables/Validation';\r\nimport {\r\n ensureVisiblePosition,\r\n lockScrollBody,\r\n resetPosition,\r\n unlockScrollBody,\r\n} from '@/helpers/ComponentHelper';\r\nimport { v4 as uuid } from 'uuid';\r\nimport {\r\n computed,\r\n nextTick,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n watch,\r\n} from 'vue';\r\nimport { useI18n } from 'vue-i18n';\r\nimport BCheckbox from './BCheckbox.vue';\r\nimport BErrorMessage from './BErrorMessage.vue';\r\nimport BLabel from './BLabel.vue';\r\nimport BTextField from './BTextField.vue';\r\nimport type { DisplayItem } from '@/types';\r\n\r\n//#region Props\r\nexport interface BMultiSelectProps {\r\n inputId?: string;\r\n modelValue: Array<string | number>;\r\n label?: string;\r\n items: DisplayItem[];\r\n disabled?: boolean;\r\n placeholder?: string;\r\n valueCssClass?: string;\r\n menuCssClass?: string;\r\n /**\r\n * Array of custom validation rules.\r\n */\r\n validationRules?: ValidationRule[];\r\n /**\r\n * Validate if the field is left empty.\r\n */\r\n required?: boolean;\r\n requiredErrorMessage?: string;\r\n /**\r\n * Hide the validation error message.\r\n */\r\n hideDetails?: boolean;\r\n /**\r\n * Show number of selected items.\r\n */\r\n showSelectedItemCount?: boolean;\r\n /**\r\n * Allow to type to search.\r\n */\r\n allowInput?: boolean;\r\n}\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BMultiSelect',\n props: {\n inputId: { default: '' },\n modelValue: {},\n label: { default: '' },\n items: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' },\n valueCssClass: { default: '' },\n menuCssClass: { default: '' },\n validationRules: { default: undefined },\n required: { type: Boolean, default: false },\n requiredErrorMessage: { default: '' },\n hideDetails: { type: Boolean, default: false },\n showSelectedItemCount: { type: Boolean, default: false },\n allowInput: { type: Boolean, default: false }\n },\n emits: [\"change\", \"open\", \"close\", \"change:input\", \"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\r\n// https://vuejs.org/guide/essentials/event-handling.html#event-modifiers\r\n\r\n//#endregion\r\n\r\n//#region Events\r\n\r\n//#endregion\r\n\r\n//#region Data\r\nconst selectEl = ref<HTMLElement | null>(null);\r\nconst inputRef = ref<InstanceType<typeof BTextField> | null>(null);\r\nconst selectMenuEl = ref<HTMLElement | null>(null);\r\nconst selectMenu = ref(false);\r\nconst { t } = useI18n();\r\nconst validateRequired: ValidationRule = {\r\n validateRule: (val: Array<string | number>) => !!val && val.length > 0,\r\n errorMessage: () =>\r\n props.requiredErrorMessage || t('ds.global.field_required'),\r\n};\r\nconst inputText = ref('');\r\nconst selectedItems = ref<DisplayItem[]>([]);\r\nconst id = computed(() => props.inputId || `id-${uuid()}`);\r\nconst value = computed({\r\n get() {\r\n return props.modelValue;\r\n },\r\n set(val) {\r\n emit('update:modelValue', val);\r\n },\r\n});\r\nconst btnCssClass = computed(() => {\r\n let result = `ds-border ds-drop-shadow-light ds-text-sm ds-h-[40px] ds-px-3 ds-rounded-lg ds-block ds-w-full ds-inline-flex ds-items-center ds-justify-between `;\r\n result += props.disabled\r\n ? `ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4] `\r\n : `ds-bg-white ds-text-black/[0.85] `;\r\n result += !validationResult.value.valid\r\n ? `ds-border-error focus:ds-ring-1 focus:ds-ring-error `\r\n : `ds-border-black/10 focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus `;\r\n\r\n return result;\r\n});\r\nconst vRules = computed(() => {\r\n let result: ValidationRule[] = [];\r\n\r\n if (props.required) {\r\n result.push(validateRequired);\r\n }\r\n if (props.validationRules) {\r\n result = result.concat(props.validationRules);\r\n }\r\n\r\n return result.length ? result : undefined;\r\n});\r\nconst selectedItemCount = computed(() =>\r\n value.value?.length > 1\r\n ? ` (${t('ds.components.base.multi_select.selected_item_count', {\r\n count: value.value?.length,\r\n })})`\r\n : '',\r\n);\r\nconst labelDisplay = computed(() =>\r\n props.showSelectedItemCount\r\n ? `${props.label}${selectedItemCount.value}`\r\n : props.label,\r\n);\r\nconst { validate, validationResult } = useValidationField(\r\n id.value,\r\n value,\r\n vRules.value,\r\n);\r\n//#endregion\r\n\r\n//#region Watchers\r\nwatch(selectMenu, (val) => {\r\n if (val) {\r\n lockScrollBody();\r\n ensureMenuPosition();\r\n emit('open');\r\n } else {\r\n unlockScrollBody();\r\n resetMenuPosition();\r\n emit('close');\r\n }\r\n});\r\nwatch(\r\n value,\r\n () => {\r\n ensureSelectedItems();\r\n },\r\n {\r\n deep: true,\r\n },\r\n);\r\nwatch(\r\n () => props.items,\r\n () => {\r\n if (value.value.length !== 0 && selectedItems.value.length === 0) {\r\n ensureSelectedItems();\r\n }\r\n },\r\n {\r\n deep: true,\r\n },\r\n);\r\n//#endregion\r\n\r\n//#region Methods\r\nconst ensureSelectedItems = () => {\r\n selectedItems.value = value.value.map((v) => {\r\n let item = selectedItems.value.find((i) => i.value === v);\r\n if (!item) {\r\n item = props.items.find((i) => i.value === v);\r\n }\r\n return { text: item?.text, value: v, cssClass: item?.cssClass };\r\n });\r\n};\r\nconst initPressEscapeEventListener = () => {\r\n document.addEventListener('keydown', closeOnEscapePressed);\r\n};\r\nconst closeOnEscapePressed = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n closeSelectMenu();\r\n }\r\n};\r\nconst initClickOutsideEventListener = () => {\r\n document.addEventListener('click', closeOnClickOutside);\r\n};\r\nconst closeOnClickOutside = (event: any) => {\r\n const refs = [selectEl.value, selectMenuEl.value];\r\n const withinBoundaries = refs.some((r) => event.composedPath().includes(r));\r\n if (!withinBoundaries) {\r\n closeSelectMenu();\r\n }\r\n};\r\nconst onClickItem = (item: DisplayItem) => {\r\n const index = value.value.findIndex((v) => v === item.value);\r\n if (index !== -1) {\r\n value.value.splice(index, 1);\r\n } else {\r\n value.value.push(item.value);\r\n }\r\n emit('change', item.value);\r\n nextTick(() => {\r\n validate();\r\n });\r\n};\r\nconst ensureMenuWidth = (parentEl: HTMLElement, menuEl: HTMLElement) => {\r\n menuEl.style.width = `${parentEl.offsetWidth}px`;\r\n};\r\nconst ensureMenuPosition = () => {\r\n nextTick(() => {\r\n ensureVisiblePosition(selectEl.value!, selectMenuEl.value!);\r\n ensureMenuWidth(selectEl.value!, selectMenuEl.value!);\r\n });\r\n};\r\nconst resetMenuPosition = () => {\r\n resetPosition(selectEl.value!, selectMenuEl.value!);\r\n};\r\nconst onChangeInputText = (text: string) => {\r\n emit('change:input', text);\r\n};\r\nconst closeSelectMenu = () => {\r\n selectMenu.value = false;\r\n inputRef.value?.blur();\r\n inputText.value = '';\r\n};\r\nconst deselectItem = (item: DisplayItem) => {\r\n const index = value.value.findIndex((v) => v === item.value);\r\n if (index !== -1) {\r\n value.value.splice(index, 1);\r\n emit('change', item.value);\r\n nextTick(() => {\r\n validate();\r\n });\r\n }\r\n};\r\nconst init = () => {\r\n if (props.items?.length > 0) {\r\n ensureSelectedItems();\r\n }\r\n};\r\ninit();\r\n//#endregion\r\n\r\n//#region Lifecycle Hooks\r\nonMounted(() => {\r\n initPressEscapeEventListener();\r\n initClickOutsideEventListener();\r\n});\r\nonBeforeUnmount(() => {\r\n document.removeEventListener('keydown', closeOnEscapePressed);\r\n document.removeEventListener('click', closeOnClickOutside);\r\n unlockScrollBody();\r\n // Make sure dropdown menu unmounted with itself\r\n resetMenuPosition();\r\n});\r\n//#endregion\r\n\r\n__expose({ validate, selectMenu });\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", {\n ref_key: \"selectEl\",\n ref: selectEl\n }, [\n _createVNode(BLabel, {\n id: id.value,\n label: labelDisplay.value,\n required: _ctx.required\n }, null, 8, [\"id\", \"label\", \"required\"]),\n (props.allowInput)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([{\r\n 'ds-border-focus ds-ring-1 ds-ring-focus':\r\n selectMenu.value && _unref(validationResult).valid,\r\n 'ds-ring-1 ds-ring-error': selectMenu.value && !_unref(validationResult).valid,\r\n 'ds-border-black/10': _unref(validationResult).valid,\r\n 'ds-border-error': !_unref(validationResult).valid,\r\n }, \"ds-relative ds-flex ds-flex-wrap ds-items-center ds-gap-x-1 ds-rounded-lg ds-border ds-bg-white ds-px-3 ds-py-1 ds-drop-shadow-light\"])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (inputRef.value?.focus()))\n }, _hoisted_3, 2))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(selectedItems.value, (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `item${i}`,\n class: \"ds-my-0.5 ds-flex-initial ds-space-x-1 ds-rounded-lg ds-bg-black/10 ds-px-2\"\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(item.text), 1),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: \"ds-mb-1 ds-inline ds-h-4 ds-w-4 ds-cursor-pointer ds-fill-black/60 hover:ds-fill-black/40\",\n viewBox: \"0 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: ($event: any) => (deselectItem(item))\n }, _hoisted_6, 8, _hoisted_4))\n ]))\n }), 128)),\n (props.allowInput)\n ? (_openBlock(), _createBlock(BTextField, {\n key: 0,\n id: id.value,\n ref_key: \"inputRef\",\n ref: inputRef,\n modelValue: inputText.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event: any) => ((inputText).value = $event)),\n onChangeInputText\n ],\n disabled: props.disabled,\n class: \"ds-flex-auto\",\n \"hide-details\": \"\",\n \"input-css-class\": \"ds-drop-shadow-none ds-border-none !ds-ring-0 ds-px-0 !ds-h-[30px] ds-pl-0\",\n onFocus: _cache[2] || (_cache[2] = ($event: any) => (selectMenu.value = true))\n }, null, 8, [\"id\", \"modelValue\", \"disabled\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n id: id.value,\n class: _normalizeClass(btnCssClass.value),\n disabled: _ctx.disabled,\n type: \"button\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (selectMenu.value = !selectMenu.value))\n }, [\n (selectedItems.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm\"])\n }, _toDisplayString(selectedItems.value?.map((s) => s.text).join(', ')), 3))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm ds-text-black/[0.4]\"])\n }, _toDisplayString(props.placeholder), 3)),\n _createTextVNode(\"   \"),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, _hoisted_9, 2))\n ], 10, _hoisted_7)),\n _withDirectives(_createElementVNode(\"div\", {\n id: `${id.value}Menu`,\n ref_key: \"selectMenuEl\",\n ref: selectMenuEl,\n class: _normalizeClass([_ctx.menuCssClass, \"ds-absolute ds-z-50 ds-min-w-[8rem] ds-py-1\"]),\n \"data-cy\": _ctx.$attrs['data-cy'] ? `${_ctx.$attrs['data-cy']}Menu` : undefined,\n \"data-ut\": _ctx.$attrs['data-ut'] ? `${_ctx.$attrs['data-ut']}Menu` : undefined\n }, [\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"ul\", _hoisted_12, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.items, (item, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `item${index}`,\n class: \"ds-cursor-pointer\",\n onClick: _withModifiers(($event: any) => (onClickItem(item)), [\"prevent\"])\n }, [\n _createElementVNode(\"a\", {\n class: _normalizeClass([\r\n item.cssClass +\r\n `${\r\n selectedItems.value.some((s) => s.value === item.value)\r\n ? ' ds-bg-slate-100'\r\n : ''\r\n }`\r\n , \"ds-flex ds-items-center ds-space-x-2 ds-px-4 ds-py-2 hover:ds-bg-slate-100\"])\n }, [\n _createVNode(BCheckbox, {\n modelValue: value.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((value).value = $event)),\n value: item.value,\n size: \"sm\"\n }, null, 8, [\"modelValue\", \"value\"]),\n _createElementVNode(\"span\", null, _toDisplayString(item?.text), 1)\n ], 2)\n ], 8, _hoisted_13))\n }), 128))\n ])\n ])\n ], 10, _hoisted_10), [\n [_vShow, selectMenu.value]\n ])\n ], 512),\n (!_ctx.hideDetails)\n ? (_openBlock(), _createBlock(BErrorMessage, {\n key: 0,\n \"error-message\": _unref(validationResult).errorMessage(),\n class: \"ds-mt-1\"\n }, null, 8, [\"error-message\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_sfc_main","_defineComponent","__props","__expose","emit","props","selectEl","ref","inputRef","selectMenuEl","selectMenu","t","useI18n","validateRequired","val","inputText","selectedItems","id","computed","uuid","value","btnCssClass","result","validationResult","vRules","selectedItemCount","_a","_b","labelDisplay","validate","useValidationField","watch","lockScrollBody","ensureMenuPosition","unlockScrollBody","resetMenuPosition","ensureSelectedItems","v","item","i","initPressEscapeEventListener","closeOnEscapePressed","event","closeSelectMenu","initClickOutsideEventListener","closeOnClickOutside","r","onClickItem","index","nextTick","ensureMenuWidth","parentEl","menuEl","ensureVisiblePosition","resetPosition","onChangeInputText","text","deselectItem","onMounted","onBeforeUnmount","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_createVNode","BLabel","_normalizeClass","_unref","$event","_Fragment","_renderList","_toDisplayString","_createBlock","BTextField","_createCommentVNode","s","_createTextVNode","_withDirectives","_withModifiers","BCheckbox","_vShow","BErrorMessage"],"mappings":";;;;;;;;;AAGA,MAAMA,KAAa,EAAE,OAAO,qCACtBC,uBAA8C,QAAQ,EAAE,GAAG,mKAAmK,MAAM,EAAE,GACtOC,KAAa;AAAA,EACjBD;AACF,GACME,KAAa,CAAC,SAAS,GACvBC,uBAA8C,QAAQ,EAAE,GAAG,8RAA8R,MAAM,EAAE,GACjWC,KAAa;AAAA,EACjBD;AACF,GACME,KAAa,CAAC,MAAM,UAAU,GAC9BC,uBAA8C,QAAQ,EAAE,GAAG,mKAAmK,MAAM,EAAE,GACtOC,KAAa;AAAA,EACjBD;AACF,GACME,KAAc,CAAC,MAAM,WAAW,SAAS,GACzCC,KAAc,EAAE,OAAO,wEACvBC,KAAc,EAAE,OAAO,6CACvBC,KAAc,CAAC,SAAS,GA8DFC,KAAiBC,gBAAAA,GAAA;AAAA,EAC3C,QAAQ;AAAA,EACR,OAAO;AAAA,IACL,SAAS,EAAE,SAAS,GAAG;AAAA,IACvB,YAAY,CAAC;AAAA,IACb,OAAO,EAAE,SAAS,GAAG;AAAA,IACrB,OAAO,CAAC;AAAA,IACR,UAAU,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IAC1C,aAAa,EAAE,SAAS,GAAG;AAAA,IAC3B,eAAe,EAAE,SAAS,GAAG;AAAA,IAC7B,cAAc,EAAE,SAAS,GAAG;AAAA,IAC5B,iBAAiB,EAAE,SAAS,OAAU;AAAA,IACtC,UAAU,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IAC1C,sBAAsB,EAAE,SAAS,GAAG;AAAA,IACpC,aAAa,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IAC7C,uBAAuB,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IACvD,YAAY,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,EAC9C;AAAA,EACA,OAAO,CAAC,UAAU,QAAQ,SAAS,gBAAgB,mBAAmB;AAAA,EACtE,MAAMC,GAAc,EAAE,QAAQC,GAAU,MAAAC,KAAQ;AAElD,UAAMC,IAAQH,GAWRI,IAAWC,EAAwB,IAAI,GACvCC,IAAWD,EAA4C,IAAI,GAC3DE,IAAeF,EAAwB,IAAI,GAC3CG,IAAaH,EAAI,EAAK,GACtB,EAAE,GAAAI,MAAMC,MACRC,IAAmC;AAAA,MACvC,cAAc,CAACC,MAAgC,CAAC,CAACA,KAAOA,EAAI,SAAS;AAAA,MACrE,cAAc,MACZT,EAAM,wBAAwBM,EAAE,0BAA0B;AAAA,IAAA,GAExDI,IAAYR,EAAI,EAAE,GAClBS,IAAgBT,EAAmB,CAAA,CAAE,GACrCU,IAAKC,EAAS,MAAMb,EAAM,WAAW,MAAMc,IAAM,EAAE,GACnDC,IAAQF,EAAS;AAAA,MACrB,MAAM;AACJ,eAAOb,EAAM;AAAA,MACf;AAAA,MACA,IAAIS,GAAK;AACP,QAAAV,EAAK,qBAAqBU,CAAG;AAAA,MAC/B;AAAA,IAAA,CACD,GACKO,IAAcH,EAAS,MAAM;AACjC,UAAII,IAAS;AACH,aAAAA,KAAAjB,EAAM,WACZ,+DACA,qCACJiB,KAAWC,EAAiB,MAAM,QAE9B,kFADA,wDAGGD;AAAA,IAAA,CACR,GACKE,IAASN,EAAS,MAAM;AAC5B,UAAII,IAA2B,CAAA;AAE/B,aAAIjB,EAAM,YACRiB,EAAO,KAAKT,CAAgB,GAE1BR,EAAM,oBACCiB,IAAAA,EAAO,OAAOjB,EAAM,eAAe,IAGvCiB,EAAO,SAASA,IAAS;AAAA,IAAA,CACjC,GACKG,IAAoBP;AAAA,MAAS,MACjC;;AAAA,iBAAAQ,IAAAN,EAAM,UAAN,gBAAAM,EAAa,UAAS,IAClB,KAAKf,EAAE,uDAAuD;AAAA,UAC5D,QAAOgB,IAAAP,EAAM,UAAN,gBAAAO,EAAa;AAAA,QAAA,CACrB,CAAC,MACF;AAAA;AAAA,IAAA,GAEAC,IAAeV;AAAA,MAAS,MAC5Bb,EAAM,wBACF,GAAGA,EAAM,KAAK,GAAGoB,EAAkB,KAAK,KACxCpB,EAAM;AAAA,IAAA,GAEN,EAAE,UAAAwB,GAAU,kBAAAN,EAAA,IAAqBO;AAAA,MACrCb,EAAG;AAAA,MACHG;AAAA,MACAI,EAAO;AAAA,IAAA;AAKH,IAAAO,EAAArB,GAAY,CAACI,MAAQ;AACzB,MAAIA,KACakB,MACIC,KACnB7B,EAAK,MAAM,MAEM8B,KACCC,KAClB/B,EAAK,OAAO;AAAA,IACd,CACD,GACD2B;AAAA,MACEX;AAAA,MACA,MAAM;AACgB,QAAAgB;MACtB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,MACR;AAAA,IAAA,GAEFL;AAAA,MACE,MAAM1B,EAAM;AAAA,MACZ,MAAM;AACJ,QAAIe,EAAM,MAAM,WAAW,KAAKJ,EAAc,MAAM,WAAW,KACzCoB;MAExB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,MACR;AAAA,IAAA;AAKF,UAAMA,IAAsB,MAAM;AAChC,MAAApB,EAAc,QAAQI,EAAM,MAAM,IAAI,CAACiB,MAAM;AACvC,YAAAC,IAAOtB,EAAc,MAAM,KAAK,CAACuB,MAAMA,EAAE,UAAUF,CAAC;AACxD,eAAKC,MACHA,IAAOjC,EAAM,MAAM,KAAK,CAACkC,MAAMA,EAAE,UAAUF,CAAC,IAEvC,EAAE,MAAMC,KAAA,gBAAAA,EAAM,MAAM,OAAOD,GAAG,UAAUC,KAAA,gBAAAA,EAAM;MAAS,CAC/D;AAAA,IAAA,GAEGE,IAA+B,MAAM;AAChC,eAAA,iBAAiB,WAAWC,CAAoB;AAAA,IAAA,GAErDA,IAAuB,CAACC,MAAyB;AACjD,MAAAA,EAAM,QAAQ,YACAC;IAClB,GAEIC,IAAgC,MAAM;AACjC,eAAA,iBAAiB,SAASC,CAAmB;AAAA,IAAA,GAElDA,IAAsB,CAACH,MAAe;AAG1C,MAFa,CAACpC,EAAS,OAAOG,EAAa,KAAK,EAClB,KAAK,CAACqC,MAAMJ,EAAM,eAAe,SAASI,CAAC,CAAC,KAExDH;IAClB,GAEII,IAAc,CAACT,MAAsB;AACnC,YAAAU,IAAQ5B,EAAM,MAAM,UAAU,CAACiB,MAAMA,MAAMC,EAAK,KAAK;AAC3D,MAAIU,MAAU,KACN5B,EAAA,MAAM,OAAO4B,GAAO,CAAC,IAErB5B,EAAA,MAAM,KAAKkB,EAAK,KAAK,GAExBlC,EAAA,UAAUkC,EAAK,KAAK,GACzBW,EAAS,MAAM;AACJ,QAAApB;MAAA,CACV;AAAA,IAAA,GAEGqB,IAAkB,CAACC,GAAuBC,MAAwB;AACtE,MAAAA,EAAO,MAAM,QAAQ,GAAGD,EAAS,WAAW;AAAA,IAAA,GAExClB,IAAqB,MAAM;AAC/B,MAAAgB,EAAS,MAAM;AACS,QAAAI,GAAA/C,EAAS,OAAQG,EAAa,KAAM,GAC1CyC,EAAA5C,EAAS,OAAQG,EAAa,KAAM;AAAA,MAAA,CACrD;AAAA,IAAA,GAEG0B,IAAoB,MAAM;AAChB,MAAAmB,GAAAhD,EAAS,OAAQG,EAAa,KAAM;AAAA,IAAA,GAE9C8C,IAAoB,CAACC,MAAiB;AAC1C,MAAApD,EAAK,gBAAgBoD,CAAI;AAAA,IAAA,GAErBb,IAAkB,MAAM;;AAC5B,MAAAjC,EAAW,QAAQ,KACnBgB,IAAAlB,EAAS,UAAT,QAAAkB,EAAgB,QAChBX,EAAU,QAAQ;AAAA,IAAA,GAEd0C,IAAe,CAACnB,MAAsB;AACpC,YAAAU,IAAQ5B,EAAM,MAAM,UAAU,CAACiB,MAAMA,MAAMC,EAAK,KAAK;AAC3D,MAAIU,MAAU,OACN5B,EAAA,MAAM,OAAO4B,GAAO,CAAC,GACtB5C,EAAA,UAAUkC,EAAK,KAAK,GACzBW,EAAS,MAAM;AACJ,QAAApB;MAAA,CACV;AAAA,IACH;AAOG,YALQ,MAAM;;AACb,QAAAH,IAAArB,EAAM,UAAN,gBAAAqB,EAAa,UAAS,KACJU;IACtB,MAMFsB,GAAU,MAAM;AACe,MAAAlB,KACCI;IAAA,CAC/B,GACDe,GAAgB,MAAM;AACX,eAAA,oBAAoB,WAAWlB,CAAoB,GACnD,SAAA,oBAAoB,SAASI,CAAmB,GACxCX,KAECC;IAAA,CACnB,GAGQhC,EAAA,EAAE,UAAA0B,GAAU,YAAAnB,EAAA,CAAY,GAE1B,CAACkD,GAAUC,MAAgB;;AAChC,aAAQC,EAAW,GAAGC,EAAoB,OAAO,MAAM;AAAA,QACrDC,EAAoB,OAAO;AAAA,UACzB,SAAS;AAAA,UACT,KAAK1D;AAAA,QAAA,GACJ;AAAA,UACD2D,EAAaC,IAAQ;AAAA,YACnB,IAAIjD,EAAG;AAAA,YACP,OAAOW,EAAa;AAAA,YACpB,UAAUgC,EAAK;AAAA,UAAA,GACd,MAAM,GAAG,CAAC,MAAM,SAAS,UAAU,CAAC;AAAA,UACtCvD,EAAM,cACFyD,KAAcC,EAAoB,OAAO;AAAA,YACxC,KAAK;AAAA,YACL,OAAOI,EAAgB,CAAC;AAAA,cAC1B,2CACEzD,EAAW,SAAS0D,EAAO7C,CAAgB,EAAE;AAAA,cAC/C,2BAA2Bb,EAAW,SAAS,CAAC0D,EAAO7C,CAAgB,EAAE;AAAA,cACzE,sBAAsB6C,EAAO7C,CAAgB,EAAE;AAAA,cAC/C,mBAAmB,CAAC6C,EAAO7C,CAAgB,EAAE;AAAA,YAC/C,GAAG,sIAAsI,CAAC;AAAA,UAAA,GACrI;AAAA,YACDyC,EAAoB,OAAO7E,IAAY;AAAA,eACpC2E,EAAc,GAAAC,EAAoB,OAAO;AAAA,gBACxC,OAAOI,EAAgB,CAAC,CAACzD,EAAW,QAAQ,kBAAkB,EAAE,GAAG,uCAAuC,CAAC;AAAA,gBAC3G,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,SAASmD,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAiB;;AAAA,0BAAA3C,IAAAlB,EAAS,UAAT,gBAAAkB,EAAgB;AAAA;AAAA,cAAM,GAC1ErC,IAAY,CAAC;AAAA,YAAA,CACjB;AAAA,aACAyE,EAAW,EAAI,GAAGC,EAAoBO,GAAW,MAAMC,EAAYvD,EAAc,OAAO,CAACsB,GAAMC,OACtFuB,EAAA,GAAcC,EAAoB,OAAO;AAAA,cAC/C,KAAK,OAAOxB,CAAC;AAAA,cACb,OAAO;AAAA,YAAA,GACN;AAAA,cACDyB,EAAoB,QAAQ,MAAMQ,EAAiBlC,EAAK,IAAI,GAAG,CAAC;AAAA,eAC/DwB,EAAc,GAAAC,EAAoB,OAAO;AAAA,gBACxC,OAAO;AAAA,gBACP,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,SAAS,CAACM,MAAiBZ,EAAanB,CAAI;AAAA,cAAA,GAC3C9C,IAAY,GAAGF,EAAU;AAAA,YAAA,CAC7B,EACF,GAAG,GAAG;AAAA,YACNe,EAAM,cACFyD,KAAcW,EAAaC,IAAY;AAAA,cACtC,KAAK;AAAA,cACL,IAAIzD,EAAG;AAAA,cACP,SAAS;AAAA,cACT,KAAKT;AAAA,cACL,YAAYO,EAAU;AAAA,cACtB,uBAAuB;AAAA,gBACrB8C,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAkBtD,EAAW,QAAQsD;AAAA,gBAChEd;AAAA,cACF;AAAA,cACA,UAAUlD,EAAM;AAAA,cAChB,OAAO;AAAA,cACP,gBAAgB;AAAA,cAChB,mBAAmB;AAAA,cACnB,SAASwD,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAiB3D,EAAW,QAAQ;AAAA,YAAA,GACvE,MAAM,GAAG,CAAC,MAAM,cAAc,UAAU,CAAC,KAC5CiE,EAAoB,IAAI,EAAI;AAAA,aAC/B,CAAC,MACHb,KAAcC,EAAoB,UAAU;AAAA,YAC3C,KAAK;AAAA,YACL,IAAI9C,EAAG;AAAA,YACP,OAAOkD,EAAgB9C,EAAY,KAAK;AAAA,YACxC,UAAUuC,EAAK;AAAA,YACf,MAAM;AAAA,YACN,SAASC,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAiB3D,EAAW,QAAQ,CAACA,EAAW;AAAA,UAAA,GACnF;AAAA,YACAM,EAAc,MAAM,SAAS,KACzB8C,EAAW,GAAGC,EAAoB,QAAQ;AAAA,cACzC,KAAK;AAAA,cACL,OAAOI,EAAgB,CAACP,EAAK,eAAe,wBAAwB,CAAC;AAAA,YAAA,GACpEY,GAAiB9C,IAAAV,EAAc,UAAd,gBAAAU,EAAqB,IAAI,CAACkD,MAAMA,EAAE,MAAM,KAAK,KAAK,GAAG,CAAC,MACzEd,EAAW,GAAGC,EAAoB,QAAQ;AAAA,cACzC,KAAK;AAAA,cACL,OAAOI,EAAgB,CAACP,EAAK,eAAe,4CAA4C,CAAC;AAAA,YACxF,GAAAY,EAAiBnE,EAAM,WAAW,GAAG,CAAC;AAAA,YAC7CwE,GAAiB,KAAK;AAAA,aACrBf,EAAc,GAAAC,EAAoB,OAAO;AAAA,cACxC,OAAOI,EAAgB,CAAC,CAACzD,EAAW,QAAQ,kBAAkB,EAAE,GAAG,uCAAuC,CAAC;AAAA,cAC3G,SAAS;AAAA,cACT,OAAO;AAAA,YAAA,GACNf,IAAY,CAAC;AAAA,UAAA,GACf,IAAIF,EAAU;AAAA,UACrBqF,GAAgBd,EAAoB,OAAO;AAAA,YACzC,IAAI,GAAG/C,EAAG,KAAK;AAAA,YACf,SAAS;AAAA,YACT,KAAKR;AAAA,YACL,OAAO0D,EAAgB,CAACP,EAAK,cAAc,6CAA6C,CAAC;AAAA,YACzF,WAAWA,EAAK,OAAO,SAAS,IAAI,GAAGA,EAAK,OAAO,SAAS,CAAC,SAAS;AAAA,YACtE,WAAWA,EAAK,OAAO,SAAS,IAAI,GAAGA,EAAK,OAAO,SAAS,CAAC,SAAS;AAAA,UAAA,GACrE;AAAA,YACDI,EAAoB,OAAOnE,IAAa;AAAA,cACtCmE,EAAoB,MAAMlE,IAAa;AAAA,iBACpCgE,EAAW,EAAI,GAAGC,EAAoBO,GAAW,MAAMC,EAAYX,EAAK,OAAO,CAACtB,GAAMU,OAC7Ec,EAAA,GAAcC,EAAoB,MAAM;AAAA,kBAC9C,KAAK,OAAOf,CAAK;AAAA,kBACjB,OAAO;AAAA,kBACP,SAAS+B,GAAe,CAACV,MAAiBtB,EAAYT,CAAI,GAAI,CAAC,SAAS,CAAC;AAAA,gBAAA,GACxE;AAAA,kBACD0B,EAAoB,KAAK;AAAA,oBACvB,OAAOG,EAAgB;AAAA,sBACvB7B,EAAK,WACL,GACEtB,EAAc,MAAM,KAAK,CAAC4D,MAAMA,EAAE,UAAUtC,EAAK,KAAK,IAClD,qBACA,EACN;AAAA,sBACA;AAAA,oBAAA,CAA6E;AAAA,kBAAA,GAC5E;AAAA,oBACD2B,EAAae,IAAW;AAAA,sBACtB,YAAY5D,EAAM;AAAA,sBAClB,uBAAuByC,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAkBjD,EAAO,QAAQiD;AAAA,sBACnF,OAAO/B,EAAK;AAAA,sBACZ,MAAM;AAAA,uBACL,MAAM,GAAG,CAAC,cAAc,OAAO,CAAC;AAAA,oBACnC0B,EAAoB,QAAQ,MAAMQ,EAAiBlC,KAAA,gBAAAA,EAAM,IAAI,GAAG,CAAC;AAAA,qBAChE,CAAC;AAAA,gBAAA,GACH,GAAGvC,EAAW,EAClB,GAAG,GAAG;AAAA,cAAA,CACR;AAAA,YAAA,CACF;AAAA,UAAA,GACA,IAAIH,EAAW,GAAG;AAAA,YACnB,CAACqF,IAAQvE,EAAW,KAAK;AAAA,UAAA,CAC1B;AAAA,WACA,GAAG;AAAA,QACJkD,EAAK,cAMHe,EAAoB,IAAI,EAAI,KAL3Bb,EAAW,GAAGW,EAAaS,IAAe;AAAA,UACzC,KAAK;AAAA,UACL,iBAAiBd,EAAO7C,CAAgB,EAAE,aAAa;AAAA,UACvD,OAAO;AAAA,QAAA,GACN,MAAM,GAAG,CAAC,eAAe,CAAC;AAAA,MACD,CACjC;AAAA,IAAA;AAAA,EAEH;AAEA,CAAC;"}
1
+ {"version":3,"file":"design-system18.mjs","sources":["../src/components/BMultiSelect.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"ds-absolute ds-right-3 ds-z-[1]\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\" }, null, -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = [\"id\", \"disabled\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\" }, null, -1)\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = [\"id\", \"data-cy\", \"data-ut\"]\nconst _hoisted_11 = { class: \"ds-max-h-72 ds-overflow-y-auto ds-rounded-lg ds-bg-white ds-shadow\" }\nconst _hoisted_12 = { class: \"ds-py-1 ds-text-sm ds-text-black/[0.85]\" }\nconst _hoisted_13 = [\"onClick\"]\n\nimport {\n useValidationField,\n type ValidationRule,\n} from '@/composables/Validation';\nimport {\n ensureVisiblePosition,\n lockScrollBody,\n resetPosition,\n unlockScrollBody,\n} from '@/helpers/ComponentHelper';\nimport { v4 as uuid } from 'uuid';\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n} from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport BCheckbox from './BCheckbox.vue';\nimport BErrorMessage from './BErrorMessage.vue';\nimport BLabel from './BLabel.vue';\nimport BTextField from './BTextField.vue';\nimport type { DisplayItem } from '@/types';\n\n//#region Props\nexport interface BMultiSelectProps {\n inputId?: string;\n modelValue: Array<string | number>;\n label?: string;\n items: DisplayItem[];\n disabled?: boolean;\n placeholder?: string;\n valueCssClass?: string;\n menuCssClass?: string;\n /**\n * Array of custom validation rules.\n */\n validationRules?: ValidationRule[];\n /**\n * Validate if the field is left empty.\n */\n required?: boolean;\n requiredErrorMessage?: string;\n /**\n * Hide the validation error message.\n */\n hideDetails?: boolean;\n /**\n * Show number of selected items.\n */\n showSelectedItemCount?: boolean;\n /**\n * Allow to type to search.\n */\n allowInput?: boolean;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BMultiSelect',\n props: {\n inputId: { default: '' },\n modelValue: {},\n label: { default: '' },\n items: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' },\n valueCssClass: { default: '' },\n menuCssClass: { default: '' },\n validationRules: { default: undefined },\n required: { type: Boolean, default: false },\n requiredErrorMessage: { default: '' },\n hideDetails: { type: Boolean, default: false },\n showSelectedItemCount: { type: Boolean, default: false },\n allowInput: { type: Boolean, default: false }\n },\n emits: [\"change\", \"open\", \"close\", \"change:input\", \"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\n// https://vuejs.org/guide/essentials/event-handling.html#event-modifiers\n\n//#endregion\n\n//#region Events\n\n//#endregion\n\n//#region Data\nconst selectEl = ref<HTMLElement | null>(null);\nconst inputRef = ref<InstanceType<typeof BTextField> | null>(null);\nconst selectMenuEl = ref<HTMLElement | null>(null);\nconst selectMenu = ref(false);\nconst { t } = useI18n();\nconst validateRequired: ValidationRule = {\n validateRule: (val: Array<string | number>) => !!val && val.length > 0,\n errorMessage: () =>\n props.requiredErrorMessage || t('ds.global.field_required'),\n};\nconst inputText = ref('');\nconst selectedItems = ref<DisplayItem[]>([]);\nconst id = computed(() => props.inputId || `id-${uuid()}`);\nconst value = computed({\n get() {\n return props.modelValue;\n },\n set(val) {\n emit('update:modelValue', val);\n },\n});\nconst btnCssClass = computed(() => {\n let result = `ds-border ds-drop-shadow-light ds-text-sm ds-h-[40px] ds-px-3 ds-rounded-lg ds-block ds-w-full ds-inline-flex ds-items-center ds-justify-between `;\n result += props.disabled\n ? `ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4] `\n : `ds-bg-white ds-text-black/[0.85] `;\n result += !validationResult.value.valid\n ? `ds-border-error focus:ds-ring-1 focus:ds-ring-error `\n : `ds-border-black/10 focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus `;\n\n return result;\n});\nconst vRules = computed(() => {\n let result: ValidationRule[] = [];\n\n if (props.required) {\n result.push(validateRequired);\n }\n if (props.validationRules) {\n result = result.concat(props.validationRules);\n }\n\n return result.length ? result : undefined;\n});\nconst selectedItemCount = computed(() =>\n value.value?.length > 1\n ? ` (${t('ds.components.base.multi_select.selected_item_count', {\n count: value.value?.length,\n })})`\n : '',\n);\nconst labelDisplay = computed(() =>\n props.showSelectedItemCount\n ? `${props.label}${selectedItemCount.value}`\n : props.label,\n);\nconst { validate, validationResult } = useValidationField(\n id.value,\n value,\n vRules.value,\n);\n//#endregion\n\n//#region Watchers\nwatch(selectMenu, (val) => {\n if (val) {\n lockScrollBody();\n ensureMenuPosition();\n emit('open');\n } else {\n unlockScrollBody();\n resetMenuPosition();\n emit('close');\n }\n});\nwatch(\n value,\n () => {\n ensureSelectedItems();\n },\n {\n deep: true,\n },\n);\nwatch(\n () => props.items,\n () => {\n if (value.value.length !== 0 && selectedItems.value.length === 0) {\n ensureSelectedItems();\n }\n },\n {\n deep: true,\n },\n);\n//#endregion\n\n//#region Methods\nconst ensureSelectedItems = () => {\n selectedItems.value = value.value.map((v) => {\n let item = selectedItems.value.find((i) => i.value === v);\n if (!item) {\n item = props.items.find((i) => i.value === v);\n }\n return { text: item?.text, value: v, cssClass: item?.cssClass };\n });\n};\nconst initPressEscapeEventListener = () => {\n document.addEventListener('keydown', closeOnEscapePressed);\n};\nconst closeOnEscapePressed = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSelectMenu();\n }\n};\nconst initClickOutsideEventListener = () => {\n document.addEventListener('click', closeOnClickOutside);\n};\nconst closeOnClickOutside = (event: any) => {\n const refs = [selectEl.value, selectMenuEl.value];\n const withinBoundaries = refs.some((r) => event.composedPath().includes(r));\n if (!withinBoundaries) {\n closeSelectMenu();\n }\n};\nconst onClickItem = (item: DisplayItem) => {\n const index = value.value.findIndex((v) => v === item.value);\n if (index !== -1) {\n value.value.splice(index, 1);\n } else {\n value.value.push(item.value);\n }\n emit('change', item.value);\n nextTick(() => {\n validate();\n });\n};\nconst ensureMenuWidth = (parentEl: HTMLElement, menuEl: HTMLElement) => {\n menuEl.style.width = `${parentEl.offsetWidth}px`;\n};\nconst ensureMenuPosition = () => {\n nextTick(() => {\n ensureVisiblePosition(selectEl.value!, selectMenuEl.value!);\n ensureMenuWidth(selectEl.value!, selectMenuEl.value!);\n });\n};\nconst resetMenuPosition = () => {\n resetPosition(selectEl.value!, selectMenuEl.value!);\n};\nconst onChangeInputText = (text: string) => {\n emit('change:input', text);\n};\nconst closeSelectMenu = () => {\n selectMenu.value = false;\n inputRef.value?.blur();\n inputText.value = '';\n};\nconst deselectItem = (item: DisplayItem) => {\n const index = value.value.findIndex((v) => v === item.value);\n if (index !== -1) {\n value.value.splice(index, 1);\n emit('change', item.value);\n nextTick(() => {\n validate();\n });\n }\n};\nconst init = () => {\n if (props.items?.length > 0) {\n ensureSelectedItems();\n }\n};\ninit();\n//#endregion\n\n//#region Lifecycle Hooks\nonMounted(() => {\n initPressEscapeEventListener();\n initClickOutsideEventListener();\n});\nonBeforeUnmount(() => {\n document.removeEventListener('keydown', closeOnEscapePressed);\n document.removeEventListener('click', closeOnClickOutside);\n unlockScrollBody();\n // Make sure dropdown menu unmounted with itself\n resetMenuPosition();\n});\n//#endregion\n\n__expose({ validate, selectMenu });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", {\n ref_key: \"selectEl\",\n ref: selectEl\n }, [\n _createVNode(BLabel, {\n id: id.value,\n label: labelDisplay.value,\n required: _ctx.required\n }, null, 8, [\"id\", \"label\", \"required\"]),\n (props.allowInput)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([{\n 'ds-border-focus ds-ring-1 ds-ring-focus':\n selectMenu.value && _unref(validationResult).valid,\n 'ds-ring-1 ds-ring-error': selectMenu.value && !_unref(validationResult).valid,\n 'ds-border-black/10': _unref(validationResult).valid,\n 'ds-border-error': !_unref(validationResult).valid,\n }, \"ds-relative ds-flex ds-flex-wrap ds-items-center ds-gap-x-1 ds-rounded-lg ds-border ds-bg-white ds-px-3 ds-py-1 ds-drop-shadow-light\"])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (inputRef.value?.focus()))\n }, _hoisted_3, 2))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(selectedItems.value, (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: `item${i}`,\n class: \"ds-my-0.5 ds-flex-initial ds-space-x-1 ds-rounded-lg ds-bg-black/10 ds-px-2\"\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(item.text), 1),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: \"ds-mb-1 ds-inline ds-h-4 ds-w-4 ds-cursor-pointer ds-fill-black/60 hover:ds-fill-black/40\",\n viewBox: \"0 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n onClick: ($event: any) => (deselectItem(item))\n }, _hoisted_6, 8, _hoisted_4))\n ]))\n }), 128)),\n (props.allowInput)\n ? (_openBlock(), _createBlock(BTextField, {\n key: 0,\n id: id.value,\n ref_key: \"inputRef\",\n ref: inputRef,\n modelValue: inputText.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event: any) => ((inputText).value = $event)),\n onChangeInputText\n ],\n disabled: props.disabled,\n class: \"ds-flex-auto\",\n \"hide-details\": \"\",\n \"input-css-class\": \"ds-drop-shadow-none ds-border-none !ds-ring-0 ds-px-0 !ds-h-[30px] ds-pl-0\",\n onFocus: _cache[2] || (_cache[2] = ($event: any) => (selectMenu.value = true))\n }, null, 8, [\"id\", \"modelValue\", \"disabled\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n id: id.value,\n class: _normalizeClass(btnCssClass.value),\n disabled: _ctx.disabled,\n type: \"button\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (selectMenu.value = !selectMenu.value))\n }, [\n (selectedItems.value.length > 0)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm\"])\n }, _toDisplayString(selectedItems.value?.map((s) => s.text).join(', ')), 3))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n class: _normalizeClass([_ctx.valueCssClass, \"ds-truncate ds-text-sm ds-text-black/[0.4]\"])\n }, _toDisplayString(props.placeholder), 3)),\n _createTextVNode(\"   \"),\n (_openBlock(), _createElementBlock(\"svg\", {\n class: _normalizeClass([[selectMenu.value ? 'ds-rotate-180' : ''], \"ds-h-4 ds-w-4 ds-transition-transform\"]),\n viewBox: \"0 0 320 512\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, _hoisted_9, 2))\n ], 10, _hoisted_7)),\n _withDirectives(_createElementVNode(\"div\", {\n id: `${id.value}Menu`,\n ref_key: \"selectMenuEl\",\n ref: selectMenuEl,\n class: _normalizeClass([_ctx.menuCssClass, \"ds-absolute ds-z-50 ds-min-w-[8rem] ds-py-1\"]),\n \"data-cy\": _ctx.$attrs['data-cy'] ? `${_ctx.$attrs['data-cy']}Menu` : undefined,\n \"data-ut\": _ctx.$attrs['data-ut'] ? `${_ctx.$attrs['data-ut']}Menu` : undefined\n }, [\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"ul\", _hoisted_12, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.items, (item, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: `item${index}`,\n class: \"ds-cursor-pointer\",\n onClick: _withModifiers(($event: any) => (onClickItem(item)), [\"prevent\"])\n }, [\n _createElementVNode(\"a\", {\n class: _normalizeClass([\n item.cssClass +\n `${\n selectedItems.value.some((s) => s.value === item.value)\n ? ' ds-bg-slate-100'\n : ''\n }`\n , \"ds-flex ds-items-center ds-space-x-2 ds-px-4 ds-py-2 hover:ds-bg-slate-100\"])\n }, [\n _createVNode(BCheckbox, {\n modelValue: value.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((value).value = $event)),\n value: item.value,\n size: \"sm\"\n }, null, 8, [\"modelValue\", \"value\"]),\n _createElementVNode(\"span\", null, _toDisplayString(item?.text), 1)\n ], 2)\n ], 8, _hoisted_13))\n }), 128))\n ])\n ])\n ], 10, _hoisted_10), [\n [_vShow, selectMenu.value]\n ])\n ], 512),\n (!_ctx.hideDetails)\n ? (_openBlock(), _createBlock(BErrorMessage, {\n key: 0,\n \"error-message\": _unref(validationResult).errorMessage(),\n class: \"ds-mt-1\"\n }, null, 8, [\"error-message\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_sfc_main","_defineComponent","__props","__expose","emit","props","selectEl","ref","inputRef","selectMenuEl","selectMenu","t","useI18n","validateRequired","val","inputText","selectedItems","id","computed","uuid","value","btnCssClass","result","validationResult","vRules","selectedItemCount","_a","_b","labelDisplay","validate","useValidationField","watch","lockScrollBody","ensureMenuPosition","unlockScrollBody","resetMenuPosition","ensureSelectedItems","v","item","i","initPressEscapeEventListener","closeOnEscapePressed","event","closeSelectMenu","initClickOutsideEventListener","closeOnClickOutside","r","onClickItem","index","nextTick","ensureMenuWidth","parentEl","menuEl","ensureVisiblePosition","resetPosition","onChangeInputText","text","deselectItem","onMounted","onBeforeUnmount","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_createVNode","BLabel","_normalizeClass","_unref","$event","_Fragment","_renderList","_toDisplayString","_createBlock","BTextField","_createCommentVNode","s","_createTextVNode","_withDirectives","_withModifiers","BCheckbox","_vShow","BErrorMessage"],"mappings":";;;;;;;;;AAGA,MAAMA,KAAa,EAAE,OAAO,qCACtBC,uBAA8C,QAAQ,EAAE,GAAG,mKAAmK,MAAM,EAAE,GACtOC,KAAa;AAAA,EACjBD;AACF,GACME,KAAa,CAAC,SAAS,GACvBC,uBAA8C,QAAQ,EAAE,GAAG,8RAA8R,MAAM,EAAE,GACjWC,KAAa;AAAA,EACjBD;AACF,GACME,KAAa,CAAC,MAAM,UAAU,GAC9BC,uBAA8C,QAAQ,EAAE,GAAG,mKAAmK,MAAM,EAAE,GACtOC,KAAa;AAAA,EACjBD;AACF,GACME,KAAc,CAAC,MAAM,WAAW,SAAS,GACzCC,KAAc,EAAE,OAAO,wEACvBC,KAAc,EAAE,OAAO,6CACvBC,KAAc,CAAC,SAAS,GA8DFC,KAAiBC,gBAAAA,GAAA;AAAA,EAC3C,QAAQ;AAAA,EACR,OAAO;AAAA,IACL,SAAS,EAAE,SAAS,GAAG;AAAA,IACvB,YAAY,CAAC;AAAA,IACb,OAAO,EAAE,SAAS,GAAG;AAAA,IACrB,OAAO,CAAC;AAAA,IACR,UAAU,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IAC1C,aAAa,EAAE,SAAS,GAAG;AAAA,IAC3B,eAAe,EAAE,SAAS,GAAG;AAAA,IAC7B,cAAc,EAAE,SAAS,GAAG;AAAA,IAC5B,iBAAiB,EAAE,SAAS,OAAU;AAAA,IACtC,UAAU,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IAC1C,sBAAsB,EAAE,SAAS,GAAG;AAAA,IACpC,aAAa,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IAC7C,uBAAuB,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,IACvD,YAAY,EAAE,MAAM,SAAS,SAAS,GAAM;AAAA,EAC9C;AAAA,EACA,OAAO,CAAC,UAAU,QAAQ,SAAS,gBAAgB,mBAAmB;AAAA,EACtE,MAAMC,GAAc,EAAE,QAAQC,GAAU,MAAAC,KAAQ;AAElD,UAAMC,IAAQH,GAWRI,IAAWC,EAAwB,IAAI,GACvCC,IAAWD,EAA4C,IAAI,GAC3DE,IAAeF,EAAwB,IAAI,GAC3CG,IAAaH,EAAI,EAAK,GACtB,EAAE,GAAAI,MAAMC,MACRC,IAAmC;AAAA,MACvC,cAAc,CAACC,MAAgC,CAAC,CAACA,KAAOA,EAAI,SAAS;AAAA,MACrE,cAAc,MACZT,EAAM,wBAAwBM,EAAE,0BAA0B;AAAA,IAAA,GAExDI,IAAYR,EAAI,EAAE,GAClBS,IAAgBT,EAAmB,CAAA,CAAE,GACrCU,IAAKC,EAAS,MAAMb,EAAM,WAAW,MAAMc,IAAM,EAAE,GACnDC,IAAQF,EAAS;AAAA,MACrB,MAAM;AACJ,eAAOb,EAAM;AAAA,MACf;AAAA,MACA,IAAIS,GAAK;AACP,QAAAV,EAAK,qBAAqBU,CAAG;AAAA,MAC/B;AAAA,IAAA,CACD,GACKO,IAAcH,EAAS,MAAM;AACjC,UAAII,IAAS;AACH,aAAAA,KAAAjB,EAAM,WACZ,+DACA,qCACJiB,KAAWC,EAAiB,MAAM,QAE9B,kFADA,wDAGGD;AAAA,IAAA,CACR,GACKE,IAASN,EAAS,MAAM;AAC5B,UAAII,IAA2B,CAAA;AAE/B,aAAIjB,EAAM,YACRiB,EAAO,KAAKT,CAAgB,GAE1BR,EAAM,oBACCiB,IAAAA,EAAO,OAAOjB,EAAM,eAAe,IAGvCiB,EAAO,SAASA,IAAS;AAAA,IAAA,CACjC,GACKG,IAAoBP;AAAA,MAAS,MACjC;;AAAA,iBAAAQ,IAAAN,EAAM,UAAN,gBAAAM,EAAa,UAAS,IAClB,KAAKf,EAAE,uDAAuD;AAAA,UAC5D,QAAOgB,IAAAP,EAAM,UAAN,gBAAAO,EAAa;AAAA,QAAA,CACrB,CAAC,MACF;AAAA;AAAA,IAAA,GAEAC,IAAeV;AAAA,MAAS,MAC5Bb,EAAM,wBACF,GAAGA,EAAM,KAAK,GAAGoB,EAAkB,KAAK,KACxCpB,EAAM;AAAA,IAAA,GAEN,EAAE,UAAAwB,GAAU,kBAAAN,EAAA,IAAqBO;AAAA,MACrCb,EAAG;AAAA,MACHG;AAAA,MACAI,EAAO;AAAA,IAAA;AAKH,IAAAO,EAAArB,GAAY,CAACI,MAAQ;AACzB,MAAIA,KACakB,MACIC,KACnB7B,EAAK,MAAM,MAEM8B,KACCC,KAClB/B,EAAK,OAAO;AAAA,IACd,CACD,GACD2B;AAAA,MACEX;AAAA,MACA,MAAM;AACgB,QAAAgB;MACtB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,MACR;AAAA,IAAA,GAEFL;AAAA,MACE,MAAM1B,EAAM;AAAA,MACZ,MAAM;AACJ,QAAIe,EAAM,MAAM,WAAW,KAAKJ,EAAc,MAAM,WAAW,KACzCoB;MAExB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,MACR;AAAA,IAAA;AAKF,UAAMA,IAAsB,MAAM;AAChC,MAAApB,EAAc,QAAQI,EAAM,MAAM,IAAI,CAACiB,MAAM;AACvC,YAAAC,IAAOtB,EAAc,MAAM,KAAK,CAACuB,MAAMA,EAAE,UAAUF,CAAC;AACxD,eAAKC,MACHA,IAAOjC,EAAM,MAAM,KAAK,CAACkC,MAAMA,EAAE,UAAUF,CAAC,IAEvC,EAAE,MAAMC,KAAA,gBAAAA,EAAM,MAAM,OAAOD,GAAG,UAAUC,KAAA,gBAAAA,EAAM;MAAS,CAC/D;AAAA,IAAA,GAEGE,IAA+B,MAAM;AAChC,eAAA,iBAAiB,WAAWC,CAAoB;AAAA,IAAA,GAErDA,IAAuB,CAACC,MAAyB;AACjD,MAAAA,EAAM,QAAQ,YACAC;IAClB,GAEIC,IAAgC,MAAM;AACjC,eAAA,iBAAiB,SAASC,CAAmB;AAAA,IAAA,GAElDA,IAAsB,CAACH,MAAe;AAG1C,MAFa,CAACpC,EAAS,OAAOG,EAAa,KAAK,EAClB,KAAK,CAACqC,MAAMJ,EAAM,eAAe,SAASI,CAAC,CAAC,KAExDH;IAClB,GAEII,IAAc,CAACT,MAAsB;AACnC,YAAAU,IAAQ5B,EAAM,MAAM,UAAU,CAACiB,MAAMA,MAAMC,EAAK,KAAK;AAC3D,MAAIU,MAAU,KACN5B,EAAA,MAAM,OAAO4B,GAAO,CAAC,IAErB5B,EAAA,MAAM,KAAKkB,EAAK,KAAK,GAExBlC,EAAA,UAAUkC,EAAK,KAAK,GACzBW,EAAS,MAAM;AACJ,QAAApB;MAAA,CACV;AAAA,IAAA,GAEGqB,IAAkB,CAACC,GAAuBC,MAAwB;AACtE,MAAAA,EAAO,MAAM,QAAQ,GAAGD,EAAS,WAAW;AAAA,IAAA,GAExClB,IAAqB,MAAM;AAC/B,MAAAgB,EAAS,MAAM;AACS,QAAAI,GAAA/C,EAAS,OAAQG,EAAa,KAAM,GAC1CyC,EAAA5C,EAAS,OAAQG,EAAa,KAAM;AAAA,MAAA,CACrD;AAAA,IAAA,GAEG0B,IAAoB,MAAM;AAChB,MAAAmB,GAAAhD,EAAS,OAAQG,EAAa,KAAM;AAAA,IAAA,GAE9C8C,IAAoB,CAACC,MAAiB;AAC1C,MAAApD,EAAK,gBAAgBoD,CAAI;AAAA,IAAA,GAErBb,IAAkB,MAAM;;AAC5B,MAAAjC,EAAW,QAAQ,KACnBgB,IAAAlB,EAAS,UAAT,QAAAkB,EAAgB,QAChBX,EAAU,QAAQ;AAAA,IAAA,GAEd0C,IAAe,CAACnB,MAAsB;AACpC,YAAAU,IAAQ5B,EAAM,MAAM,UAAU,CAACiB,MAAMA,MAAMC,EAAK,KAAK;AAC3D,MAAIU,MAAU,OACN5B,EAAA,MAAM,OAAO4B,GAAO,CAAC,GACtB5C,EAAA,UAAUkC,EAAK,KAAK,GACzBW,EAAS,MAAM;AACJ,QAAApB;MAAA,CACV;AAAA,IACH;AAOG,YALQ,MAAM;;AACb,QAAAH,IAAArB,EAAM,UAAN,gBAAAqB,EAAa,UAAS,KACJU;IACtB,MAMFsB,GAAU,MAAM;AACe,MAAAlB,KACCI;IAAA,CAC/B,GACDe,GAAgB,MAAM;AACX,eAAA,oBAAoB,WAAWlB,CAAoB,GACnD,SAAA,oBAAoB,SAASI,CAAmB,GACxCX,KAECC;IAAA,CACnB,GAGQhC,EAAA,EAAE,UAAA0B,GAAU,YAAAnB,EAAA,CAAY,GAE1B,CAACkD,GAAUC,MAAgB;;AAChC,aAAQC,EAAW,GAAGC,EAAoB,OAAO,MAAM;AAAA,QACrDC,EAAoB,OAAO;AAAA,UACzB,SAAS;AAAA,UACT,KAAK1D;AAAA,QAAA,GACJ;AAAA,UACD2D,EAAaC,IAAQ;AAAA,YACnB,IAAIjD,EAAG;AAAA,YACP,OAAOW,EAAa;AAAA,YACpB,UAAUgC,EAAK;AAAA,UAAA,GACd,MAAM,GAAG,CAAC,MAAM,SAAS,UAAU,CAAC;AAAA,UACtCvD,EAAM,cACFyD,KAAcC,EAAoB,OAAO;AAAA,YACxC,KAAK;AAAA,YACL,OAAOI,EAAgB,CAAC;AAAA,cAC1B,2CACEzD,EAAW,SAAS0D,EAAO7C,CAAgB,EAAE;AAAA,cAC/C,2BAA2Bb,EAAW,SAAS,CAAC0D,EAAO7C,CAAgB,EAAE;AAAA,cACzE,sBAAsB6C,EAAO7C,CAAgB,EAAE;AAAA,cAC/C,mBAAmB,CAAC6C,EAAO7C,CAAgB,EAAE;AAAA,YAC/C,GAAG,sIAAsI,CAAC;AAAA,UAAA,GACrI;AAAA,YACDyC,EAAoB,OAAO7E,IAAY;AAAA,eACpC2E,EAAc,GAAAC,EAAoB,OAAO;AAAA,gBACxC,OAAOI,EAAgB,CAAC,CAACzD,EAAW,QAAQ,kBAAkB,EAAE,GAAG,uCAAuC,CAAC;AAAA,gBAC3G,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,SAASmD,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAiB;;AAAA,0BAAA3C,IAAAlB,EAAS,UAAT,gBAAAkB,EAAgB;AAAA;AAAA,cAAM,GAC1ErC,IAAY,CAAC;AAAA,YAAA,CACjB;AAAA,aACAyE,EAAW,EAAI,GAAGC,EAAoBO,GAAW,MAAMC,EAAYvD,EAAc,OAAO,CAACsB,GAAMC,OACtFuB,EAAA,GAAcC,EAAoB,OAAO;AAAA,cAC/C,KAAK,OAAOxB,CAAC;AAAA,cACb,OAAO;AAAA,YAAA,GACN;AAAA,cACDyB,EAAoB,QAAQ,MAAMQ,EAAiBlC,EAAK,IAAI,GAAG,CAAC;AAAA,eAC/DwB,EAAc,GAAAC,EAAoB,OAAO;AAAA,gBACxC,OAAO;AAAA,gBACP,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,SAAS,CAACM,MAAiBZ,EAAanB,CAAI;AAAA,cAAA,GAC3C9C,IAAY,GAAGF,EAAU;AAAA,YAAA,CAC7B,EACF,GAAG,GAAG;AAAA,YACNe,EAAM,cACFyD,KAAcW,EAAaC,IAAY;AAAA,cACtC,KAAK;AAAA,cACL,IAAIzD,EAAG;AAAA,cACP,SAAS;AAAA,cACT,KAAKT;AAAA,cACL,YAAYO,EAAU;AAAA,cACtB,uBAAuB;AAAA,gBACrB8C,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAkBtD,EAAW,QAAQsD;AAAA,gBAChEd;AAAA,cACF;AAAA,cACA,UAAUlD,EAAM;AAAA,cAChB,OAAO;AAAA,cACP,gBAAgB;AAAA,cAChB,mBAAmB;AAAA,cACnB,SAASwD,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAiB3D,EAAW,QAAQ;AAAA,YAAA,GACvE,MAAM,GAAG,CAAC,MAAM,cAAc,UAAU,CAAC,KAC5CiE,EAAoB,IAAI,EAAI;AAAA,aAC/B,CAAC,MACHb,KAAcC,EAAoB,UAAU;AAAA,YAC3C,KAAK;AAAA,YACL,IAAI9C,EAAG;AAAA,YACP,OAAOkD,EAAgB9C,EAAY,KAAK;AAAA,YACxC,UAAUuC,EAAK;AAAA,YACf,MAAM;AAAA,YACN,SAASC,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAiB3D,EAAW,QAAQ,CAACA,EAAW;AAAA,UAAA,GACnF;AAAA,YACAM,EAAc,MAAM,SAAS,KACzB8C,EAAW,GAAGC,EAAoB,QAAQ;AAAA,cACzC,KAAK;AAAA,cACL,OAAOI,EAAgB,CAACP,EAAK,eAAe,wBAAwB,CAAC;AAAA,YAAA,GACpEY,GAAiB9C,IAAAV,EAAc,UAAd,gBAAAU,EAAqB,IAAI,CAACkD,MAAMA,EAAE,MAAM,KAAK,KAAK,GAAG,CAAC,MACzEd,EAAW,GAAGC,EAAoB,QAAQ;AAAA,cACzC,KAAK;AAAA,cACL,OAAOI,EAAgB,CAACP,EAAK,eAAe,4CAA4C,CAAC;AAAA,YACxF,GAAAY,EAAiBnE,EAAM,WAAW,GAAG,CAAC;AAAA,YAC7CwE,GAAiB,KAAK;AAAA,aACrBf,EAAc,GAAAC,EAAoB,OAAO;AAAA,cACxC,OAAOI,EAAgB,CAAC,CAACzD,EAAW,QAAQ,kBAAkB,EAAE,GAAG,uCAAuC,CAAC;AAAA,cAC3G,SAAS;AAAA,cACT,OAAO;AAAA,YAAA,GACNf,IAAY,CAAC;AAAA,UAAA,GACf,IAAIF,EAAU;AAAA,UACrBqF,GAAgBd,EAAoB,OAAO;AAAA,YACzC,IAAI,GAAG/C,EAAG,KAAK;AAAA,YACf,SAAS;AAAA,YACT,KAAKR;AAAA,YACL,OAAO0D,EAAgB,CAACP,EAAK,cAAc,6CAA6C,CAAC;AAAA,YACzF,WAAWA,EAAK,OAAO,SAAS,IAAI,GAAGA,EAAK,OAAO,SAAS,CAAC,SAAS;AAAA,YACtE,WAAWA,EAAK,OAAO,SAAS,IAAI,GAAGA,EAAK,OAAO,SAAS,CAAC,SAAS;AAAA,UAAA,GACrE;AAAA,YACDI,EAAoB,OAAOnE,IAAa;AAAA,cACtCmE,EAAoB,MAAMlE,IAAa;AAAA,iBACpCgE,EAAW,EAAI,GAAGC,EAAoBO,GAAW,MAAMC,EAAYX,EAAK,OAAO,CAACtB,GAAMU,OAC7Ec,EAAA,GAAcC,EAAoB,MAAM;AAAA,kBAC9C,KAAK,OAAOf,CAAK;AAAA,kBACjB,OAAO;AAAA,kBACP,SAAS+B,GAAe,CAACV,MAAiBtB,EAAYT,CAAI,GAAI,CAAC,SAAS,CAAC;AAAA,gBAAA,GACxE;AAAA,kBACD0B,EAAoB,KAAK;AAAA,oBACvB,OAAOG,EAAgB;AAAA,sBACvB7B,EAAK,WACL,GACEtB,EAAc,MAAM,KAAK,CAAC4D,MAAMA,EAAE,UAAUtC,EAAK,KAAK,IAClD,qBACA,EACN;AAAA,sBACA;AAAA,oBAAA,CAA6E;AAAA,kBAAA,GAC5E;AAAA,oBACD2B,EAAae,IAAW;AAAA,sBACtB,YAAY5D,EAAM;AAAA,sBAClB,uBAAuByC,EAAO,CAAC,MAAMA,EAAO,CAAC,IAAI,CAACQ,MAAkBjD,EAAO,QAAQiD;AAAA,sBACnF,OAAO/B,EAAK;AAAA,sBACZ,MAAM;AAAA,uBACL,MAAM,GAAG,CAAC,cAAc,OAAO,CAAC;AAAA,oBACnC0B,EAAoB,QAAQ,MAAMQ,EAAiBlC,KAAA,gBAAAA,EAAM,IAAI,GAAG,CAAC;AAAA,qBAChE,CAAC;AAAA,gBAAA,GACH,GAAGvC,EAAW,EAClB,GAAG,GAAG;AAAA,cAAA,CACR;AAAA,YAAA,CACF;AAAA,UAAA,GACA,IAAIH,EAAW,GAAG;AAAA,YACnB,CAACqF,IAAQvE,EAAW,KAAK;AAAA,UAAA,CAC1B;AAAA,WACA,GAAG;AAAA,QACJkD,EAAK,cAMHe,EAAoB,IAAI,EAAI,KAL3Bb,EAAW,GAAGW,EAAaS,IAAe;AAAA,UACzC,KAAK;AAAA,UACL,iBAAiBd,EAAO7C,CAAgB,EAAE,aAAa;AAAA,UACvD,OAAO;AAAA,QAAA,GACN,MAAM,GAAG,CAAC,eAAe,CAAC;AAAA,MACD,CACjC;AAAA,IAAA;AAAA,EAEH;AAEA,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("vue"),A=require("./design-system29.js"),K=require("./design-system3.js"),P=require("./design-system48.js"),N=require("./design-system98.js"),$=require("./design-system93.js"),L=require("./design-system99.js"),S={class:"ds-flex ds-items-center ds-justify-center ds-space-x-2"},W=t.defineComponent({__name:"BOtpField",props:{inputId:{default:""},modelValue:{default:""},numInputs:{default:6},focusIndex:{default:void 0},disabled:{type:Boolean,default:!1},inputCssClass:{default:""},validationRules:{default:void 0},required:{type:Boolean,default:!1},requiredErrorMessage:{default:""},hideDetails:{type:Boolean,default:!1}},emits:["complete","change","update:focusIndex","update:modelValue"],setup(b,{expose:k,emit:l}){const s=b,{t:B}=P.useI18n(),O={validateRule:e=>!!e,errorMessage:()=>s.requiredErrorMessage||B("ds.global.field_required")},i=t.ref(0),p=t.ref([]),f=t.ref(null),x=e=>{u.value=e},q=()=>{u.value=-1},y=t.computed(()=>s.inputId||`id-${$()}`),n=t.computed({get(){return s.modelValue.split("")},set(e){l("update:modelValue",e.join(""))}}),C=t.computed(()=>s.modelValue),u=t.computed({get(){return s.focusIndex!==void 0?s.focusIndex:i.value},set(e){s.focusIndex!==void 0?l("update:focusIndex",e):i.value=e}}),D=t.computed(()=>{let e=[];return s.required&&e.push(O),s.validationRules&&(e=e.concat(s.validationRules)),e.length?e:void 0}),V=t.computed(()=>[s.disabled?"ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4]":"ds-text-black/[0.85]",m.value.valid?"ds-border-black/[0.1] focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus":"ds-border-error focus:ds-ring-1 focus:ds-ring-error",s.inputCssClass]),{validate:v,validationResult:m}=K.useValidationField(y.value,C,D.value),R=()=>{f.value[u.value].focus()},h=()=>n.value.join("").length===s.numInputs?l("complete",n.value.join("")):"Wait until the user enters the required number of characters",c=e=>{u.value=Math.max(Math.min(s.numInputs-1,e),0)},g=()=>{c(u.value+1)},I=()=>{c(u.value-1)},d=e=>{p.value=[...n.value],n.value[u.value]=e,n.value=L(n.value);const o=p.value.join(""),r=n.value.join("");o!==r&&(l("change",r),h())},F=e=>{e.preventDefault();const o=e.clipboardData.getData("text/plain").slice(0,s.numInputs-u.value).split("");if(!o.join("").match(/^\d+$/))return"Invalid pasted data";const a=n.value.slice(0,u.value).concat(o);return a.slice(0,s.numInputs).forEach((_,w)=>{n.value[w]=_}),c(a.slice(0,s.numInputs).length),l("update:modelValue",n.value.join("")),h()},j=e=>{d(e),g()},E=e=>{switch(e.key){case"Backspace":e.preventDefault(),d(""),I();break;case"Delete":e.preventDefault(),d("");break;case"ArrowLeft":e.preventDefault(),I();break;case"ArrowRight":e.preventDefault(),g();break}},M=()=>{v()};return k({validate:v,focus:R}),(e,o)=>(t.openBlock(),t.createElementBlock("div",null,[t.createElementVNode("div",S,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.numInputs,(r,a)=>(t.openBlock(),t.createBlock(N,{key:a,ref_for:!0,ref_key:"boxRefs",ref:f,class:t.normalizeClass(V.value),focus:u.value===a,"is-disabled":e.disabled,value:n.value[a],onOnChange:j,onOnKeydown:E,onOnKeyup:M,onOnPaste:F,onOnFocus:_=>x(a),onOnBlur:q},null,8,["class","focus","is-disabled","value","onOnFocus"]))),128))]),e.hideDetails?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(A,{key:0,"error-message":t.unref(m).errorMessage(),class:"ds-mt-1"},null,8,["error-message"]))]))}});module.exports=W;
1
+ "use strict";const t=require("vue"),A=require("./design-system29.js"),K=require("./design-system3.js"),P=require("./design-system48.js"),N=require("./design-system99.js"),$=require("./design-system94.js"),L=require("./design-system100.js"),S={class:"ds-flex ds-items-center ds-justify-center ds-space-x-2"},W=t.defineComponent({__name:"BOtpField",props:{inputId:{default:""},modelValue:{default:""},numInputs:{default:6},focusIndex:{default:void 0},disabled:{type:Boolean,default:!1},inputCssClass:{default:""},validationRules:{default:void 0},required:{type:Boolean,default:!1},requiredErrorMessage:{default:""},hideDetails:{type:Boolean,default:!1}},emits:["complete","change","update:focusIndex","update:modelValue"],setup(b,{expose:k,emit:l}){const s=b,{t:B}=P.useI18n(),O={validateRule:e=>!!e,errorMessage:()=>s.requiredErrorMessage||B("ds.global.field_required")},i=t.ref(0),p=t.ref([]),f=t.ref(null),x=e=>{u.value=e},q=()=>{u.value=-1},y=t.computed(()=>s.inputId||`id-${$()}`),n=t.computed({get(){return s.modelValue.split("")},set(e){l("update:modelValue",e.join(""))}}),C=t.computed(()=>s.modelValue),u=t.computed({get(){return s.focusIndex!==void 0?s.focusIndex:i.value},set(e){s.focusIndex!==void 0?l("update:focusIndex",e):i.value=e}}),D=t.computed(()=>{let e=[];return s.required&&e.push(O),s.validationRules&&(e=e.concat(s.validationRules)),e.length?e:void 0}),V=t.computed(()=>[s.disabled?"ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4]":"ds-text-black/[0.85]",m.value.valid?"ds-border-black/[0.1] focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus":"ds-border-error focus:ds-ring-1 focus:ds-ring-error",s.inputCssClass]),{validate:v,validationResult:m}=K.useValidationField(y.value,C,D.value),R=()=>{f.value[u.value].focus()},h=()=>n.value.join("").length===s.numInputs?l("complete",n.value.join("")):"Wait until the user enters the required number of characters",c=e=>{u.value=Math.max(Math.min(s.numInputs-1,e),0)},g=()=>{c(u.value+1)},I=()=>{c(u.value-1)},d=e=>{p.value=[...n.value],n.value[u.value]=e,n.value=L(n.value);const o=p.value.join(""),r=n.value.join("");o!==r&&(l("change",r),h())},F=e=>{e.preventDefault();const o=e.clipboardData.getData("text/plain").slice(0,s.numInputs-u.value).split("");if(!o.join("").match(/^\d+$/))return"Invalid pasted data";const a=n.value.slice(0,u.value).concat(o);return a.slice(0,s.numInputs).forEach((_,w)=>{n.value[w]=_}),c(a.slice(0,s.numInputs).length),l("update:modelValue",n.value.join("")),h()},j=e=>{d(e),g()},E=e=>{switch(e.key){case"Backspace":e.preventDefault(),d(""),I();break;case"Delete":e.preventDefault(),d("");break;case"ArrowLeft":e.preventDefault(),I();break;case"ArrowRight":e.preventDefault(),g();break}},M=()=>{v()};return k({validate:v,focus:R}),(e,o)=>(t.openBlock(),t.createElementBlock("div",null,[t.createElementVNode("div",S,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.numInputs,(r,a)=>(t.openBlock(),t.createBlock(N,{key:a,ref_for:!0,ref_key:"boxRefs",ref:f,class:t.normalizeClass(V.value),focus:u.value===a,"is-disabled":e.disabled,value:n.value[a],onOnChange:j,onOnKeydown:E,onOnKeyup:M,onOnPaste:F,onOnFocus:_=>x(a),onOnBlur:q},null,8,["class","focus","is-disabled","value","onOnFocus"]))),128))]),e.hideDetails?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(A,{key:0,"error-message":t.unref(m).errorMessage(),class:"ds-mt-1"},null,8,["error-message"]))]))}});module.exports=W;
2
2
  //# sourceMappingURL=design-system19.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system19.js","sources":["../src/components/BOtpField/BOtpField.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createElementVNode as _createElementVNode, unref as _unref, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"ds-flex ds-items-center ds-justify-center ds-space-x-2\" }\n\nimport BErrorMessage from '@/components/BErrorMessage.vue';\nimport {\n useValidationField,\n type ValidationRule,\n} from '@/composables/Validation';\nimport { cloneDeep } from 'lodash-es';\nimport { v4 as uuid } from 'uuid';\nimport { computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport BOtpFieldBox from './BOtpFieldBox.vue';\n\n//#region Props\nexport interface BOtpFieldProps {\n inputId?: string;\n modelValue: string;\n /**\n * Number of input boxes.\n */\n numInputs?: number;\n /**\n * Index of input box to be focused.\n */\n focusIndex?: number;\n disabled?: boolean;\n inputCssClass?: string | {};\n /**\n * Array of custom validation rules.\n */\n validationRules?: ValidationRule[];\n /**\n * Validate if the field is left empty.\n */\n required?: boolean;\n requiredErrorMessage?: string;\n /**\n * Hide the validation error message.\n */\n hideDetails?: boolean;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BOtpField',\n props: {\n inputId: { default: '' },\n modelValue: { default: '' },\n numInputs: { default: 6 },\n focusIndex: { default: undefined },\n disabled: { type: Boolean, default: false },\n inputCssClass: { default: '' },\n validationRules: { default: undefined },\n required: { type: Boolean, default: false },\n requiredErrorMessage: { default: '' },\n hideDetails: { type: Boolean, default: false }\n },\n emits: [\"complete\", \"change\", \"update:focusIndex\", \"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\n// Sourcecode: https://github.com/ejirocodes/vue3-otp-input\n\n//#endregion\n\n//#region Events\n\n//#endregion\n\n//#region Data\nconst { t } = useI18n();\nconst validateRequired: ValidationRule = {\n validateRule: (val: string) => !!val,\n errorMessage: () =>\n props.requiredErrorMessage || t('ds.global.field_required'),\n};\nconst fIndex = ref(0);\nconst oldOtp = ref<any[]>([]);\nconst boxRefs = ref<Array<InstanceType<typeof BOtpFieldBox>> | null>(null);\nconst handleOnFocus = (index: number) => {\n focusIndexValue.value = index;\n};\nconst handleOnBlur = () => {\n focusIndexValue.value = -1;\n};\nconst id = computed(() => props.inputId || `id-${uuid()}`);\nconst value = computed<any[]>({\n get() {\n return props.modelValue.split('');\n },\n set(val: any) {\n emit('update:modelValue', val.join(''));\n },\n});\nconst originalValue = computed(() => props.modelValue);\nconst focusIndexValue = computed({\n get() {\n return props.focusIndex !== undefined ? props.focusIndex : fIndex.value;\n },\n set(val: number) {\n if (props.focusIndex !== undefined) {\n emit('update:focusIndex', val);\n } else {\n fIndex.value = val;\n }\n },\n});\nconst vRules = computed(() => {\n let result: ValidationRule[] = [];\n\n if (props.required) {\n result.push(validateRequired);\n }\n if (props.validationRules) {\n result = result.concat(props.validationRules);\n }\n\n return result.length ? result : undefined;\n});\nconst inputCssClassValue = computed(() => [\n ...[\n props.disabled\n ? 'ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4]'\n : 'ds-text-black/[0.85]',\n validationResult.value.valid\n ? 'ds-border-black/[0.1] focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus'\n : 'ds-border-error focus:ds-ring-1 focus:ds-ring-error',\n ],\n props.inputCssClass,\n]);\n\nconst { validate, validationResult } = useValidationField(\n id.value,\n originalValue,\n vRules.value,\n);\n//#endregion\n\n//#region Methods\nconst focus = () => {\n boxRefs.value![focusIndexValue.value].focus();\n};\nconst checkFilledAllInputs = () => {\n if (value.value.join('').length === props.numInputs) {\n return emit('complete', value.value.join(''));\n }\n return 'Wait until the user enters the required number of characters';\n};\n// Focus on input by index\nconst focusInput = (input: number) => {\n focusIndexValue.value = Math.max(Math.min(props.numInputs - 1, input), 0);\n};\n// Focus on next input\nconst focusNextInput = () => {\n focusInput(focusIndexValue.value + 1);\n};\n// Focus on previous input\nconst focusPrevInput = () => {\n focusInput(focusIndexValue.value - 1);\n};\n// Change OTP value at focused input\nconst changeCodeAtFocus = (val: number | string) => {\n oldOtp.value = [...value.value];\n\n value.value[focusIndexValue.value] = val;\n value.value = cloneDeep(value.value);\n\n const oldOtpStr = oldOtp.value.join('');\n const otpStr = value.value.join('');\n if (oldOtpStr !== otpStr) {\n emit('change', otpStr);\n checkFilledAllInputs();\n }\n};\n// Handle pasted OTP\nconst handleOnPaste = (event: any) => {\n event.preventDefault();\n const pastedData = event.clipboardData\n .getData('text/plain')\n .slice(0, props.numInputs - focusIndexValue.value)\n .split('');\n if (!pastedData.join('').match(/^\\d+$/)) {\n return 'Invalid pasted data';\n }\n\n // Paste data from focused input onwards\n const currentCharsInOtp = value.value.slice(0, focusIndexValue.value);\n const combinedWithPastedData = currentCharsInOtp.concat(pastedData);\n\n combinedWithPastedData.slice(0, props.numInputs).forEach((val, i) => {\n value.value[i] = val;\n });\n\n focusInput(combinedWithPastedData.slice(0, props.numInputs).length);\n\n // Update modelValue when data is pasted from keyboard\n emit('update:modelValue', value.value.join(''));\n // Check if `complete`\n return checkFilledAllInputs();\n};\nconst handleOnChange = (val: string) => {\n changeCodeAtFocus(val);\n focusNextInput();\n};\n// Handle cases of backspace, delete, left arrow, right arrow\nconst handleOnKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Backspace':\n event.preventDefault();\n changeCodeAtFocus('');\n focusPrevInput();\n break;\n case 'Delete':\n event.preventDefault();\n changeCodeAtFocus('');\n break;\n case 'ArrowLeft':\n event.preventDefault();\n focusPrevInput();\n break;\n case 'ArrowRight':\n event.preventDefault();\n focusNextInput();\n break;\n default:\n break;\n }\n};\nconst handleOnKeyUp = () => {\n validate();\n};\n//#endregion\n\n__expose({ validate, focus });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.numInputs, (_, i) => {\n return (_openBlock(), _createBlock(BOtpFieldBox, {\n key: i,\n ref_for: true,\n ref_key: \"boxRefs\",\n ref: boxRefs,\n class: _normalizeClass(inputCssClassValue.value),\n focus: focusIndexValue.value === i,\n \"is-disabled\": _ctx.disabled,\n value: value.value[i],\n onOnChange: handleOnChange,\n onOnKeydown: handleOnKeyDown,\n onOnKeyup: handleOnKeyUp,\n onOnPaste: handleOnPaste,\n onOnFocus: ($event: any) => (handleOnFocus(i)),\n onOnBlur: handleOnBlur\n }, null, 8, [\"class\", \"focus\", \"is-disabled\", \"value\", \"onOnFocus\"]))\n }), 128))\n ]),\n (!_ctx.hideDetails)\n ? (_openBlock(), _createBlock(BErrorMessage, {\n key: 0,\n \"error-message\": _unref(validationResult).errorMessage(),\n class: \"ds-mt-1\"\n }, null, 8, [\"error-message\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})"],"names":["_hoisted_1","_sfc_main","_defineComponent","__props","__expose","emit","props","t","useI18n","validateRequired","val","fIndex","ref","oldOtp","boxRefs","handleOnFocus","index","focusIndexValue","handleOnBlur","id","computed","uuid","value","originalValue","vRules","result","inputCssClassValue","validationResult","validate","useValidationField","focus","checkFilledAllInputs","focusInput","input","focusNextInput","focusPrevInput","changeCodeAtFocus","cloneDeep","oldOtpStr","otpStr","handleOnPaste","event","pastedData","combinedWithPastedData","i","handleOnChange","handleOnKeyDown","handleOnKeyUp","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_","_createBlock","BOtpFieldBox","_normalizeClass","$event","_createCommentVNode","BErrorMessage","_unref"],"mappings":"+OAGMA,EAAa,CAAE,MAAO,0DA2CAC,EAAiBC,kBAAA,CAC3C,OAAQ,YACR,MAAO,CACL,QAAS,CAAE,QAAS,EAAG,EACvB,WAAY,CAAE,QAAS,EAAG,EAC1B,UAAW,CAAE,QAAS,CAAE,EACxB,WAAY,CAAE,QAAS,MAAU,EACjC,SAAU,CAAE,KAAM,QAAS,QAAS,EAAM,EAC1C,cAAe,CAAE,QAAS,EAAG,EAC7B,gBAAiB,CAAE,QAAS,MAAU,EACtC,SAAU,CAAE,KAAM,QAAS,QAAS,EAAM,EAC1C,qBAAsB,CAAE,QAAS,EAAG,EACpC,YAAa,CAAE,KAAM,QAAS,QAAS,EAAM,CAC/C,EACA,MAAO,CAAC,WAAY,SAAU,oBAAqB,mBAAmB,EACtE,MAAMC,EAAc,CAAE,OAAQC,EAAU,KAAAC,GAAQ,CAElD,MAAMC,EAAQH,EAWR,CAAE,EAAAI,GAAMC,EAAAA,UACRC,EAAmC,CACvC,aAAeC,GAAgB,CAAC,CAACA,EACjC,aAAc,IACZJ,EAAM,sBAAwBC,EAAE,0BAA0B,CAAA,EAExDI,EAASC,MAAI,CAAC,EACdC,EAASD,MAAW,CAAA,CAAE,EACtBE,EAAUF,MAAqD,IAAI,EACnEG,EAAiBC,GAAkB,CACvCC,EAAgB,MAAQD,CAAA,EAEpBE,EAAe,IAAM,CACzBD,EAAgB,MAAQ,EAAA,EAEpBE,EAAKC,WAAS,IAAMd,EAAM,SAAW,MAAMe,GAAM,EAAE,EACnDC,EAAQF,EAAAA,SAAgB,CAC5B,KAAM,CACG,OAAAd,EAAM,WAAW,MAAM,EAAE,CAClC,EACA,IAAII,EAAU,CACZL,EAAK,oBAAqBK,EAAI,KAAK,EAAE,CAAC,CACxC,CAAA,CACD,EACKa,EAAgBH,EAAA,SAAS,IAAMd,EAAM,UAAU,EAC/CW,EAAkBG,EAAAA,SAAS,CAC/B,KAAM,CACJ,OAAOd,EAAM,aAAe,OAAYA,EAAM,WAAaK,EAAO,KACpE,EACA,IAAID,EAAa,CACXJ,EAAM,aAAe,OACvBD,EAAK,oBAAqBK,CAAG,EAE7BC,EAAO,MAAQD,CAEnB,CAAA,CACD,EACKc,EAASJ,EAAAA,SAAS,IAAM,CAC5B,IAAIK,EAA2B,CAAA,EAE/B,OAAInB,EAAM,UACRmB,EAAO,KAAKhB,CAAgB,EAE1BH,EAAM,kBACCmB,EAAAA,EAAO,OAAOnB,EAAM,eAAe,GAGvCmB,EAAO,OAASA,EAAS,MAAA,CACjC,EACKC,EAAqBN,EAAAA,SAAS,IAAM,CAEtCd,EAAM,SACF,4DACA,uBACJqB,EAAiB,MAAM,MACnB,kFACA,sDAENrB,EAAM,aAAA,CACP,EAEK,CAAE,SAAAsB,EAAU,iBAAAD,CAAA,EAAqBE,EAAA,mBACrCV,EAAG,MACHI,EACAC,EAAO,KAAA,EAKHM,EAAQ,IAAM,CAClBhB,EAAQ,MAAOG,EAAgB,KAAK,EAAE,MAAM,CAAA,EAExCc,EAAuB,IACvBT,EAAM,MAAM,KAAK,EAAE,EAAE,SAAWhB,EAAM,UACjCD,EAAK,WAAYiB,EAAM,MAAM,KAAK,EAAE,CAAC,EAEvC,+DAGHU,EAAcC,GAAkB,CACpBhB,EAAA,MAAQ,KAAK,IAAI,KAAK,IAAIX,EAAM,UAAY,EAAG2B,CAAK,EAAG,CAAC,CAAA,EAGpEC,EAAiB,IAAM,CAChBF,EAAAf,EAAgB,MAAQ,CAAC,CAAA,EAGhCkB,EAAiB,IAAM,CAChBH,EAAAf,EAAgB,MAAQ,CAAC,CAAA,EAGhCmB,EAAqB1B,GAAyB,CAClDG,EAAO,MAAQ,CAAC,GAAGS,EAAM,KAAK,EAExBA,EAAA,MAAML,EAAgB,KAAK,EAAIP,EAC/BY,EAAA,MAAQe,EAAUf,EAAM,KAAK,EAEnC,MAAMgB,EAAYzB,EAAO,MAAM,KAAK,EAAE,EAChC0B,EAASjB,EAAM,MAAM,KAAK,EAAE,EAC9BgB,IAAcC,IAChBlC,EAAK,SAAUkC,CAAM,EACAR,IACvB,EAGIS,EAAiBC,GAAe,CACpCA,EAAM,eAAe,EACrB,MAAMC,EAAaD,EAAM,cACtB,QAAQ,YAAY,EACpB,MAAM,EAAGnC,EAAM,UAAYW,EAAgB,KAAK,EAChD,MAAM,EAAE,EACX,GAAI,CAACyB,EAAW,KAAK,EAAE,EAAE,MAAM,OAAO,EAC7B,MAAA,sBAKH,MAAAC,EADoBrB,EAAM,MAAM,MAAM,EAAGL,EAAgB,KAAK,EACnB,OAAOyB,CAAU,EAE3C,OAAAC,EAAA,MAAM,EAAGrC,EAAM,SAAS,EAAE,QAAQ,CAACI,EAAKkC,IAAM,CAC7DtB,EAAA,MAAMsB,CAAC,EAAIlC,CAAA,CAClB,EAEDsB,EAAWW,EAAuB,MAAM,EAAGrC,EAAM,SAAS,EAAE,MAAM,EAGlED,EAAK,oBAAqBiB,EAAM,MAAM,KAAK,EAAE,CAAC,EAEvCS,EAAqB,CAAA,EAExBc,EAAkBnC,GAAgB,CACtC0B,EAAkB1B,CAAG,EACNwB,GAAA,EAGXY,EAAmBL,GAAyB,CAChD,OAAQA,EAAM,IAAK,CACjB,IAAK,YACHA,EAAM,eAAe,EACrBL,EAAkB,EAAE,EACLD,IACf,MACF,IAAK,SACHM,EAAM,eAAe,EACrBL,EAAkB,EAAE,EACpB,MACF,IAAK,YACHK,EAAM,eAAe,EACNN,IACf,MACF,IAAK,aACHM,EAAM,eAAe,EACNP,IACf,KAGJ,CAAA,EAEIa,EAAgB,IAAM,CACjBnB,GAAA,EAIF,OAAAxB,EAAA,CAAE,SAAAwB,EAAU,MAAAE,CAAA,CAAO,EAErB,CAACkB,EAAUC,KACRC,YAAW,EAAGC,qBAAoB,MAAO,KAAM,CACrDC,EAAA,mBAAoB,MAAOpD,EAAY,EACpCkD,EAAAA,UAAW,EAAI,EAAGC,EAAoB,mBAAAE,WAAW,KAAMC,EAAA,WAAYN,EAAK,UAAW,CAACO,EAAGX,KAC9EM,EAAA,UAAA,EAAcM,EAAA,YAAaC,EAAc,CAC/C,IAAKb,EACL,QAAS,GACT,QAAS,UACT,IAAK9B,EACL,MAAO4C,EAAAA,eAAgBhC,EAAmB,KAAK,EAC/C,MAAOT,EAAgB,QAAU2B,EACjC,cAAeI,EAAK,SACpB,MAAO1B,EAAM,MAAMsB,CAAC,EACpB,WAAYC,EACZ,YAAaC,EACb,UAAWC,EACX,UAAWP,EACX,UAAYmB,GAAiB5C,EAAc6B,CAAC,EAC5C,SAAU1B,CAAA,EACT,KAAM,EAAG,CAAC,QAAS,QAAS,cAAe,QAAS,WAAW,CAAC,EACpE,EAAG,GAAG,EAAA,CACR,EACC8B,EAAK,YAMHY,EAAoB,mBAAA,GAAI,EAAI,GAL3BV,EAAW,UAAA,EAAGM,EAAAA,YAAaK,EAAe,CACzC,IAAK,EACL,gBAAiBC,EAAA,MAAOnC,CAAgB,EAAE,aAAa,EACvD,MAAO,SAAA,EACN,KAAM,EAAG,CAAC,eAAe,CAAC,EACD,CACjC,EAEH,CAEA,CAAC"}
1
+ {"version":3,"file":"design-system19.js","sources":["../src/components/BOtpField/BOtpField.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createElementVNode as _createElementVNode, unref as _unref, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"ds-flex ds-items-center ds-justify-center ds-space-x-2\" }\n\nimport BErrorMessage from '@/components/BErrorMessage.vue';\nimport {\n useValidationField,\n type ValidationRule,\n} from '@/composables/Validation';\nimport { cloneDeep } from 'lodash-es';\nimport { v4 as uuid } from 'uuid';\nimport { computed, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport BOtpFieldBox from './BOtpFieldBox.vue';\n\n//#region Props\nexport interface BOtpFieldProps {\n inputId?: string;\n modelValue: string;\n /**\n * Number of input boxes.\n */\n numInputs?: number;\n /**\n * Index of input box to be focused.\n */\n focusIndex?: number;\n disabled?: boolean;\n inputCssClass?: string | {};\n /**\n * Array of custom validation rules.\n */\n validationRules?: ValidationRule[];\n /**\n * Validate if the field is left empty.\n */\n required?: boolean;\n requiredErrorMessage?: string;\n /**\n * Hide the validation error message.\n */\n hideDetails?: boolean;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BOtpField',\n props: {\n inputId: { default: '' },\n modelValue: { default: '' },\n numInputs: { default: 6 },\n focusIndex: { default: undefined },\n disabled: { type: Boolean, default: false },\n inputCssClass: { default: '' },\n validationRules: { default: undefined },\n required: { type: Boolean, default: false },\n requiredErrorMessage: { default: '' },\n hideDetails: { type: Boolean, default: false }\n },\n emits: [\"complete\", \"change\", \"update:focusIndex\", \"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\n// Sourcecode: https://github.com/ejirocodes/vue3-otp-input\n\n//#endregion\n\n//#region Events\n\n//#endregion\n\n//#region Data\nconst { t } = useI18n();\nconst validateRequired: ValidationRule = {\n validateRule: (val: string) => !!val,\n errorMessage: () =>\n props.requiredErrorMessage || t('ds.global.field_required'),\n};\nconst fIndex = ref(0);\nconst oldOtp = ref<any[]>([]);\nconst boxRefs = ref<Array<InstanceType<typeof BOtpFieldBox>> | null>(null);\nconst handleOnFocus = (index: number) => {\n focusIndexValue.value = index;\n};\nconst handleOnBlur = () => {\n focusIndexValue.value = -1;\n};\nconst id = computed(() => props.inputId || `id-${uuid()}`);\nconst value = computed<any[]>({\n get() {\n return props.modelValue.split('');\n },\n set(val: any) {\n emit('update:modelValue', val.join(''));\n },\n});\nconst originalValue = computed(() => props.modelValue);\nconst focusIndexValue = computed({\n get() {\n return props.focusIndex !== undefined ? props.focusIndex : fIndex.value;\n },\n set(val: number) {\n if (props.focusIndex !== undefined) {\n emit('update:focusIndex', val);\n } else {\n fIndex.value = val;\n }\n },\n});\nconst vRules = computed(() => {\n let result: ValidationRule[] = [];\n\n if (props.required) {\n result.push(validateRequired);\n }\n if (props.validationRules) {\n result = result.concat(props.validationRules);\n }\n\n return result.length ? result : undefined;\n});\nconst inputCssClassValue = computed(() => [\n ...[\n props.disabled\n ? 'ds-cursor-not-allowed ds-bg-[#f2f2f2] ds-text-black/[0.4]'\n : 'ds-text-black/[0.85]',\n validationResult.value.valid\n ? 'ds-border-black/[0.1] focus:ds-border-focus focus:ds-ring-1 focus:ds-ring-focus'\n : 'ds-border-error focus:ds-ring-1 focus:ds-ring-error',\n ],\n props.inputCssClass,\n]);\n\nconst { validate, validationResult } = useValidationField(\n id.value,\n originalValue,\n vRules.value,\n);\n//#endregion\n\n//#region Methods\nconst focus = () => {\n boxRefs.value![focusIndexValue.value].focus();\n};\nconst checkFilledAllInputs = () => {\n if (value.value.join('').length === props.numInputs) {\n return emit('complete', value.value.join(''));\n }\n return 'Wait until the user enters the required number of characters';\n};\n// Focus on input by index\nconst focusInput = (input: number) => {\n focusIndexValue.value = Math.max(Math.min(props.numInputs - 1, input), 0);\n};\n// Focus on next input\nconst focusNextInput = () => {\n focusInput(focusIndexValue.value + 1);\n};\n// Focus on previous input\nconst focusPrevInput = () => {\n focusInput(focusIndexValue.value - 1);\n};\n// Change OTP value at focused input\nconst changeCodeAtFocus = (val: number | string) => {\n oldOtp.value = [...value.value];\n\n value.value[focusIndexValue.value] = val;\n value.value = cloneDeep(value.value);\n\n const oldOtpStr = oldOtp.value.join('');\n const otpStr = value.value.join('');\n if (oldOtpStr !== otpStr) {\n emit('change', otpStr);\n checkFilledAllInputs();\n }\n};\n// Handle pasted OTP\nconst handleOnPaste = (event: any) => {\n event.preventDefault();\n const pastedData = event.clipboardData\n .getData('text/plain')\n .slice(0, props.numInputs - focusIndexValue.value)\n .split('');\n if (!pastedData.join('').match(/^\\d+$/)) {\n return 'Invalid pasted data';\n }\n\n // Paste data from focused input onwards\n const currentCharsInOtp = value.value.slice(0, focusIndexValue.value);\n const combinedWithPastedData = currentCharsInOtp.concat(pastedData);\n\n combinedWithPastedData.slice(0, props.numInputs).forEach((val, i) => {\n value.value[i] = val;\n });\n\n focusInput(combinedWithPastedData.slice(0, props.numInputs).length);\n\n // Update modelValue when data is pasted from keyboard\n emit('update:modelValue', value.value.join(''));\n // Check if `complete`\n return checkFilledAllInputs();\n};\nconst handleOnChange = (val: string) => {\n changeCodeAtFocus(val);\n focusNextInput();\n};\n// Handle cases of backspace, delete, left arrow, right arrow\nconst handleOnKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Backspace':\n event.preventDefault();\n changeCodeAtFocus('');\n focusPrevInput();\n break;\n case 'Delete':\n event.preventDefault();\n changeCodeAtFocus('');\n break;\n case 'ArrowLeft':\n event.preventDefault();\n focusPrevInput();\n break;\n case 'ArrowRight':\n event.preventDefault();\n focusNextInput();\n break;\n default:\n break;\n }\n};\nconst handleOnKeyUp = () => {\n validate();\n};\n//#endregion\n\n__expose({ validate, focus });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.numInputs, (_, i) => {\n return (_openBlock(), _createBlock(BOtpFieldBox, {\n key: i,\n ref_for: true,\n ref_key: \"boxRefs\",\n ref: boxRefs,\n class: _normalizeClass(inputCssClassValue.value),\n focus: focusIndexValue.value === i,\n \"is-disabled\": _ctx.disabled,\n value: value.value[i],\n onOnChange: handleOnChange,\n onOnKeydown: handleOnKeyDown,\n onOnKeyup: handleOnKeyUp,\n onOnPaste: handleOnPaste,\n onOnFocus: ($event: any) => (handleOnFocus(i)),\n onOnBlur: handleOnBlur\n }, null, 8, [\"class\", \"focus\", \"is-disabled\", \"value\", \"onOnFocus\"]))\n }), 128))\n ]),\n (!_ctx.hideDetails)\n ? (_openBlock(), _createBlock(BErrorMessage, {\n key: 0,\n \"error-message\": _unref(validationResult).errorMessage(),\n class: \"ds-mt-1\"\n }, null, 8, [\"error-message\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})"],"names":["_hoisted_1","_sfc_main","_defineComponent","__props","__expose","emit","props","t","useI18n","validateRequired","val","fIndex","ref","oldOtp","boxRefs","handleOnFocus","index","focusIndexValue","handleOnBlur","id","computed","uuid","value","originalValue","vRules","result","inputCssClassValue","validationResult","validate","useValidationField","focus","checkFilledAllInputs","focusInput","input","focusNextInput","focusPrevInput","changeCodeAtFocus","cloneDeep","oldOtpStr","otpStr","handleOnPaste","event","pastedData","combinedWithPastedData","i","handleOnChange","handleOnKeyDown","handleOnKeyUp","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_","_createBlock","BOtpFieldBox","_normalizeClass","$event","_createCommentVNode","BErrorMessage","_unref"],"mappings":"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"}
@@ -2,9 +2,9 @@ import { defineComponent as N, ref as f, computed as l, openBlock as d, createEl
2
2
  import H from "./design-system29.mjs";
3
3
  import { useValidationField as J } from "./design-system3.mjs";
4
4
  import { useI18n as Q } from "./design-system48.mjs";
5
- import T from "./design-system98.mjs";
6
- import X from "./design-system93.mjs";
7
- import Y from "./design-system99.mjs";
5
+ import T from "./design-system99.mjs";
6
+ import X from "./design-system94.mjs";
7
+ import Y from "./design-system100.mjs";
8
8
  const Z = { class: "ds-flex ds-items-center ds-justify-center ds-space-x-2" }, ue = /* @__PURE__ */ N({
9
9
  __name: "BOtpField",
10
10
  props: {
@@ -1,2 +1,2 @@
1
- "use strict";const o=require("./design-system211.js"),a=require("./design-system212.js"),p=require("./design-system213.js"),l=require("./design-system214.js"),c=require("./design-system215.js");function e(t){var r=-1,h=t==null?0:t.length;for(this.clear();++r<h;){var s=t[r];this.set(s[0],s[1])}}e.prototype.clear=o;e.prototype.delete=a;e.prototype.get=p;e.prototype.has=l;e.prototype.set=c;module.exports=e;
1
+ "use strict";const o=require("./design-system212.js"),a=require("./design-system213.js"),p=require("./design-system214.js"),l=require("./design-system215.js"),c=require("./design-system216.js");function e(t){var r=-1,h=t==null?0:t.length;for(this.clear();++r<h;){var s=t[r];this.set(s[0],s[1])}}e.prototype.clear=o;e.prototype.delete=a;e.prototype.get=p;e.prototype.has=l;e.prototype.set=c;module.exports=e;
2
2
  //# sourceMappingURL=design-system202.js.map
@@ -1,8 +1,8 @@
1
- import p from "./design-system211.mjs";
2
- import a from "./design-system212.mjs";
3
- import l from "./design-system213.mjs";
4
- import s from "./design-system214.mjs";
5
- import m from "./design-system215.mjs";
1
+ import p from "./design-system212.mjs";
2
+ import a from "./design-system213.mjs";
3
+ import l from "./design-system214.mjs";
4
+ import s from "./design-system215.mjs";
5
+ import m from "./design-system216.mjs";
6
6
  function t(o) {
7
7
  var e = -1, h = o == null ? 0 : o.length;
8
8
  for (this.clear(); ++e < h; ) {
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("./design-system216.js");function s(r,t){var a=r.__data__;return e(t)?a[typeof t=="string"?"string":"hash"]:a.map}module.exports=s;
1
+ "use strict";const e=require("./design-system211.js");function s(r,t){var a=r.__data__;return e(t)?a[typeof t=="string"?"string":"hash"]:a.map}module.exports=s;
2
2
  //# sourceMappingURL=design-system203.js.map
@@ -1,4 +1,4 @@
1
- import e from "./design-system216.mjs";
1
+ import e from "./design-system211.mjs";
2
2
  function n(r, a) {
3
3
  var t = r.__data__;
4
4
  return e(a) ? t[typeof a == "string" ? "string" : "hash"] : t.map;
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),f=require("./design-system29.js"),g=require("./design-system3.js"),b=require("./design-system48.js"),y=require("./design-system93.js"),B={class:"ds-flex ds-items-center"},h=["id","disabled","name","value"],q=["for"],V=e.defineComponent({__name:"BRadio",props:{inputId:{default:""},modelValue:{type:[String,Number,Boolean],default:""},inputName:{default:""},label:{default:""},disabled:{type:Boolean,default:!1},labelCssClass:{default:""},hideDetails:{type:Boolean,default:!1},validationRules:{default:void 0},required:{type:Boolean,default:!1},requiredErrorMessage:{default:""}},emits:["change","update:modelValue"],setup(o,{emit:r}){const l=o,{t:u}=b.useI18n(),n={validateRule:a=>!!(a&&a.trim()),errorMessage:()=>l.requiredErrorMessage||u("ds.global.field_required")},s=e.computed(()=>l.inputId||`id-${y()}`),t=e.computed({get(){return l.modelValue},set(a){r("update:modelValue",a)}}),i=e.computed(()=>{let a=[];return l.required&&a.push(n),l.validationRules&&(a=a.concat(l.validationRules)),a.length?a:void 0}),{validate:m,validationResult:c}=g.useValidationField(s.value,t,i.value),p=()=>{r("change"),m()};return(a,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",B,[e.withDirectives(e.createElementVNode("input",{id:s.value,"onUpdate:modelValue":d[0]||(d[0]=v=>t.value=v),class:e.normalizeClass([{"ds-cursor-not-allowed":a.disabled},"ds-h-6 ds-min-h-[1.5rem] ds-w-6 ds-min-w-[1.5rem] ds-border-gray-300 ds-bg-gray-100 ds-text-primary-t focus:ds-ring-primary-t"]),disabled:a.disabled,name:a.inputName,value:a.$attrs.value,type:"radio",onChange:p},null,42,h),[[e.vModelRadio,t.value]]),a.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([a.labelCssClass,"ds-ml-2 ds-text-sm ds-font-medium ds-text-gray-900"]),for:s.value},e.toDisplayString(a.label),11,q)):e.createCommentVNode("",!0)]),a.hideDetails?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(f,{key:0,"error-message":e.unref(c).errorMessage(),class:"ds-mt-1"},null,8,["error-message"]))],64))}});module.exports=V;
1
+ "use strict";const e=require("vue"),f=require("./design-system29.js"),g=require("./design-system3.js"),b=require("./design-system48.js"),y=require("./design-system94.js"),B={class:"ds-flex ds-items-center"},h=["id","disabled","name","value"],q=["for"],V=e.defineComponent({__name:"BRadio",props:{inputId:{default:""},modelValue:{type:[String,Number,Boolean],default:""},inputName:{default:""},label:{default:""},disabled:{type:Boolean,default:!1},labelCssClass:{default:""},hideDetails:{type:Boolean,default:!1},validationRules:{default:void 0},required:{type:Boolean,default:!1},requiredErrorMessage:{default:""}},emits:["change","update:modelValue"],setup(o,{emit:r}){const l=o,{t:u}=b.useI18n(),n={validateRule:a=>!!(a&&a.trim()),errorMessage:()=>l.requiredErrorMessage||u("ds.global.field_required")},s=e.computed(()=>l.inputId||`id-${y()}`),t=e.computed({get(){return l.modelValue},set(a){r("update:modelValue",a)}}),i=e.computed(()=>{let a=[];return l.required&&a.push(n),l.validationRules&&(a=a.concat(l.validationRules)),a.length?a:void 0}),{validate:m,validationResult:c}=g.useValidationField(s.value,t,i.value),p=()=>{r("change"),m()};return(a,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",B,[e.withDirectives(e.createElementVNode("input",{id:s.value,"onUpdate:modelValue":d[0]||(d[0]=v=>t.value=v),class:e.normalizeClass([{"ds-cursor-not-allowed":a.disabled},"ds-h-6 ds-min-h-[1.5rem] ds-w-6 ds-min-w-[1.5rem] ds-border-gray-300 ds-bg-gray-100 ds-text-primary-t focus:ds-ring-primary-t"]),disabled:a.disabled,name:a.inputName,value:a.$attrs.value,type:"radio",onChange:p},null,42,h),[[e.vModelRadio,t.value]]),a.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([a.labelCssClass,"ds-ml-2 ds-text-sm ds-font-medium ds-text-gray-900"]),for:s.value},e.toDisplayString(a.label),11,q)):e.createCommentVNode("",!0)]),a.hideDetails?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(f,{key:0,"error-message":e.unref(c).errorMessage(),class:"ds-mt-1"},null,8,["error-message"]))],64))}});module.exports=V;
2
2
  //# sourceMappingURL=design-system21.js.map
@@ -2,7 +2,7 @@ import { defineComponent as R, computed as t, openBlock as d, createElementBlock
2
2
  import N from "./design-system29.mjs";
3
3
  import { useValidationField as _ } from "./design-system3.mjs";
4
4
  import { useI18n as w } from "./design-system48.mjs";
5
- import D from "./design-system93.mjs";
5
+ import D from "./design-system94.mjs";
6
6
  const E = { class: "ds-flex ds-items-center" }, I = ["id", "disabled", "name", "value"], $ = ["for"], A = /* @__PURE__ */ R({
7
7
  __name: "BRadio",
8
8
  props: {
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("./design-system218.js");function e(){this.__data__=t?t(null):{},this.size=0}module.exports=e;
1
+ "use strict";function r(o){var t=typeof o;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?o!=="__proto__":o===null}module.exports=r;
2
2
  //# sourceMappingURL=design-system211.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system211.js","sources":["../node_modules/lodash-es/_hashClear.js"],"sourcesContent":["import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n"],"names":["hashClear","nativeCreate"],"mappings":"sDASA,SAASA,GAAY,CACnB,KAAK,SAAWC,EAAeA,EAAa,IAAI,EAAI,CAAA,EACpD,KAAK,KAAO,CACd","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"design-system211.js","sources":["../node_modules/lodash-es/_isKeyable.js"],"sourcesContent":["/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n"],"names":["isKeyable","value","type"],"mappings":"aAOA,SAASA,EAAUC,EAAO,CACxB,IAAIC,EAAO,OAAOD,EAClB,OAAQC,GAAQ,UAAYA,GAAQ,UAAYA,GAAQ,UAAYA,GAAQ,UACvED,IAAU,YACVA,IAAU,IACjB","x_google_ignoreList":[0]}
@@ -1,6 +1,6 @@
1
- import t from "./design-system218.mjs";
2
- function e() {
3
- this.__data__ = t ? t(null) : {}, this.size = 0;
1
+ function e(t) {
2
+ var o = typeof t;
3
+ return o == "string" || o == "number" || o == "symbol" || o == "boolean" ? t !== "__proto__" : t === null;
4
4
  }
5
5
  export {
6
6
  e as default
@@ -1 +1 @@
1
- {"version":3,"file":"design-system211.mjs","sources":["../node_modules/lodash-es/_hashClear.js"],"sourcesContent":["import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n"],"names":["hashClear","nativeCreate"],"mappings":";AASA,SAASA,IAAY;AACnB,OAAK,WAAWC,IAAeA,EAAa,IAAI,IAAI,CAAA,GACpD,KAAK,OAAO;AACd;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"design-system211.mjs","sources":["../node_modules/lodash-es/_isKeyable.js"],"sourcesContent":["/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n"],"names":["isKeyable","value","type"],"mappings":"AAOA,SAASA,EAAUC,GAAO;AACxB,MAAIC,IAAO,OAAOD;AAClB,SAAQC,KAAQ,YAAYA,KAAQ,YAAYA,KAAQ,YAAYA,KAAQ,YACvED,MAAU,cACVA,MAAU;AACjB;","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";function s(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}module.exports=s;
1
+ "use strict";const t=require("./design-system218.js");function e(){this.__data__=t?t(null):{},this.size=0}module.exports=e;
2
2
  //# sourceMappingURL=design-system212.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system212.js","sources":["../node_modules/lodash-es/_hashDelete.js"],"sourcesContent":["/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n"],"names":["hashDelete","key","result"],"mappings":"aAUA,SAASA,EAAWC,EAAK,CACvB,IAAIC,EAAS,KAAK,IAAID,CAAG,GAAK,OAAO,KAAK,SAASA,CAAG,EACtD,YAAK,MAAQC,EAAS,EAAI,EACnBA,CACT","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"design-system212.js","sources":["../node_modules/lodash-es/_hashClear.js"],"sourcesContent":["import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n"],"names":["hashClear","nativeCreate"],"mappings":"sDASA,SAASA,GAAY,CACnB,KAAK,SAAWC,EAAeA,EAAa,IAAI,EAAI,CAAA,EACpD,KAAK,KAAO,CACd","x_google_ignoreList":[0]}
@@ -1,8 +1,8 @@
1
- function s(t) {
2
- var e = this.has(t) && delete this.__data__[t];
3
- return this.size -= e ? 1 : 0, e;
1
+ import t from "./design-system218.mjs";
2
+ function e() {
3
+ this.__data__ = t ? t(null) : {}, this.size = 0;
4
4
  }
5
5
  export {
6
- s as default
6
+ e as default
7
7
  };
8
8
  //# sourceMappingURL=design-system212.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system212.mjs","sources":["../node_modules/lodash-es/_hashDelete.js"],"sourcesContent":["/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n"],"names":["hashDelete","key","result"],"mappings":"AAUA,SAASA,EAAWC,GAAK;AACvB,MAAIC,IAAS,KAAK,IAAID,CAAG,KAAK,OAAO,KAAK,SAASA,CAAG;AACtD,cAAK,QAAQC,IAAS,IAAI,GACnBA;AACT;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"design-system212.mjs","sources":["../node_modules/lodash-es/_hashClear.js"],"sourcesContent":["import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n"],"names":["hashClear","nativeCreate"],"mappings":";AASA,SAASA,IAAY;AACnB,OAAK,WAAWC,IAAeA,EAAa,IAAI,IAAI,CAAA,GACpD,KAAK,OAAO;AACd;","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";const a=require("./design-system218.js");var n="__lodash_hash_undefined__",_=Object.prototype,o=_.hasOwnProperty;function d(r){var t=this.__data__;if(a){var e=t[r];return e===n?void 0:e}return o.call(t,r)?t[r]:void 0}module.exports=d;
1
+ "use strict";function s(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}module.exports=s;
2
2
  //# sourceMappingURL=design-system213.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system213.js","sources":["../node_modules/lodash-es/_hashGet.js"],"sourcesContent":["import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n"],"names":["HASH_UNDEFINED","objectProto","hasOwnProperty","hashGet","key","data","nativeCreate","result"],"mappings":"sDAGA,IAAIA,EAAiB,4BAGjBC,EAAc,OAAO,UAGrBC,EAAiBD,EAAY,eAWjC,SAASE,EAAQC,EAAK,CACpB,IAAIC,EAAO,KAAK,SAChB,GAAIC,EAAc,CAChB,IAAIC,EAASF,EAAKD,CAAG,EACrB,OAAOG,IAAWP,EAAiB,OAAYO,CAChD,CACD,OAAOL,EAAe,KAAKG,EAAMD,CAAG,EAAIC,EAAKD,CAAG,EAAI,MACtD","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"design-system213.js","sources":["../node_modules/lodash-es/_hashDelete.js"],"sourcesContent":["/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n"],"names":["hashDelete","key","result"],"mappings":"aAUA,SAASA,EAAWC,EAAK,CACvB,IAAIC,EAAS,KAAK,IAAID,CAAG,GAAK,OAAO,KAAK,SAASA,CAAG,EACtD,YAAK,MAAQC,EAAS,EAAI,EACnBA,CACT","x_google_ignoreList":[0]}
@@ -1,14 +1,8 @@
1
- import e from "./design-system218.mjs";
2
- var n = "__lodash_hash_undefined__", o = Object.prototype, _ = o.hasOwnProperty;
3
- function h(a) {
4
- var r = this.__data__;
5
- if (e) {
6
- var t = r[a];
7
- return t === n ? void 0 : t;
8
- }
9
- return _.call(r, a) ? r[a] : void 0;
1
+ function s(t) {
2
+ var e = this.has(t) && delete this.__data__[t];
3
+ return this.size -= e ? 1 : 0, e;
10
4
  }
11
5
  export {
12
- h as default
6
+ s as default
13
7
  };
14
8
  //# sourceMappingURL=design-system213.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system213.mjs","sources":["../node_modules/lodash-es/_hashGet.js"],"sourcesContent":["import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n"],"names":["HASH_UNDEFINED","objectProto","hasOwnProperty","hashGet","key","data","nativeCreate","result"],"mappings":";AAGA,IAAIA,IAAiB,6BAGjBC,IAAc,OAAO,WAGrBC,IAAiBD,EAAY;AAWjC,SAASE,EAAQC,GAAK;AACpB,MAAIC,IAAO,KAAK;AAChB,MAAIC,GAAc;AAChB,QAAIC,IAASF,EAAKD,CAAG;AACrB,WAAOG,MAAWP,IAAiB,SAAYO;AAAA,EAChD;AACD,SAAOL,EAAe,KAAKG,GAAMD,CAAG,IAAIC,EAAKD,CAAG,IAAI;AACtD;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"design-system213.mjs","sources":["../node_modules/lodash-es/_hashDelete.js"],"sourcesContent":["/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n"],"names":["hashDelete","key","result"],"mappings":"AAUA,SAASA,EAAWC,GAAK;AACvB,MAAIC,IAAS,KAAK,IAAID,CAAG,KAAK,OAAO,KAAK,SAASA,CAAG;AACtD,cAAK,QAAQC,IAAS,IAAI,GACnBA;AACT;","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";const a=require("./design-system218.js");var e=Object.prototype,o=e.hasOwnProperty;function n(t){var r=this.__data__;return a?r[t]!==void 0:o.call(r,t)}module.exports=n;
1
+ "use strict";const a=require("./design-system218.js");var n="__lodash_hash_undefined__",_=Object.prototype,o=_.hasOwnProperty;function d(r){var t=this.__data__;if(a){var e=t[r];return e===n?void 0:e}return o.call(t,r)?t[r]:void 0}module.exports=d;
2
2
  //# sourceMappingURL=design-system214.js.map