@leaflink/stash 53.4.0 → 53.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/Accordion.js +1 -1
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/ActionsDropdown.js +2 -2
  4. package/dist/ActionsDropdown.js.map +1 -1
  5. package/dist/AddressSelect.js.map +1 -1
  6. package/dist/AddressSelect.vue.d.ts +1 -1
  7. package/dist/Alert.js.map +1 -1
  8. package/dist/AppNavigationItem.js +1 -1
  9. package/dist/AppNavigationItem.js.map +1 -1
  10. package/dist/AppSidebar.js.map +1 -1
  11. package/dist/AppTopbar.js +1 -1
  12. package/dist/AppTopbar.js.map +1 -1
  13. package/dist/Avatar.js.map +1 -1
  14. package/dist/Badge.js.map +1 -1
  15. package/dist/Box.vue_vue_type_script_setup_true_lang-dFFZN40_.js.map +1 -1
  16. package/dist/Button.js.map +1 -1
  17. package/dist/ButtonGroup.js.map +1 -1
  18. package/dist/Card.js.map +1 -1
  19. package/dist/CardHeader.js.map +1 -1
  20. package/dist/CardMedia.js.map +1 -1
  21. package/dist/Carousel.js +169 -169
  22. package/dist/Carousel.js.map +1 -1
  23. package/dist/Checkbox.js +31 -31
  24. package/dist/Checkbox.js.map +1 -1
  25. package/dist/ChevronToggle.vue_vue_type_script_setup_true_lang-Ce_qOXfR.js.map +1 -1
  26. package/dist/Chip.js +21 -21
  27. package/dist/Chip.js.map +1 -1
  28. package/dist/Chip.vue.d.ts +1 -1
  29. package/dist/ConfirmationCodeInput.js +1 -1
  30. package/dist/ConfirmationCodeInput.js.map +1 -1
  31. package/dist/ContextSwitcher.js +28 -28
  32. package/dist/ContextSwitcher.js.map +1 -1
  33. package/dist/Copy.js +1 -1
  34. package/dist/Copy.js.map +1 -1
  35. package/dist/CurrencyInput.js +1 -1
  36. package/dist/CurrencyInput.js.map +1 -1
  37. package/dist/DataView.js +51 -51
  38. package/dist/DataView.js.map +1 -1
  39. package/dist/DataViewFilters.js.map +1 -1
  40. package/dist/DataViewSortButton.js +2 -2
  41. package/dist/DataViewSortButton.js.map +1 -1
  42. package/dist/DataViewToolbar.js +5 -5
  43. package/dist/DataViewToolbar.js.map +1 -1
  44. package/dist/DatePicker.js +237 -237
  45. package/dist/DatePicker.js.map +1 -1
  46. package/dist/DatePicker.vue.d.ts +1 -1
  47. package/dist/DescriptionList.js.map +1 -1
  48. package/dist/DescriptionListDetail.js.map +1 -1
  49. package/dist/DescriptionListGroup.js.map +1 -1
  50. package/dist/DescriptionListTerm.js.map +1 -1
  51. package/dist/Dialog.js.map +1 -1
  52. package/dist/Divider.js.map +1 -1
  53. package/dist/Dropdown.js +45 -45
  54. package/dist/Dropdown.js.map +1 -1
  55. package/dist/EmptyState.js.map +1 -1
  56. package/dist/Expand.js +1 -1
  57. package/dist/Expand.vue_vue_type_script_setup_true_lang-BmNJA0Xy.js +74 -0
  58. package/dist/{Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map → Expand.vue_vue_type_script_setup_true_lang-BmNJA0Xy.js.map} +1 -1
  59. package/dist/Field.js +1 -1
  60. package/dist/{Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js → Field.vue_vue_type_script_setup_true_lang-D2I8xDEW.js} +29 -29
  61. package/dist/{Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js.map → Field.vue_vue_type_script_setup_true_lang-D2I8xDEW.js.map} +1 -1
  62. package/dist/FileUpload.js +54 -54
  63. package/dist/FileUpload.js.map +1 -1
  64. package/dist/FilterChip.js.map +1 -1
  65. package/dist/FilterChip.vue.d.ts +1 -1
  66. package/dist/FilterDrawerItem.js.map +1 -1
  67. package/dist/FilterDropdown.js.map +1 -1
  68. package/dist/FilterSelect.js +1 -1
  69. package/dist/FilterSelect.js.map +1 -1
  70. package/dist/Filters.js +4 -6
  71. package/dist/Filters.js.map +1 -1
  72. package/dist/Filters.vue.d.ts +57 -57
  73. package/dist/HttpError.js +6 -6
  74. package/dist/HttpError.js.map +1 -1
  75. package/dist/Icon.js.map +1 -1
  76. package/dist/IconLabel.js +13 -13
  77. package/dist/IconLabel.js.map +1 -1
  78. package/dist/Illustration.vue_vue_type_script_setup_true_lang-C1bPkWZZ.js.map +1 -1
  79. package/dist/Image.vue_vue_type_script_setup_true_lang-CAj0FH9h.js.map +1 -1
  80. package/dist/InlineEdit.js.map +1 -1
  81. package/dist/InlineEdit.vue.d.ts +1 -1
  82. package/dist/Input.js +35 -35
  83. package/dist/Input.js.map +1 -1
  84. package/dist/InputOptions.js +35 -35
  85. package/dist/InputOptions.js.map +1 -1
  86. package/dist/InputOptions.vue.d.ts +1 -1
  87. package/dist/IntegrationIcon.js.map +1 -1
  88. package/dist/Label.vue_vue_type_script_setup_true_lang-xwY3X-iV.js.map +1 -1
  89. package/dist/LicenseChip.js +9 -9
  90. package/dist/LicenseChip.js.map +1 -1
  91. package/dist/ListItem.js.map +1 -1
  92. package/dist/ListItemCell.js.map +1 -1
  93. package/dist/ListView.js +1 -1
  94. package/dist/ListView.js.map +1 -1
  95. package/dist/ListView.vue.d.ts +69 -69
  96. package/dist/Loading.js +2 -2
  97. package/dist/Loading.js.map +1 -1
  98. package/dist/Logo.js +1 -1
  99. package/dist/{Logo.vue_vue_type_script_setup_true_lang-DghNC_k6.js → Logo.vue_vue_type_script_setup_true_lang-qiNaaWWV.js} +17 -17
  100. package/dist/Logo.vue_vue_type_script_setup_true_lang-qiNaaWWV.js.map +1 -0
  101. package/dist/MenuItem.js.map +1 -1
  102. package/dist/Metric.js +12 -12
  103. package/dist/Metric.js.map +1 -1
  104. package/dist/Modal.js.map +1 -1
  105. package/dist/Modals.js.map +1 -1
  106. package/dist/Module.js.map +1 -1
  107. package/dist/ModuleContent.js.map +1 -1
  108. package/dist/ModuleFooter.js.map +1 -1
  109. package/dist/ModuleHeader.js.map +1 -1
  110. package/dist/MoreActions.js +2 -2
  111. package/dist/MoreActions.js.map +1 -1
  112. package/dist/ObfuscateText.js.map +1 -1
  113. package/dist/PageContent.js.map +1 -1
  114. package/dist/PageHeader.js.map +1 -1
  115. package/dist/PageNavigation.js +1 -1
  116. package/dist/PageNavigation.js.map +1 -1
  117. package/dist/Paginate.js.map +1 -1
  118. package/dist/PlaidLink.js.map +1 -1
  119. package/dist/QuickAction.js.map +1 -1
  120. package/dist/Radio.js.map +1 -1
  121. package/dist/RadioGroup.js +1 -1
  122. package/dist/RadioGroup.js.map +1 -1
  123. package/dist/RadioNew.js.map +1 -1
  124. package/dist/RangeInput.js.map +1 -1
  125. package/dist/SearchBar.js.map +1 -1
  126. package/dist/SearchBar.vue.d.ts +1 -1
  127. package/dist/SectionHeader.js.map +1 -1
  128. package/dist/Select.js +2 -2
  129. package/dist/Select.js.map +1 -1
  130. package/dist/Select.vue.d.ts +1 -1
  131. package/dist/SelectStatus.js.map +1 -1
  132. package/dist/SelectStatus.vue.d.ts +1 -1
  133. package/dist/Skeleton.js.map +1 -1
  134. package/dist/Step.js +8 -8
  135. package/dist/Step.js.map +1 -1
  136. package/dist/Stepper.js.map +1 -1
  137. package/dist/Switch.js +15 -15
  138. package/dist/Switch.js.map +1 -1
  139. package/dist/Tab.js +1 -1
  140. package/dist/Tab.js.map +1 -1
  141. package/dist/TabPanel.js.map +1 -1
  142. package/dist/Table.js.map +1 -1
  143. package/dist/TableCell.js.map +1 -1
  144. package/dist/TableHeaderCell.js.map +1 -1
  145. package/dist/TableHeaderRow.js.map +1 -1
  146. package/dist/TableRow.js +18 -18
  147. package/dist/TableRow.js.map +1 -1
  148. package/dist/Tabs.js +2 -2
  149. package/dist/{Tabs.vue_vue_type_script_setup_true_lang-BFURXY_-.js → Tabs.vue_vue_type_script_setup_true_lang-B3FBaVP5.js} +48 -48
  150. package/dist/{Tabs.vue_vue_type_script_setup_true_lang-BFURXY_-.js.map → Tabs.vue_vue_type_script_setup_true_lang-B3FBaVP5.js.map} +1 -1
  151. package/dist/TextEditor.js +1 -1
  152. package/dist/TextEditor.js.map +1 -1
  153. package/dist/TextEditor.vue.d.ts +1 -1
  154. package/dist/Textarea.js +1 -1
  155. package/dist/Textarea.js.map +1 -1
  156. package/dist/Thumbnail.js +33 -33
  157. package/dist/Thumbnail.js.map +1 -1
  158. package/dist/Thumbnail.vue.d.ts +3 -3
  159. package/dist/ThumbnailEmpty.js.map +1 -1
  160. package/dist/ThumbnailGroup.js.map +1 -1
  161. package/dist/Timeline.js.map +1 -1
  162. package/dist/TimelineItem.js.map +1 -1
  163. package/dist/Toast.js +27 -27
  164. package/dist/Toast.js.map +1 -1
  165. package/dist/Toasts.js.map +1 -1
  166. package/dist/Tooltip.js +1 -1
  167. package/dist/{Tooltip.vue_vue_type_script_setup_true_lang-CF6sw2VC.js → Tooltip.vue_vue_type_script_setup_true_lang-WMPMxzO-.js} +13 -16
  168. package/dist/Tooltip.vue_vue_type_script_setup_true_lang-WMPMxzO-.js.map +1 -0
  169. package/dist/components.css +1 -1
  170. package/dist/directives/tooltip.js.map +1 -1
  171. package/dist/floating-ui.vue-CuGrC-z8.js.map +1 -1
  172. package/dist/index-B1Gkwuxd.js.map +1 -1
  173. package/dist/index-D6bxWkZ1.js.map +1 -1
  174. package/dist/index.js.map +1 -1
  175. package/package.json +4 -3
  176. package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js +0 -74
  177. package/dist/Logo.vue_vue_type_script_setup_true_lang-DghNC_k6.js.map +0 -1
  178. package/dist/Tooltip.vue_vue_type_script_setup_true_lang-CF6sw2VC.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { defineComponent as $, useSlots as E, useAttrs as T, useCssModule as D, ref as p, watchEffect as j, watch as h, createBlock as M, openBlock as d, mergeProps as R, createSlots as F, withCtx as f, createElementBlock as _, createElementVNode as L, toDisplayString as b, normalizeClass as B, unref as r, renderSlot as g, createVNode as V } from "vue";
1
+ import { defineComponent as $, useSlots as E, useAttrs as T, useCssModule as D, ref as d, watchEffect as j, watch as f, createBlock as M, openBlock as r, mergeProps as R, createSlots as F, withCtx as _, createElementBlock as b, createElementVNode as L, toDisplayString as B, normalizeClass as g, unref as c, renderSlot as V, createVNode as w } from "vue";
2
2
  import N from "./Input.js";
3
3
  import U from "./Select.js";
4
- import { _ as q } from "./Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js";
4
+ import { _ as q } from "./Field.vue_vue_type_script_setup_true_lang-D2I8xDEW.js";
5
5
  import { _ as z } from "./_plugin-vue_export-helper-CHgC5LLL.js";
6
6
  const A = {
7
7
  key: 0,
@@ -32,8 +32,8 @@ const A = {
32
32
  disabled: { type: Boolean }
33
33
  },
34
34
  emits: ["update:model-value", "change"],
35
- setup(w, { emit: C }) {
36
- const e = w, o = C, n = E(), c = T(), i = D(), a = p(), m = p(!1), t = p();
35
+ setup(s, { emit: C }) {
36
+ const e = s, o = C, i = E(), m = T(), u = D(), a = d(), v = d(!1), t = d();
37
37
  function k(l) {
38
38
  a.value = String(l), o("update:model-value", {
39
39
  value: a.value,
@@ -42,7 +42,7 @@ const A = {
42
42
  type: "input"
43
43
  });
44
44
  }
45
- function S() {
45
+ function x() {
46
46
  o("change", {
47
47
  value: a.value,
48
48
  option: t.value,
@@ -50,7 +50,7 @@ const A = {
50
50
  type: "input"
51
51
  });
52
52
  }
53
- function I(l) {
53
+ function S(l) {
54
54
  t.value = l, o("change", {
55
55
  value: a.value,
56
56
  option: t.value,
@@ -65,79 +65,79 @@ const A = {
65
65
  }
66
66
  if (j(() => {
67
67
  t.value || (t.value = e.options[0]);
68
- }), h(
68
+ }), f(
69
69
  () => e.modelValue.value,
70
70
  () => {
71
71
  a.value = e.modelValue.value;
72
72
  },
73
73
  { immediate: !0 }
74
- ), h(
74
+ ), f(
75
75
  () => e.modelValue.option,
76
76
  () => {
77
77
  t.value = e.modelValue.option;
78
78
  },
79
79
  { immediate: !0 }
80
- ), c.value)
80
+ ), m.value)
81
81
  throw new Error("ll-input-options: use :model-value or v-model instead of :value.");
82
- if (c.onInput)
82
+ if (m.onInput)
83
83
  throw new Error("ll-input-options: use the @update:model-value event instead of @input");
84
- return (l, s) => {
85
- var v;
86
- return d(), M(q, R(e, {
84
+ return (l, n) => {
85
+ var y;
86
+ return r(), M(q, R(e, {
87
87
  class: "stash-input-options",
88
88
  "data-test": "stash-input-options"
89
89
  }), F({
90
- default: f(({ fieldId: u, labelId: x }) => {
91
- var y;
90
+ default: _(({ fieldId: p, labelId: I }) => {
91
+ var h;
92
92
  return [
93
- e.isReadOnly ? (d(), _("div", A, [
93
+ e.isReadOnly ? (r(), b("div", A, [
94
94
  L("span", {
95
- id: u,
96
- "aria-labelledby": x,
95
+ id: p,
96
+ "aria-labelledby": I,
97
97
  class: "h-min"
98
- }, b(a.value || 0) + " " + b((y = t.value) == null ? void 0 : y.name), 9, P)
99
- ])) : (d(), _("div", {
98
+ }, B(a.value || 0) + " " + B((h = t.value) == null ? void 0 : h.name), 9, P)
99
+ ])) : (r(), b("div", {
100
100
  key: 1,
101
- class: B(["flex", [r(i)["input-wrapper"], { [r(i)["has-error"]]: !!e.errorText }]])
101
+ class: g(["flex", [c(u)["input-wrapper"], { [c(u)["has-error"]]: !!e.errorText }]])
102
102
  }, [
103
- g(l.$slots, "default", { fieldId: u }, () => [
104
- V(N, {
105
- id: u,
103
+ V(l.$slots, "default", { fieldId: p }, () => [
104
+ w(N, {
105
+ id: p,
106
106
  class: "stash-input-options__input",
107
107
  "data-test": "stash-input-options|input",
108
108
  type: e.type,
109
109
  "model-value": a.value,
110
110
  disabled: e.isDisabled || e.disabled,
111
111
  placeholder: e.placeholder,
112
- onChange: S,
112
+ onChange: x,
113
113
  "onUpdate:modelValue": k,
114
- onBlur: s[0] || (s[0] = (O) => m.value = !1),
115
- onFocus: s[1] || (s[1] = (O) => m.value = !0)
114
+ onBlur: n[0] || (n[0] = (O) => v.value = !1),
115
+ onFocus: n[1] || (n[1] = (O) => v.value = !0)
116
116
  }, null, 8, ["id", "type", "model-value", "disabled", "placeholder"])
117
117
  ]),
118
- V(U, {
118
+ w(U, {
119
119
  single: "",
120
120
  "hide-search": "",
121
121
  "prevent-empty": "",
122
- class: B(["stash-input-options__select min-w-20", r(i).select]),
122
+ class: g(["stash-input-options__select min-w-20", c(u).select]),
123
123
  "data-test": "stash-input-options|select",
124
- "no-truncate": l.noTruncate,
125
- options: l.options,
124
+ "no-truncate": s.noTruncate,
125
+ options: s.options,
126
126
  "model-value": t.value,
127
127
  "display-by": e.displayBy,
128
128
  "track-by": e.trackBy,
129
129
  disabled: e.isDisabled || e.disabled,
130
- "onUpdate:modelValue": I
130
+ "onUpdate:modelValue": S
131
131
  }, null, 8, ["class", "no-truncate", "options", "model-value", "display-by", "track-by", "disabled"])
132
132
  ], 2))
133
133
  ];
134
134
  }),
135
135
  _: 2
136
136
  }, [
137
- (v = n.hint) != null && v.call(n) ? {
137
+ (y = i.hint) != null && y.call(i) ? {
138
138
  name: "hint",
139
- fn: f(() => [
140
- g(l.$slots, "hint")
139
+ fn: _(() => [
140
+ V(l.$slots, "hint")
141
141
  ]),
142
142
  key: "0"
143
143
  } : void 0
@@ -1 +1 @@
1
- {"version":3,"file":"InputOptions.js","sources":["../src/components/InputOptions/InputOptions.vue"],"sourcesContent":["<script lang=\"ts\">\n import { FieldProps } from '../Field/Field.types';\n import Field from '../Field/Field.vue';\n\n type Option = any;\n\n type SelectedOption = any;\n\n export interface InputOptionsProps extends FieldProps {\n /**\n * The current value inclusive of the input & select\n */\n modelValue?: { value: string; option?: SelectedOption };\n\n /**\n * Input type\n */\n type?: string extends 'button' | 'checkbox' | 'radio' | 'submit' ? never : string;\n\n /**\n * Prevents the Selected Option from being truncated, if true\n */\n noTruncate?: boolean;\n\n /**\n * Options for the select\n */\n options?: Option[];\n\n /**\n * Placeholder text for the input\n * **Note:** placeholders should be used to display examples; they should not be used as labels because they are not accessible as labels. If a real label cannot be used, use the `aria-label` attribute.\n */\n placeholder?: string;\n\n /**\n * If `options` are an object, this is what prop to use for display.\n */\n displayBy?: string;\n\n /**\n * Default field to track selected options by.\n */\n trackBy?: string;\n }\n</script>\n\n<script lang=\"ts\" setup>\n import { ref, useAttrs, useCssModule, watch, watchEffect } from 'vue';\n\n import Input from '../Input/Input.vue';\n import Select from '../Select/Select.vue';\n\n defineOptions({\n name: 'll-input-options',\n });\n\n const props = withDefaults(defineProps<InputOptionsProps>(), {\n modelValue: () => ({ value: '', option: undefined }),\n noTruncate: false,\n options: () => [],\n type: 'text',\n placeholder: undefined,\n displayBy: undefined,\n trackBy: undefined,\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the model value changes\n */\n (\n e: 'update:model-value',\n v: { value?: string; option?: SelectedOption; isValueChange: boolean; type: 'input' | 'select' },\n ): void;\n /**\n * Emitted when either the input or select changes\n */\n (\n e: 'change',\n v: { value?: string; option?: SelectedOption; isValueChange: boolean; type: 'input' | 'select' },\n ): void;\n }>();\n\n const slots = defineSlots<{\n /**\n * Default slot for rendering a custom input field.\n */\n default: (props: { fieldId: string }) => void;\n /**\n * Hint slot for rendering a custom hint text.\n */\n hint: () => unknown;\n }>();\n\n const attrs = useAttrs();\n const classes = useCssModule();\n const internalInput = ref<string>();\n const isInputFocused = ref(false);\n const selectedOption = ref<Option | undefined>();\n\n // Input value changed\n function handleInput(val?: string | number) {\n internalInput.value = String(val);\n\n emit('update:model-value', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: true,\n type: 'input',\n });\n }\n\n // Input blurred\n function handleInputChange() {\n emit('change', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: true,\n type: 'input',\n });\n }\n\n function handleSelectChange(val?: Option) {\n selectedOption.value = val;\n\n emit('change', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: false,\n type: 'select',\n });\n emit('update:model-value', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: false,\n type: 'select',\n });\n }\n\n watchEffect(() => {\n if (!selectedOption.value) {\n selectedOption.value = props.options[0];\n }\n });\n\n watch(\n () => props.modelValue.value,\n () => {\n internalInput.value = props.modelValue.value;\n },\n { immediate: true },\n );\n\n watch(\n () => props.modelValue.option,\n () => {\n selectedOption.value = props.modelValue.option;\n },\n { immediate: true },\n );\n\n if (attrs.value) {\n throw new Error('ll-input-options: use :model-value or v-model instead of :value.');\n }\n\n if (attrs.onInput) {\n throw new Error('ll-input-options: use the @update:model-value event instead of @input');\n }\n</script>\n\n<template>\n <Field v-bind=\"props\" class=\"stash-input-options\" data-test=\"stash-input-options\">\n <template #default=\"{ fieldId, labelId }\">\n <div v-if=\"props.isReadOnly\" class=\"flex h-input items-center text-sm\">\n <span :id=\"fieldId\" :aria-labelledby=\"labelId\" class=\"h-min\">\n {{ internalInput || 0 }} {{ selectedOption?.name }}\n </span>\n </div>\n <div v-else class=\"flex\" :class=\"[classes['input-wrapper'], { [classes['has-error']]: !!props.errorText }]\">\n <slot :field-id=\"fieldId\">\n <Input\n :id=\"fieldId\"\n class=\"stash-input-options__input\"\n data-test=\"stash-input-options|input\"\n :type=\"props.type\"\n :model-value=\"internalInput\"\n :disabled=\"props.isDisabled || props.disabled\"\n :placeholder=\"props.placeholder\"\n @change=\"handleInputChange\"\n @update:model-value=\"handleInput\"\n @blur=\"isInputFocused = false\"\n @focus=\"isInputFocused = true\"\n />\n </slot>\n\n <Select\n single\n hide-search\n prevent-empty\n class=\"stash-input-options__select min-w-20\"\n data-test=\"stash-input-options|select\"\n :class=\"classes.select\"\n :no-truncate=\"noTruncate\"\n :options=\"options\"\n :model-value=\"selectedOption\"\n :display-by=\"props.displayBy\"\n :track-by=\"props.trackBy\"\n :disabled=\"props.isDisabled || props.disabled\"\n @update:model-value=\"handleSelectChange\"\n />\n </div>\n </template>\n <template v-if=\"slots.hint?.()\" #hint>\n <!-- @slot Hint slot for rendering text below the input -->\n <slot name=\"hint\"></slot>\n </template>\n </Field>\n</template>\n\n<style module>\n @layer utilities {\n .input-wrapper {\n & > div:has(input) {\n display: inline-block;\n flex: 1;\n margin-right: -1px;\n }\n\n & input {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n &.has-error input,\n &.has-error input:hover:not(:focus),\n &.has-error :global(.stash-select__content),\n &.has-error :global(.stash-select__content:hover:not(:focus)) {\n border-color: var(--color-red-500);\n }\n\n & div:has(input:focus) {\n z-index: 200 !important;\n }\n }\n\n .select :global(.stash-select__content) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .select:global(.stash-select--active .stash-select__content) {\n min-width: 0;\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","slots","_useSlots","attrs","useAttrs","classes","useCssModule","internalInput","ref","isInputFocused","selectedOption","handleInput","val","handleInputChange","handleSelectChange","watchEffect","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDE,UAAMA,IAAQC,GAURC,IAAOC,GAiBPC,IAAQC,EAAA,GAWRC,IAAQC,EAAA,GACRC,IAAUC,EAAA,GACVC,IAAgBC,EAAA,GAChBC,IAAiBD,EAAI,EAAK,GAC1BE,IAAiBF,EAAA;AAGvB,aAASG,EAAYC,GAAuB;AAC1C,MAAAL,EAAc,QAAQ,OAAOK,CAAG,GAEhCb,EAAK,sBAAsB;AAAA,QACzB,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAGA,aAASG,IAAoB;AAC3B,MAAAd,EAAK,UAAU;AAAA,QACb,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAEA,aAASI,EAAmBF,GAAc;AACxC,MAAAF,EAAe,QAAQE,GAEvBb,EAAK,UAAU;AAAA,QACb,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP,GACDX,EAAK,sBAAsB;AAAA,QACzB,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAwBA,QAtBAK,EAAY,MAAM;AAChB,MAAKL,EAAe,UAClBA,EAAe,QAAQb,EAAM,QAAQ,CAAC;AAAA,IAE1C,CAAC,GAEDmB;AAAA,MACE,MAAMnB,EAAM,WAAW;AAAA,MACvB,MAAM;AACJ,QAAAU,EAAc,QAAQV,EAAM,WAAW;AAAA,MACzC;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,GAGpBmB;AAAA,MACE,MAAMnB,EAAM,WAAW;AAAA,MACvB,MAAM;AACJ,QAAAa,EAAe,QAAQb,EAAM,WAAW;AAAA,MAC1C;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,GAGhBM,EAAM;AACR,YAAM,IAAI,MAAM,kEAAkE;AAGpF,QAAIA,EAAM;AACR,YAAM,IAAI,MAAM,uEAAuE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"InputOptions.js","sources":["../src/components/InputOptions/InputOptions.vue"],"sourcesContent":["<script lang=\"ts\">\n import { FieldProps } from '../Field/Field.types';\n import Field from '../Field/Field.vue';\n\n type Option = any;\n\n type SelectedOption = any;\n\n export interface InputOptionsProps extends FieldProps {\n /**\n * The current value inclusive of the input & select\n */\n modelValue?: { value: string; option?: SelectedOption };\n\n /**\n * Input type\n */\n type?: string extends 'button' | 'checkbox' | 'radio' | 'submit' ? never : string;\n\n /**\n * Prevents the Selected Option from being truncated, if true\n */\n noTruncate?: boolean;\n\n /**\n * Options for the select\n */\n options?: Option[];\n\n /**\n * Placeholder text for the input\n * **Note:** placeholders should be used to display examples; they should not be used as labels because they are not accessible as labels. If a real label cannot be used, use the `aria-label` attribute.\n */\n placeholder?: string;\n\n /**\n * If `options` are an object, this is what prop to use for display.\n */\n displayBy?: string;\n\n /**\n * Default field to track selected options by.\n */\n trackBy?: string;\n }\n</script>\n\n<script lang=\"ts\" setup>\n import { ref, useAttrs, useCssModule, watch, watchEffect } from 'vue';\n\n import Input from '../Input/Input.vue';\n import Select from '../Select/Select.vue';\n\n defineOptions({\n name: 'll-input-options',\n });\n\n const props = withDefaults(defineProps<InputOptionsProps>(), {\n modelValue: () => ({ value: '', option: undefined }),\n noTruncate: false,\n options: () => [],\n type: 'text',\n placeholder: undefined,\n displayBy: undefined,\n trackBy: undefined,\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the model value changes\n */\n (\n e: 'update:model-value',\n v: { value?: string; option?: SelectedOption; isValueChange: boolean; type: 'input' | 'select' },\n ): void;\n /**\n * Emitted when either the input or select changes\n */\n (\n e: 'change',\n v: { value?: string; option?: SelectedOption; isValueChange: boolean; type: 'input' | 'select' },\n ): void;\n }>();\n\n const slots = defineSlots<{\n /**\n * Default slot for rendering a custom input field.\n */\n default: (props: { fieldId: string }) => void;\n /**\n * Hint slot for rendering a custom hint text.\n */\n hint: () => unknown;\n }>();\n\n const attrs = useAttrs();\n const classes = useCssModule();\n const internalInput = ref<string>();\n const isInputFocused = ref(false);\n const selectedOption = ref<Option | undefined>();\n\n // Input value changed\n function handleInput(val?: string | number) {\n internalInput.value = String(val);\n\n emit('update:model-value', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: true,\n type: 'input',\n });\n }\n\n // Input blurred\n function handleInputChange() {\n emit('change', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: true,\n type: 'input',\n });\n }\n\n function handleSelectChange(val?: Option) {\n selectedOption.value = val;\n\n emit('change', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: false,\n type: 'select',\n });\n emit('update:model-value', {\n value: internalInput.value,\n option: selectedOption.value,\n isValueChange: false,\n type: 'select',\n });\n }\n\n watchEffect(() => {\n if (!selectedOption.value) {\n selectedOption.value = props.options[0];\n }\n });\n\n watch(\n () => props.modelValue.value,\n () => {\n internalInput.value = props.modelValue.value;\n },\n { immediate: true },\n );\n\n watch(\n () => props.modelValue.option,\n () => {\n selectedOption.value = props.modelValue.option;\n },\n { immediate: true },\n );\n\n if (attrs.value) {\n throw new Error('ll-input-options: use :model-value or v-model instead of :value.');\n }\n\n if (attrs.onInput) {\n throw new Error('ll-input-options: use the @update:model-value event instead of @input');\n }\n</script>\n\n<template>\n <Field v-bind=\"props\" class=\"stash-input-options\" data-test=\"stash-input-options\">\n <template #default=\"{ fieldId, labelId }\">\n <div v-if=\"props.isReadOnly\" class=\"flex h-input items-center text-sm\">\n <span :id=\"fieldId\" :aria-labelledby=\"labelId\" class=\"h-min\">\n {{ internalInput || 0 }} {{ selectedOption?.name }}\n </span>\n </div>\n <div v-else class=\"flex\" :class=\"[classes['input-wrapper'], { [classes['has-error']]: !!props.errorText }]\">\n <slot :field-id=\"fieldId\">\n <Input\n :id=\"fieldId\"\n class=\"stash-input-options__input\"\n data-test=\"stash-input-options|input\"\n :type=\"props.type\"\n :model-value=\"internalInput\"\n :disabled=\"props.isDisabled || props.disabled\"\n :placeholder=\"props.placeholder\"\n @change=\"handleInputChange\"\n @update:model-value=\"handleInput\"\n @blur=\"isInputFocused = false\"\n @focus=\"isInputFocused = true\"\n />\n </slot>\n\n <Select\n single\n hide-search\n prevent-empty\n class=\"stash-input-options__select min-w-20\"\n data-test=\"stash-input-options|select\"\n :class=\"classes.select\"\n :no-truncate=\"noTruncate\"\n :options=\"options\"\n :model-value=\"selectedOption\"\n :display-by=\"props.displayBy\"\n :track-by=\"props.trackBy\"\n :disabled=\"props.isDisabled || props.disabled\"\n @update:model-value=\"handleSelectChange\"\n />\n </div>\n </template>\n <template v-if=\"slots.hint?.()\" #hint>\n <!-- @slot Hint slot for rendering text below the input -->\n <slot name=\"hint\"></slot>\n </template>\n </Field>\n</template>\n\n<style module>\n @layer utilities {\n .input-wrapper {\n & > div:has(input) {\n display: inline-block;\n flex: 1;\n margin-right: -1px;\n }\n\n & input {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n &.has-error input,\n &.has-error input:hover:not(:focus),\n &.has-error :global(.stash-select__content),\n &.has-error :global(.stash-select__content:hover:not(:focus)) {\n border-color: var(--color-red-500);\n }\n\n & div:has(input:focus) {\n z-index: 200 !important;\n }\n }\n\n .select :global(.stash-select__content) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .select:global(.stash-select--active .stash-select__content) {\n min-width: 0;\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","slots","_useSlots","attrs","useAttrs","classes","useCssModule","internalInput","ref","isInputFocused","selectedOption","handleInput","val","handleInputChange","handleSelectChange","watchEffect","watch","_createBlock","Field","_mergeProps","_withCtx","fieldId","labelId","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_toDisplayString","_a","_hoisted_2","_normalizeClass","_unref","_renderSlot","_ctx","_createVNode","Input","Select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDE,UAAMA,IAAQC,GAURC,IAAOC,GAiBPC,IAAQC,EAAA,GAWRC,IAAQC,EAAA,GACRC,IAAUC,EAAA,GACVC,IAAgBC,EAAA,GAChBC,IAAiBD,EAAI,EAAK,GAC1BE,IAAiBF,EAAA;AAGvB,aAASG,EAAYC,GAAuB;AAC1C,MAAAL,EAAc,QAAQ,OAAOK,CAAG,GAEhCb,EAAK,sBAAsB;AAAA,QACzB,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAGA,aAASG,IAAoB;AAC3B,MAAAd,EAAK,UAAU;AAAA,QACb,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAEA,aAASI,EAAmBF,GAAc;AACxC,MAAAF,EAAe,QAAQE,GAEvBb,EAAK,UAAU;AAAA,QACb,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP,GACDX,EAAK,sBAAsB;AAAA,QACzB,OAAOQ,EAAc;AAAA,QACrB,QAAQG,EAAe;AAAA,QACvB,eAAe;AAAA,QACf,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAwBA,QAtBAK,EAAY,MAAM;AAChB,MAAKL,EAAe,UAClBA,EAAe,QAAQb,EAAM,QAAQ,CAAC;AAAA,IAE1C,CAAC,GAEDmB;AAAA,MACE,MAAMnB,EAAM,WAAW;AAAA,MACvB,MAAM;AACJ,QAAAU,EAAc,QAAQV,EAAM,WAAW;AAAA,MACzC;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,GAGpBmB;AAAA,MACE,MAAMnB,EAAM,WAAW;AAAA,MACvB,MAAM;AACJ,QAAAa,EAAe,QAAQb,EAAM,WAAW;AAAA,MAC1C;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,GAGhBM,EAAM;AACR,YAAM,IAAI,MAAM,kEAAkE;AAGpF,QAAIA,EAAM;AACR,YAAM,IAAI,MAAM,uEAAuE;;;kBAKzFc,EA6CQC,GA7CRC,EA6CQtB,GA7CY;AAAA,QAAE,OAAM;AAAA,QAAsB,aAAU;AAAA,MAAA;QAC/C,SAAOuB,EAChB,CAIM,EALc,SAAAC,GAAS,SAAAC,QAAO;;AAAA;AAAA,YACzBzB,EAAM,cAAjB0B,EAAA,GAAAC,EAIM,OAJNC,GAIM;AAAA,cAHJC,EAEO,QAAA;AAAA,gBAFA,IAAIL;AAAA,gBAAU,mBAAiBC;AAAA,gBAAS,OAAM;AAAA,cAAA,GAChDK,EAAApB,EAAA,SAAa,CAAA,IAAQ,MAACoB,GAAGC,IAAAlB,EAAA,UAAA,gBAAAkB,EAAgB,IAAI,GAAA,GAAAC,CAAA;AAAA,YAAA,YAGpDL,EAgCM,OAAA;AAAA;cAhCM,OAAKM,EAAA,CAAC,QAAM,CAAUC,EAAA1B,CAAA,uBAA6B0B,EAAA1B,CAAA,EAAO,WAAA,CAAA,GAAA,CAAA,CAAkBR,EAAM,UAAA,CAAS,CAAA,CAAA;AAAA,YAAA;cACrGmC,EAcOC,EAAA,QAAA,WAAA,EAdA,SAAAZ,EAAA,GAAP,MAcO;AAAA,gBAbLa,EAYEC,GAAA;AAAA,kBAXC,IAAId;AAAA,kBACL,OAAM;AAAA,kBACN,aAAU;AAAA,kBACT,MAAMxB,EAAM;AAAA,kBACZ,eAAaU,EAAA;AAAA,kBACb,UAAUV,EAAM,cAAcA,EAAM;AAAA,kBACpC,aAAaA,EAAM;AAAA,kBACnB,UAAQgB;AAAA,kBACR,uBAAoBF;AAAA,kBACpB,+BAAMF,EAAA,QAAc;AAAA,kBACpB,gCAAOA,EAAA,QAAc;AAAA,gBAAA;;cAI1ByB,EAcEE,GAAA;AAAA,gBAbA,QAAA;AAAA,gBACA,eAAA;AAAA,gBACA,iBAAA;AAAA,gBACA,OAAKN,EAAA,CAAC,wCAEEC,EAAA1B,CAAA,EAAQ,MAAM,CAAA;AAAA,gBADtB,aAAU;AAAA,gBAET,eAAaP,EAAA;AAAA,gBACb,SAASA,EAAA;AAAA,gBACT,eAAaY,EAAA;AAAA,gBACb,cAAYb,EAAM;AAAA,gBAClB,YAAUA,EAAM;AAAA,gBAChB,UAAUA,EAAM,cAAcA,EAAM;AAAA,gBACpC,uBAAoBiB;AAAA,cAAA;;;;;;SAIXc,IAAA3B,EAAM,SAAN,QAAA2B,EAAA,KAAA3B;gBAAiB;AAAA,gBAE/B,MAAyB;AAAA,YAAzB+B,EAAyBC,EAAA,QAAA,MAAA;AAAA,UAAA;;;;;;;;;;;;;"}
@@ -82,8 +82,8 @@ type: 'input' | 'select';
82
82
  }) => any) | undefined;
83
83
  }>, {
84
84
  type: string;
85
- trackBy: string;
86
85
  placeholder: string;
86
+ trackBy: string;
87
87
  displayBy: string;
88
88
  options: any[];
89
89
  modelValue: {
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationIcon.js","sources":["../src/components/IntegrationIcon/IntegrationIcon.types.ts","../src/components/IntegrationIcon/IntegrationIcon.vue"],"sourcesContent":["export const integrationIconNames = [\n 'batchbud',\n 'biotrack',\n 'blaze',\n 'canix',\n 'cannveya',\n 'cova',\n 'distru',\n 'dutchie',\n 'dynamics365',\n 'flourish',\n 'flowhub',\n 'growflow',\n 'maxq',\n 'meadow',\n 'metrc',\n 'quickbooks',\n 'roshi',\n 'sage-intacct',\n 'salesforce',\n 'stashstock',\n 'xero',\n 'zohobooks',\n] as const;\n\nexport type IntegrationIconName = (typeof integrationIconNames)[number];\n","<script lang=\"ts\">\n export * from './IntegrationIcon.types';\n</script>\n\n<script lang=\"ts\" setup>\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, inject, useCssModule } from 'vue';\n import InlineSvg from 'vue-inline-svg';\n\n import { StashProvideState } from '../../../types/misc';\n import { IconSize } from '../Icon/Icon.types';\n import { IntegrationIconName } from './IntegrationIcon.types';\n\n export interface IntegrationIconProps {\n id?: string;\n\n /**\n * The filename of the icon that should be displayed\n */\n name: IntegrationIconName;\n\n /**\n * Accessible, short-text description for the icon. Not rendered as part of the graphic, but\n * browsers usually display it as a tooltip and screen readers use this.\n */\n title?: string;\n\n /**\n * The size of the icon\n * Options: large (32x32px), default (24x24px), dense (20x20px), small (14x14px).\n */\n size?: IconSize;\n\n /**\n * Icon's custom static path. It'll default to either the staticPath defined on the library installation or '/static' if none are provided.\n */\n staticPath?: string;\n }\n\n defineOptions({\n name: 'll-icon',\n });\n\n const props = withDefaults(defineProps<IntegrationIconProps>(), {\n id: () => uniqueId('ll-icon-'),\n size: 'standard',\n title: '',\n staticPath: '',\n });\n const classes = useCssModule();\n const stashOptions = inject<Partial<StashProvideState>>('stashOptions', {\n staticPath: '/static',\n });\n\n const computedStaticPath = computed(() => {\n return props.staticPath || stashOptions?.staticPath;\n });\n\n /**\n * Event handler to add the use tag for the specific icon we need to the svg\n */\n const transformSvgSource = (svgElem: SVGElement) => {\n if (!svgElem) {\n return svgElem;\n }\n\n const useNode = document.createElement('use');\n useNode.setAttribute('href', `#${props.name}`);\n\n // Grab icon from sprite\n const symbolNode = svgElem.querySelector(`#${props.name}`);\n\n // This really shouldn't happen but if the spritesheet gets out of sync with the `IconName` type it could\n if (!symbolNode) {\n // still insert <use> element but it will not be found (this is more for tests than anything else)\n svgElem.insertBefore(useNode, svgElem.firstChild);\n return svgElem;\n }\n\n /**\n * Repeatedly inlining the entire spritesheet was causing failures in mobile Safari, and also\n * performance issues on long list pages where the svg was being inlined over and over.\n * Since the SVG is cached after the first request, this callback is just removing the unnecessary\n * <symbol> nodes to slim down the DOM manipulation and insertion.\n */\n // Replace all children with just the one <symbol> element and <use> element\n svgElem.replaceChildren(symbolNode, useNode);\n\n return svgElem;\n };\n</script>\n\n<!-- Use inline svg so that requests to pull the spritesheet are done via JS and avoid\n browser restrictions for different domains for svgs. inline svg also caches the requests\n so we don't load the spritesheet multiple times\n Reference: https://oreillymedia.github.io/Using_SVG/extras/ch10-cors.html -->\n<template>\n <InlineSvg\n :id=\"props.id\"\n role=\"presentation\"\n :aria-labelledby=\"props.id\"\n class=\"stash-icon\"\n :class=\"[\n classes.icon,\n `icon--${props.name}`,\n {\n [classes.standard]: props.size === 'standard',\n [classes.dense]: props.size === 'dense',\n [classes.small]: props.size === 'small',\n [classes.large]: props.size === 'large',\n },\n ]\"\n data-test=\"stash-integration-icon\"\n :src=\"`${computedStaticPath}/spritesheet.svg`\"\n :title=\"props.title\"\n :transform-source=\"transformSvgSource\"\n />\n</template>\n\n<style module>\n @layer utilities {\n .icon {\n display: inline-block;\n fill: currentcolor;\n vertical-align: middle;\n }\n\n .standard {\n height: 24px;\n min-height: 24px;\n min-width: 24px;\n width: 24px;\n }\n\n .dense {\n height: 20px;\n min-height: 20px;\n min-width: 20px;\n width: 20px;\n }\n\n .small {\n height: 14px;\n min-height: 14px;\n min-width: 14px;\n width: 14px;\n }\n\n .large {\n height: 32px;\n min-height: 32px;\n min-width: 32px;\n width: 32px;\n }\n }\n</style>\n"],"names":["integrationIconNames","props","__props","classes","useCssModule","stashOptions","inject","computedStaticPath","computed","transformSvgSource","svgElem","useNode","symbolNode"],"mappings":";;;;AAAO,MAAMA,IAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;;;;;;;;;ACoBE,UAAMC,IAAQC,GAMRC,IAAUC,EAAA,GACVC,IAAeC,EAAmC,gBAAgB;AAAA,MACtE,YAAY;AAAA,IAAA,CACb,GAEKC,IAAqBC,EAAS,MAC3BP,EAAM,eAAcI,KAAA,gBAAAA,EAAc,WAC1C,GAKKI,IAAqB,CAACC,MAAwB;AAClD,UAAI,CAACA;AACH,eAAOA;AAGT,YAAMC,IAAU,SAAS,cAAc,KAAK;AAC5C,MAAAA,EAAQ,aAAa,QAAQ,IAAIV,EAAM,IAAI,EAAE;AAG7C,YAAMW,IAAaF,EAAQ,cAAc,IAAIT,EAAM,IAAI,EAAE;AAGzD,aAAKW,KAaLF,EAAQ,gBAAgBE,GAAYD,CAAO,GAEpCD,MAbLA,EAAQ,aAAaC,GAASD,EAAQ,UAAU,GACzCA;AAAA,IAaX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"IntegrationIcon.js","sources":["../src/components/IntegrationIcon/IntegrationIcon.types.ts","../src/components/IntegrationIcon/IntegrationIcon.vue"],"sourcesContent":["export const integrationIconNames = [\n 'batchbud',\n 'biotrack',\n 'blaze',\n 'canix',\n 'cannveya',\n 'cova',\n 'distru',\n 'dutchie',\n 'dynamics365',\n 'flourish',\n 'flowhub',\n 'growflow',\n 'maxq',\n 'meadow',\n 'metrc',\n 'quickbooks',\n 'roshi',\n 'sage-intacct',\n 'salesforce',\n 'stashstock',\n 'xero',\n 'zohobooks',\n] as const;\n\nexport type IntegrationIconName = (typeof integrationIconNames)[number];\n","<script lang=\"ts\">\n export * from './IntegrationIcon.types';\n</script>\n\n<script lang=\"ts\" setup>\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, inject, useCssModule } from 'vue';\n import InlineSvg from 'vue-inline-svg';\n\n import { StashProvideState } from '../../../types/misc';\n import { IconSize } from '../Icon/Icon.types';\n import { IntegrationIconName } from './IntegrationIcon.types';\n\n export interface IntegrationIconProps {\n id?: string;\n\n /**\n * The filename of the icon that should be displayed\n */\n name: IntegrationIconName;\n\n /**\n * Accessible, short-text description for the icon. Not rendered as part of the graphic, but\n * browsers usually display it as a tooltip and screen readers use this.\n */\n title?: string;\n\n /**\n * The size of the icon\n * Options: large (32x32px), default (24x24px), dense (20x20px), small (14x14px).\n */\n size?: IconSize;\n\n /**\n * Icon's custom static path. It'll default to either the staticPath defined on the library installation or '/static' if none are provided.\n */\n staticPath?: string;\n }\n\n defineOptions({\n name: 'll-icon',\n });\n\n const props = withDefaults(defineProps<IntegrationIconProps>(), {\n id: () => uniqueId('ll-icon-'),\n size: 'standard',\n title: '',\n staticPath: '',\n });\n const classes = useCssModule();\n const stashOptions = inject<Partial<StashProvideState>>('stashOptions', {\n staticPath: '/static',\n });\n\n const computedStaticPath = computed(() => {\n return props.staticPath || stashOptions?.staticPath;\n });\n\n /**\n * Event handler to add the use tag for the specific icon we need to the svg\n */\n const transformSvgSource = (svgElem: SVGElement) => {\n if (!svgElem) {\n return svgElem;\n }\n\n const useNode = document.createElement('use');\n useNode.setAttribute('href', `#${props.name}`);\n\n // Grab icon from sprite\n const symbolNode = svgElem.querySelector(`#${props.name}`);\n\n // This really shouldn't happen but if the spritesheet gets out of sync with the `IconName` type it could\n if (!symbolNode) {\n // still insert <use> element but it will not be found (this is more for tests than anything else)\n svgElem.insertBefore(useNode, svgElem.firstChild);\n return svgElem;\n }\n\n /**\n * Repeatedly inlining the entire spritesheet was causing failures in mobile Safari, and also\n * performance issues on long list pages where the svg was being inlined over and over.\n * Since the SVG is cached after the first request, this callback is just removing the unnecessary\n * <symbol> nodes to slim down the DOM manipulation and insertion.\n */\n // Replace all children with just the one <symbol> element and <use> element\n svgElem.replaceChildren(symbolNode, useNode);\n\n return svgElem;\n };\n</script>\n\n<!-- Use inline svg so that requests to pull the spritesheet are done via JS and avoid\n browser restrictions for different domains for svgs. inline svg also caches the requests\n so we don't load the spritesheet multiple times\n Reference: https://oreillymedia.github.io/Using_SVG/extras/ch10-cors.html -->\n<template>\n <InlineSvg\n :id=\"props.id\"\n role=\"presentation\"\n :aria-labelledby=\"props.id\"\n class=\"stash-icon\"\n :class=\"[\n classes.icon,\n `icon--${props.name}`,\n {\n [classes.standard]: props.size === 'standard',\n [classes.dense]: props.size === 'dense',\n [classes.small]: props.size === 'small',\n [classes.large]: props.size === 'large',\n },\n ]\"\n data-test=\"stash-integration-icon\"\n :src=\"`${computedStaticPath}/spritesheet.svg`\"\n :title=\"props.title\"\n :transform-source=\"transformSvgSource\"\n />\n</template>\n\n<style module>\n @layer utilities {\n .icon {\n display: inline-block;\n fill: currentcolor;\n vertical-align: middle;\n }\n\n .standard {\n height: 24px;\n min-height: 24px;\n min-width: 24px;\n width: 24px;\n }\n\n .dense {\n height: 20px;\n min-height: 20px;\n min-width: 20px;\n width: 20px;\n }\n\n .small {\n height: 14px;\n min-height: 14px;\n min-width: 14px;\n width: 14px;\n }\n\n .large {\n height: 32px;\n min-height: 32px;\n min-width: 32px;\n width: 32px;\n }\n }\n</style>\n"],"names":["integrationIconNames","props","__props","classes","useCssModule","stashOptions","inject","computedStaticPath","computed","transformSvgSource","svgElem","useNode","symbolNode","_createBlock","_unref","InlineSvg"],"mappings":";;;;AAAO,MAAMA,IAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;;;;;;;;;ACoBE,UAAMC,IAAQC,GAMRC,IAAUC,EAAA,GACVC,IAAeC,EAAmC,gBAAgB;AAAA,MACtE,YAAY;AAAA,IAAA,CACb,GAEKC,IAAqBC,EAAS,MAC3BP,EAAM,eAAcI,KAAA,gBAAAA,EAAc,WAC1C,GAKKI,IAAqB,CAACC,MAAwB;AAClD,UAAI,CAACA;AACH,eAAOA;AAGT,YAAMC,IAAU,SAAS,cAAc,KAAK;AAC5C,MAAAA,EAAQ,aAAa,QAAQ,IAAIV,EAAM,IAAI,EAAE;AAG7C,YAAMW,IAAaF,EAAQ,cAAc,IAAIT,EAAM,IAAI,EAAE;AAGzD,aAAKW,KAaLF,EAAQ,gBAAgBE,GAAYD,CAAO,GAEpCD,MAbLA,EAAQ,aAAaC,GAASD,EAAQ,UAAU,GACzCA;AAAA,IAaX;2BAQAG,EAmBEC,EAAAC,CAAA,GAAA;AAAA,MAlBC,IAAId,EAAM;AAAA,MACX,MAAK;AAAA,MACJ,mBAAiBA,EAAM;AAAA,MACxB,UAAM,cAAY;AAAA,QACFa,EAAAX,CAAA,EAAQ;AAAA,QAAqB,SAAAF,EAAM,IAAI;AAAA;UAAqB,CAAAa,EAAAX,CAAA,EAAQ,QAAQ,GAAGF,EAAM,SAAI;AAAA,UAA0B,CAAAa,EAAAX,CAAA,EAAQ,KAAK,GAAGF,EAAM,SAAI;AAAA,UAAuB,CAAAa,EAAAX,CAAA,EAAQ,KAAK,GAAGF,EAAM,SAAI;AAAA,UAAuB,CAAAa,EAAAX,CAAA,EAAQ,KAAK,GAAGF,EAAM,SAAI;AAAA,QAAA;AAAA;MAU/P,aAAU;AAAA,MACT,QAAQM,EAAA,KAAkB;AAAA,MAC1B,OAAON,EAAM;AAAA,MACb,oBAAkBQ;AAAA,IAAA;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Label.vue_vue_type_script_setup_true_lang-xwY3X-iV.js","sources":["../src/components/Label/Label.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n\n import { t } from '../../locale';\n\n export interface LabelProps {\n /**\n * The `id` of the input element that this label is associated with.\n */\n for?: string;\n\n /**\n * Indicates whether the label should be styled as an error.\n */\n hasError?: boolean;\n\n /**\n * Indicates whether the input element that this label is associated with is required.\n */\n isRequired?: boolean;\n\n /**\n * Indicates whether the label should show that the input is optional.\n */\n showOptional?: boolean;\n\n /**\n * Indicates whether the wrapper element to be rendered should be a label or a legend.\n */\n legend?: boolean;\n\n /**\n * Indicates whether the label is disabled.\n */\n disabled?: boolean;\n\n /**\n * Indicates whether the label should be visually hidden (screen reader only).\n */\n isSrOnly?: boolean;\n }\n\n const props = withDefaults(defineProps<LabelProps>(), {\n for: undefined,\n hasError: false,\n isRequired: false,\n showOptional: false,\n legend: false,\n isDisabled: false,\n isSrOnly: false,\n });\n\n const is = computed(() => {\n return props.legend ? 'legend' : 'label';\n });\n</script>\n\n<template>\n <component\n :is=\"is\"\n class=\"stash-label block truncate text-sm font-medium leading-6\"\n :class=\"{\n 'animate-shake': props.hasError,\n 'stash-label--disabled text-ice-700': props.disabled,\n 'text-ice-900': !props.disabled,\n 'sr-only': props.isSrOnly,\n }\"\n :for=\"props.for\"\n data-test=\"stash-label\"\n >\n <!-- @slot The label text -->\n <slot></slot>\n <span v-if=\"props.isRequired\" class=\"font-semibold text-red-500\" title=\"Required\" aria-label=\"required\"> * </span>\n <span v-else-if=\"props.showOptional\" class=\"text-ice-700\"> ({{ t('ll.optional') }})</span>\n </component>\n</template>\n"],"names":["props","__props","is","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA0CE,UAAMA,IAAQC,GAURC,IAAKC,EAAS,MACXH,EAAM,SAAS,WAAW,OAClC;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Label.vue_vue_type_script_setup_true_lang-xwY3X-iV.js","sources":["../src/components/Label/Label.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n\n import { t } from '../../locale';\n\n export interface LabelProps {\n /**\n * The `id` of the input element that this label is associated with.\n */\n for?: string;\n\n /**\n * Indicates whether the label should be styled as an error.\n */\n hasError?: boolean;\n\n /**\n * Indicates whether the input element that this label is associated with is required.\n */\n isRequired?: boolean;\n\n /**\n * Indicates whether the label should show that the input is optional.\n */\n showOptional?: boolean;\n\n /**\n * Indicates whether the wrapper element to be rendered should be a label or a legend.\n */\n legend?: boolean;\n\n /**\n * Indicates whether the label is disabled.\n */\n disabled?: boolean;\n\n /**\n * Indicates whether the label should be visually hidden (screen reader only).\n */\n isSrOnly?: boolean;\n }\n\n const props = withDefaults(defineProps<LabelProps>(), {\n for: undefined,\n hasError: false,\n isRequired: false,\n showOptional: false,\n legend: false,\n isDisabled: false,\n isSrOnly: false,\n });\n\n const is = computed(() => {\n return props.legend ? 'legend' : 'label';\n });\n</script>\n\n<template>\n <component\n :is=\"is\"\n class=\"stash-label block truncate text-sm font-medium leading-6\"\n :class=\"{\n 'animate-shake': props.hasError,\n 'stash-label--disabled text-ice-700': props.disabled,\n 'text-ice-900': !props.disabled,\n 'sr-only': props.isSrOnly,\n }\"\n :for=\"props.for\"\n data-test=\"stash-label\"\n >\n <!-- @slot The label text -->\n <slot></slot>\n <span v-if=\"props.isRequired\" class=\"font-semibold text-red-500\" title=\"Required\" aria-label=\"required\"> * </span>\n <span v-else-if=\"props.showOptional\" class=\"text-ice-700\"> ({{ t('ll.optional') }})</span>\n </component>\n</template>\n"],"names":["props","__props","is","computed","_openBlock","_createBlock","_resolveDynamicComponent","_renderSlot","_ctx","_createElementBlock","_hoisted_1","_hoisted_2","_toDisplayString","_unref","t"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA0CE,UAAMA,IAAQC,GAURC,IAAKC,EAAS,MACXH,EAAM,SAAS,WAAW,OAClC;sBAIDI,KAAAC,EAgBYC,EAfLJ,EAAA,KAAE,GAAA;AAAA,MACP,UAAM,4DAA0D;AAAA,QAC/B,iBAAAF,EAAM;AAAA,QAAsD,sCAAAA,EAAM;AAAA,QAAiC,gBAAA,CAAAA,EAAM;AAAA,QAA2B,WAAAA,EAAM;AAAA,MAAA;MAM1K,KAAKA,EAAM;AAAA,MACZ,aAAU;AAAA,IAAA;iBAGV,MAAa;AAAA,QAAbO,EAAaC,EAAA,QAAA,SAAA;AAAA,QACDR,EAAM,mBAAlBS,EAAkH,QAAlHC,GAAwG,KAAG,KAC1FV,EAAM,gBAAvBI,EAAA,GAAAK,EAA0F,QAA1FE,GAA0D,OAAEC,EAAGC,EAAAC,CAAA,oBAAmB,KAAC,CAAA;;;;;;"}
@@ -1,6 +1,6 @@
1
- import { defineComponent as a, useAttrs as u, computed as r, withDirectives as d, createBlock as p, openBlock as h, mergeProps as m, withCtx as C, createTextVNode as f, toDisplayString as b, vShow as A } from "vue";
1
+ import { defineComponent as a, useAttrs as u, computed as l, withDirectives as d, createBlock as p, openBlock as h, mergeProps as m, withCtx as C, createTextVNode as f, toDisplayString as b, vShow as A } from "vue";
2
2
  import g from "./Chip.js";
3
- const N = /* @__PURE__ */ a({
3
+ const _ = /* @__PURE__ */ a({
4
4
  name: "ll-license-chip",
5
5
  inheritAttrs: !1,
6
6
  __name: "LicenseChip",
@@ -9,11 +9,11 @@ const N = /* @__PURE__ */ a({
9
9
  size: { default: "medium" },
10
10
  disabled: { type: Boolean }
11
11
  },
12
- setup(i) {
13
- const s = i, c = u(), o = r(() => {
12
+ setup(r) {
13
+ const s = r, c = u(), n = l(() => {
14
14
  const e = { ...c };
15
15
  return delete e["color-scheme"], delete e.radius, delete e.shade, e;
16
- }), l = Object.freeze({
16
+ }), i = Object.freeze({
17
17
  MED: "yellow",
18
18
  MEDI: "yellow",
19
19
  REC: "blue",
@@ -28,7 +28,7 @@ const N = /* @__PURE__ */ a({
28
28
  CANN: "green",
29
29
  ADU: "blue",
30
30
  ADUL: "blue"
31
- }), n = r(() => s.disabled ? "ice" : t.value in l ? l[t.value] : "blue"), t = r(() => {
31
+ }), o = l(() => s.disabled ? "ice" : t.value in i ? i[t.value] : "blue"), t = l(() => {
32
32
  const e = s.license.toUpperCase();
33
33
  return e.length > 4 ? e.slice(0, 3) : e;
34
34
  });
@@ -37,9 +37,9 @@ const N = /* @__PURE__ */ a({
37
37
  "data-test": "stash-license-chip",
38
38
  radius: "pill",
39
39
  shade: "main",
40
- "color-scheme": n.value,
40
+ "color-scheme": o.value,
41
41
  size: s.size
42
- }, o.value, { disabled: e.disabled }), {
42
+ }, n.value, { disabled: r.disabled }), {
43
43
  default: C(() => [
44
44
  f(b(t.value), 1)
45
45
  ]),
@@ -50,6 +50,6 @@ const N = /* @__PURE__ */ a({
50
50
  }
51
51
  });
52
52
  export {
53
- N as default
53
+ _ as default
54
54
  };
55
55
  //# sourceMappingURL=LicenseChip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LicenseChip.js","sources":["../src/components/LicenseChip/LicenseChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, useAttrs } from 'vue';\n\n import { StashPrimaryColorGroup } from '../../../types/colors';\n import Chip from '../Chip/Chip.vue';\n\n defineOptions({\n name: 'll-license-chip',\n inheritAttrs: false,\n });\n\n export interface LicenseChipProps {\n /**\n * License type to be displayed. This can be either the type code (e.g. \"MED\") or the full name (e.g. \"Medical\").\n */\n license: string;\n\n /**\n * Size of the chip. Defaults to medium. Available sizes: \"small\" | \"medium\".\n */\n size?: 'small' | 'medium';\n\n /**\n * Whether the chip is disabled. Defaults to false.\n */\n disabled?: boolean;\n }\n\n const props = withDefaults(defineProps<LicenseChipProps>(), {\n size: 'medium',\n });\n const attrs = useAttrs();\n const chipAttrs = computed(() => {\n const tempAttrs = { ...attrs };\n\n // prevents override to ensure license chips remain consistent\n delete tempAttrs['color-scheme'];\n delete tempAttrs['radius'];\n delete tempAttrs['shade'];\n\n return tempAttrs;\n });\n\n const COLOR_SCHEME_MAPPING = Object.freeze({\n MED: 'yellow',\n MEDI: 'yellow',\n REC: 'blue',\n RECR: 'blue',\n COM: 'royal',\n COMB: 'royal',\n ANC: 'orange',\n ANCI: 'orange',\n BUL: 'ice',\n BULK: 'ice',\n CAN: 'green',\n CANN: 'green',\n ADU: 'blue',\n ADUL: 'blue',\n });\n\n const color = computed<StashPrimaryColorGroup>(() => {\n if (props.disabled) {\n return 'ice';\n }\n\n if (formattedLicense.value in COLOR_SCHEME_MAPPING) {\n return COLOR_SCHEME_MAPPING[formattedLicense.value];\n }\n\n return 'blue';\n });\n\n const formattedLicense = computed(() => {\n const uppercaseLicense = props.license.toUpperCase();\n\n if (uppercaseLicense.length > 4) {\n return uppercaseLicense.slice(0, 3);\n }\n\n return uppercaseLicense;\n });\n</script>\n\n<template>\n <Chip\n v-show=\"formattedLicense.length\"\n class=\"stash-license-chip\"\n data-test=\"stash-license-chip\"\n radius=\"pill\"\n shade=\"main\"\n :color-scheme=\"color\"\n :size=\"props.size\"\n v-bind=\"chipAttrs\"\n :disabled=\"disabled\"\n >\n {{ formattedLicense }}\n </Chip>\n</template>\n"],"names":["props","__props","attrs","useAttrs","chipAttrs","computed","tempAttrs","COLOR_SCHEME_MAPPING","color","formattedLicense","uppercaseLicense"],"mappings":";;;;;;;;;;;;AA4BE,UAAMA,IAAQC,GAGRC,IAAQC,EAAA,GACRC,IAAYC,EAAS,MAAM;AAC/B,YAAMC,IAAY,EAAE,GAAGJ,EAAA;AAGvB,oBAAOI,EAAU,cAAc,GAC/B,OAAOA,EAAU,QACjB,OAAOA,EAAU,OAEVA;AAAA,IACT,CAAC,GAEKC,IAAuB,OAAO,OAAO;AAAA,MACzC,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,IAAA,CACP,GAEKC,IAAQH,EAAiC,MACzCL,EAAM,WACD,QAGLS,EAAiB,SAASF,IACrBA,EAAqBE,EAAiB,KAAK,IAG7C,MACR,GAEKA,IAAmBJ,EAAS,MAAM;AACtC,YAAMK,IAAmBV,EAAM,QAAQ,YAAA;AAEvC,aAAIU,EAAiB,SAAS,IACrBA,EAAiB,MAAM,GAAG,CAAC,IAG7BA;AAAA,IACT,CAAC;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"LicenseChip.js","sources":["../src/components/LicenseChip/LicenseChip.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, useAttrs } from 'vue';\n\n import { StashPrimaryColorGroup } from '../../../types/colors';\n import Chip from '../Chip/Chip.vue';\n\n defineOptions({\n name: 'll-license-chip',\n inheritAttrs: false,\n });\n\n export interface LicenseChipProps {\n /**\n * License type to be displayed. This can be either the type code (e.g. \"MED\") or the full name (e.g. \"Medical\").\n */\n license: string;\n\n /**\n * Size of the chip. Defaults to medium. Available sizes: \"small\" | \"medium\".\n */\n size?: 'small' | 'medium';\n\n /**\n * Whether the chip is disabled. Defaults to false.\n */\n disabled?: boolean;\n }\n\n const props = withDefaults(defineProps<LicenseChipProps>(), {\n size: 'medium',\n });\n const attrs = useAttrs();\n const chipAttrs = computed(() => {\n const tempAttrs = { ...attrs };\n\n // prevents override to ensure license chips remain consistent\n delete tempAttrs['color-scheme'];\n delete tempAttrs['radius'];\n delete tempAttrs['shade'];\n\n return tempAttrs;\n });\n\n const COLOR_SCHEME_MAPPING = Object.freeze({\n MED: 'yellow',\n MEDI: 'yellow',\n REC: 'blue',\n RECR: 'blue',\n COM: 'royal',\n COMB: 'royal',\n ANC: 'orange',\n ANCI: 'orange',\n BUL: 'ice',\n BULK: 'ice',\n CAN: 'green',\n CANN: 'green',\n ADU: 'blue',\n ADUL: 'blue',\n });\n\n const color = computed<StashPrimaryColorGroup>(() => {\n if (props.disabled) {\n return 'ice';\n }\n\n if (formattedLicense.value in COLOR_SCHEME_MAPPING) {\n return COLOR_SCHEME_MAPPING[formattedLicense.value];\n }\n\n return 'blue';\n });\n\n const formattedLicense = computed(() => {\n const uppercaseLicense = props.license.toUpperCase();\n\n if (uppercaseLicense.length > 4) {\n return uppercaseLicense.slice(0, 3);\n }\n\n return uppercaseLicense;\n });\n</script>\n\n<template>\n <Chip\n v-show=\"formattedLicense.length\"\n class=\"stash-license-chip\"\n data-test=\"stash-license-chip\"\n radius=\"pill\"\n shade=\"main\"\n :color-scheme=\"color\"\n :size=\"props.size\"\n v-bind=\"chipAttrs\"\n :disabled=\"disabled\"\n >\n {{ formattedLicense }}\n </Chip>\n</template>\n"],"names":["props","__props","attrs","useAttrs","chipAttrs","computed","tempAttrs","COLOR_SCHEME_MAPPING","color","formattedLicense","uppercaseLicense","_withDirectives","_openBlock","_createBlock","Chip","_mergeProps","_vShow"],"mappings":";;;;;;;;;;;;AA4BE,UAAMA,IAAQC,GAGRC,IAAQC,EAAA,GACRC,IAAYC,EAAS,MAAM;AAC/B,YAAMC,IAAY,EAAE,GAAGJ,EAAA;AAGvB,oBAAOI,EAAU,cAAc,GAC/B,OAAOA,EAAU,QACjB,OAAOA,EAAU,OAEVA;AAAA,IACT,CAAC,GAEKC,IAAuB,OAAO,OAAO;AAAA,MACzC,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,IAAA,CACP,GAEKC,IAAQH,EAAiC,MACzCL,EAAM,WACD,QAGLS,EAAiB,SAASF,IACrBA,EAAqBE,EAAiB,KAAK,IAG7C,MACR,GAEKA,IAAmBJ,EAAS,MAAM;AACtC,YAAMK,IAAmBV,EAAM,QAAQ,YAAA;AAEvC,aAAIU,EAAiB,SAAS,IACrBA,EAAiB,MAAM,GAAG,CAAC,IAG7BA;AAAA,IACT,CAAC;qBAIDC,GAAAC,EAAA,GAAAC,EAYOC,GAZPC,EAYO;AAAA,MAVL,OAAM;AAAA,MACN,aAAU;AAAA,MACV,QAAO;AAAA,MACP,OAAM;AAAA,MACL,gBAAcP,EAAA;AAAA,MACd,MAAMR,EAAM;AAAA,IAAA,GACLI,EAAA,OAAS,EAChB,UAAUH,EAAA,SAAA,CAAQ,GAAA;AAAA,iBAEnB,MAAsB;AAAA,YAAnBQ,EAAA,KAAgB,GAAA,CAAA;AAAA,MAAA;;;MAVX,CAAAO,GAAAP,EAAA,MAAiB,MAAM;AAAA,IAAA;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.js","sources":["../src/components/ListItem/ListItem.vue"],"sourcesContent":["<script>\n import Checkbox from '../Checkbox/Checkbox.vue';\n\n export default {\n name: 'll-list-item',\n\n components: {\n 'll-checkbox': Checkbox,\n },\n\n props: {\n /**\n * The item to be selected\n */\n item: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Whether this row can be selected.\n */\n isSelectable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether this row's checkbox should be indeterminite\n */\n isIndeterminate: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether this row has an actions column or not. By default list items will\n * be styled to include actions. Use `not-actionable` to restyle a row that\n * has no actions.\n */\n notActionable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether this row is selected.\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Disables the checkbox\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: ['select'],\n\n methods: {\n /**\n * @param {boolean} value emit change event when item is selected\n */\n onSelect(value) {\n this.$emit('select', { item: this.item, value });\n },\n },\n };\n</script>\n\n<template>\n <li\n class=\"shadow-low\"\n :class=\"[$style.item, { [$style['is-selectable']]: isSelectable, [$style['not-actionable']]: notActionable }]\"\n >\n <ll-checkbox\n v-if=\"isSelectable\"\n data-test=\"checkbox|select-item\"\n :checked=\"selected\"\n :class=\"$style.checkbox\"\n :disabled=\"disabled || null\"\n :indeterminate=\"isIndeterminate\"\n @update:checked=\"onSelect\"\n />\n <slot></slot>\n </li>\n</template>\n\n<style module>\n @reference \"../../../styles/main.css\";\n\n @layer utilities {\n .item {\n background: var(--color-white);\n border-radius: var(--radius-sm);\n column-gap: var(--grid-gutter);\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n margin-bottom: --spacing(6);\n padding: --spacing(3);\n padding-top: --spacing(12);\n position: relative;\n row-gap: var(--grid-gutter);\n }\n\n @media (width >= theme(--breakpoint-md)) {\n .item {\n grid-template-columns: repeat(8, 1fr);\n }\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .item {\n align-items: center;\n border-bottom: 1px solid var(--color-ice-200);\n border-radius: 0;\n box-shadow: none;\n grid-template-columns: repeat(12, 1fr);\n margin-bottom: 0;\n padding: --spacing(6);\n row-gap: 0;\n }\n\n .item:last-child {\n border: 0;\n border-bottom-left-radius: var(--radius-sm);\n border-bottom-right-radius: var(--radius-sm);\n }\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .is-selectable {\n grid-template-columns: --spacing(1.5) repeat(12, 1fr);\n }\n }\n\n .not-actionable {\n padding-top: --spacing(3);\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .not-actionable {\n padding-top: --spacing(6);\n }\n }\n\n .checkbox {\n left: --spacing(3);\n position: absolute !important;\n top: 0;\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .checkbox {\n left: 0;\n position: relative !important;\n }\n\n .checkbox label {\n padding: 10px;\n }\n }\n }\n</style>\n"],"names":["_sfc_main","Checkbox","value","_createElementBlock","_normalizeClass","_ctx","$props","_createBlock","_component_ll_checkbox","$options","_createCommentVNode","_renderSlot"],"mappings":";;;;;;;;GAGOA,IAAU;AAAA,EACb,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,eAAeC;AAAA;EAGjB,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA;;;;IAMlB,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQX,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;EAIb,OAAO,CAAC,QAAQ;AAAA,EAEhB,SAAS;AAAA;AAAA;AAAA;AAAA,IAIP,SAASC,GAAO;AACd,WAAK,MAAM,UAAU,EAAE,MAAM,KAAK,MAAM,OAAAA,GAAO;AAAA,IACjD;AAAA;;;;cAMJC,EAcK,MAAA;AAAA,IAbH,OA7EJC,EAAA,CA6EU,cAAY,CACTC,SAAO,MAAI,EAAA,CAAKA,EAAA,OAAM,eAAA,CAAA,GAAoBC,EAAA,cAAY,CAAGD,EAAA,2BAA2BC,EAAA,cAAa,CAAA,CAAA,CAAA;AAAA;IAGlGA,EAAA,qBADRC,EAQEC,GAAA;AAAA,MAxFN,KAAA;AAAA,MAkFM,aAAU;AAAA,MACT,SAASF,EAAA;AAAA,MACT,OApFPF,EAoFcC,EAAA,OAAO,QAAQ;AAAA,MACtB,UAAUC,EAAA,YAAQ;AAAA,MAClB,eAAeA,EAAA;AAAA,MACf,oBAAgBG,EAAA;AAAA,0FAvFvBC,EAAA,IAAA,EAAA;AAAA,IAyFIC,EAAaN,EAAA,QAAA,SAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"ListItem.js","sources":["../src/components/ListItem/ListItem.vue"],"sourcesContent":["<script>\n import Checkbox from '../Checkbox/Checkbox.vue';\n\n export default {\n name: 'll-list-item',\n\n components: {\n 'll-checkbox': Checkbox,\n },\n\n props: {\n /**\n * The item to be selected\n */\n item: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Whether this row can be selected.\n */\n isSelectable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether this row's checkbox should be indeterminite\n */\n isIndeterminate: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether this row has an actions column or not. By default list items will\n * be styled to include actions. Use `not-actionable` to restyle a row that\n * has no actions.\n */\n notActionable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether this row is selected.\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Disables the checkbox\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: ['select'],\n\n methods: {\n /**\n * @param {boolean} value emit change event when item is selected\n */\n onSelect(value) {\n this.$emit('select', { item: this.item, value });\n },\n },\n };\n</script>\n\n<template>\n <li\n class=\"shadow-low\"\n :class=\"[$style.item, { [$style['is-selectable']]: isSelectable, [$style['not-actionable']]: notActionable }]\"\n >\n <ll-checkbox\n v-if=\"isSelectable\"\n data-test=\"checkbox|select-item\"\n :checked=\"selected\"\n :class=\"$style.checkbox\"\n :disabled=\"disabled || null\"\n :indeterminate=\"isIndeterminate\"\n @update:checked=\"onSelect\"\n />\n <slot></slot>\n </li>\n</template>\n\n<style module>\n @reference \"../../../styles/main.css\";\n\n @layer utilities {\n .item {\n background: var(--color-white);\n border-radius: var(--radius-sm);\n column-gap: var(--grid-gutter);\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n margin-bottom: --spacing(6);\n padding: --spacing(3);\n padding-top: --spacing(12);\n position: relative;\n row-gap: var(--grid-gutter);\n }\n\n @media (width >= theme(--breakpoint-md)) {\n .item {\n grid-template-columns: repeat(8, 1fr);\n }\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .item {\n align-items: center;\n border-bottom: 1px solid var(--color-ice-200);\n border-radius: 0;\n box-shadow: none;\n grid-template-columns: repeat(12, 1fr);\n margin-bottom: 0;\n padding: --spacing(6);\n row-gap: 0;\n }\n\n .item:last-child {\n border: 0;\n border-bottom-left-radius: var(--radius-sm);\n border-bottom-right-radius: var(--radius-sm);\n }\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .is-selectable {\n grid-template-columns: --spacing(1.5) repeat(12, 1fr);\n }\n }\n\n .not-actionable {\n padding-top: --spacing(3);\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .not-actionable {\n padding-top: --spacing(6);\n }\n }\n\n .checkbox {\n left: --spacing(3);\n position: absolute !important;\n top: 0;\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n .checkbox {\n left: 0;\n position: relative !important;\n }\n\n .checkbox label {\n padding: 10px;\n }\n }\n }\n</style>\n"],"names":["_sfc_main","Checkbox","value","_createElementBlock","_normalizeClass","_ctx","$props","_createBlock","_component_ll_checkbox","$options","_renderSlot"],"mappings":";;;;;;;;GAGOA,IAAU;AAAA,EACb,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,eAAeC;AAAA;EAGjB,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA;;;;IAMlB,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQX,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;EAIb,OAAO,CAAC,QAAQ;AAAA,EAEhB,SAAS;AAAA;AAAA;AAAA;AAAA,IAIP,SAASC,GAAO;AACd,WAAK,MAAM,UAAU,EAAE,MAAM,KAAK,MAAM,OAAAA,GAAO;AAAA,IACjD;AAAA;;;;cAMJC,EAcK,MAAA;AAAA,IAbH,OAAKC,EAAA,CAAC,cAAY,CACTC,EAAA,OAAO,MAAI,EAAA,CAAKA,EAAA,OAAM,eAAA,CAAA,GAAoBC,EAAA,cAAY,CAAGD,EAAA,2BAA2BC,EAAA,cAAa,CAAA,CAAA,CAAA;AAAA;IAGlGA,EAAA,qBADRC,EAQEC,GAAA;AAAA;MANA,aAAU;AAAA,MACT,SAASF,EAAA;AAAA,MACT,OAAKF,EAAEC,EAAA,OAAO,QAAQ;AAAA,MACtB,UAAUC,EAAA,YAAQ;AAAA,MAClB,eAAeA,EAAA;AAAA,MACf,oBAAgBG,EAAA;AAAA;IAEnBC,EAAaL,EAAA,QAAA,SAAA;AAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListItemCell.js","sources":["../src/components/ListItemCell/ListItemCell.vue"],"sourcesContent":["<script>\n export default {\n name: 'll-list-item-cell',\n\n props: {\n /**\n * Is this cell for the Action column\n */\n isAction: Boolean,\n },\n };\n</script>\n\n<template>\n <div :class=\"isAction ? $style.action : $style.cell\">\n <slot></slot>\n </div>\n</template>\n\n<style module>\n @reference \"../../../styles/main.css\";\n\n @layer utilities {\n .cell {\n background-color: var(--color-ice-100);\n border-radius: var(--radius-sm);\n padding: --spacing(1.5);\n\n :global(.stash-label) {\n font-size: var(--text-xs);\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n background: none;\n padding: 0;\n\n :global(.stash-label) {\n display: none !important;\n }\n }\n }\n\n .action {\n position: absolute;\n right: 0;\n top: 0;\n\n @media (width >= theme(--breakpoint-lg)) {\n position: initial;\n }\n }\n }\n</style>\n"],"names":["_sfc_main","_createElementBlock","_normalizeClass","$props","_ctx","_renderSlot"],"mappings":";;;;;GACOA,IAAU;AAAA,EACb,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,UAAU;AAAA;;;cAMdC,EAEM,OAAA;AAAA,IAFA,OAdRC,EAceC,EAAA,WAAWC,EAAA,OAAO,SAASA,EAAA,OAAO,IAAI;AAAA;IACjDC,EAAaD,EAAA,QAAA,SAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"ListItemCell.js","sources":["../src/components/ListItemCell/ListItemCell.vue"],"sourcesContent":["<script>\n export default {\n name: 'll-list-item-cell',\n\n props: {\n /**\n * Is this cell for the Action column\n */\n isAction: Boolean,\n },\n };\n</script>\n\n<template>\n <div :class=\"isAction ? $style.action : $style.cell\">\n <slot></slot>\n </div>\n</template>\n\n<style module>\n @reference \"../../../styles/main.css\";\n\n @layer utilities {\n .cell {\n background-color: var(--color-ice-100);\n border-radius: var(--radius-sm);\n padding: --spacing(1.5);\n\n :global(.stash-label) {\n font-size: var(--text-xs);\n }\n\n @media (width >= theme(--breakpoint-lg)) {\n background: none;\n padding: 0;\n\n :global(.stash-label) {\n display: none !important;\n }\n }\n }\n\n .action {\n position: absolute;\n right: 0;\n top: 0;\n\n @media (width >= theme(--breakpoint-lg)) {\n position: initial;\n }\n }\n }\n</style>\n"],"names":["_sfc_main","_createElementBlock","_normalizeClass","$props","_ctx","_renderSlot"],"mappings":";;;;;GACOA,IAAU;AAAA,EACb,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,UAAU;AAAA;;;cAMdC,EAEM,OAAA;AAAA,IAFA,OAAKC,EAAEC,aAAWC,EAAA,OAAO,SAASA,EAAA,OAAO,IAAI;AAAA;IACjDC,EAAaD,EAAA,QAAA,SAAA;AAAA;;;;;"}
package/dist/ListView.js CHANGED
@@ -10,7 +10,7 @@ import le from "./Badge.js";
10
10
  import v from "./Button.js";
11
11
  import D from "./Checkbox.js";
12
12
  import ie from "./Dropdown.js";
13
- import { _ as R } from "./Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js";
13
+ import { _ as R } from "./Expand.vue_vue_type_script_setup_true_lang-BmNJA0Xy.js";
14
14
  import re from "./Filters.js";
15
15
  import B from "./Icon.js";
16
16
  import ae from "./Input.js";