origam 2.18.11 → 2.18.13

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.
@@ -448,6 +448,8 @@
448
448
  --origam-chip__close---max-width: 18px;
449
449
  --origam-chip__close---user-select: none;
450
450
  --origam-chip__close---flex: 0 1 auto;
451
+ --origam-chip__prepend---margin-inline-end: 6px;
452
+ --origam-chip__append---margin-inline-start: 6px;
451
453
  --origam-chip__filter---transition-property: transform, opacity;
452
454
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
453
455
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
@@ -3190,6 +3192,8 @@
3190
3192
  --origam-chip__close---max-width: 18px;
3191
3193
  --origam-chip__close---user-select: none;
3192
3194
  --origam-chip__close---flex: 0 1 auto;
3195
+ --origam-chip__prepend---margin-inline-end: 6px;
3196
+ --origam-chip__append---margin-inline-start: 6px;
3193
3197
  --origam-chip__filter---transition-property: transform, opacity;
3194
3198
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
3195
3199
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
@@ -350,6 +350,8 @@
350
350
  --origam-chip__close---max-width: 18px;
351
351
  --origam-chip__close---user-select: none;
352
352
  --origam-chip__close---flex: 0 1 auto;
353
+ --origam-chip__prepend---margin-inline-end: 6px;
354
+ --origam-chip__append---margin-inline-start: 6px;
353
355
  --origam-chip__filter---transition-property: transform, opacity;
354
356
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
355
357
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
@@ -448,6 +448,8 @@
448
448
  --origam-chip__close---max-width: 18px;
449
449
  --origam-chip__close---user-select: none;
450
450
  --origam-chip__close---flex: 0 1 auto;
451
+ --origam-chip__prepend---margin-inline-end: 6px;
452
+ --origam-chip__append---margin-inline-start: 6px;
451
453
  --origam-chip__filter---transition-property: transform, opacity;
452
454
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
453
455
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
@@ -3190,6 +3192,8 @@
3190
3192
  --origam-chip__close---max-width: 18px;
3191
3193
  --origam-chip__close---user-select: none;
3192
3194
  --origam-chip__close---flex: 0 1 auto;
3195
+ --origam-chip__prepend---margin-inline-end: 6px;
3196
+ --origam-chip__append---margin-inline-start: 6px;
3193
3197
  --origam-chip__filter---transition-property: transform, opacity;
3194
3198
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
3195
3199
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
@@ -350,6 +350,8 @@
350
350
  --origam-chip__close---max-width: 18px;
351
351
  --origam-chip__close---user-select: none;
352
352
  --origam-chip__close---flex: 0 1 auto;
353
+ --origam-chip__prepend---margin-inline-end: 6px;
354
+ --origam-chip__append---margin-inline-start: 6px;
353
355
  --origam-chip__filter---transition-property: transform, opacity;
354
356
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
355
357
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
@@ -85,7 +85,8 @@
85
85
 
86
86
  <script lang="ts" setup>
87
87
  defineOptions({
88
- name: "OrigamChartAxis"
88
+ name: "OrigamChartAxis",
89
+ inheritAttrs: false
89
90
  });
90
91
  const props = defineProps({
91
92
  plot: { type: Object, required: true },
@@ -435,6 +435,44 @@ defineExpose({
435
435
  display: inline-flex;
436
436
  }
437
437
 
438
+ // #957 — `__close` owned both of its margin channels since forever;
439
+ // `__prepend` / `__append` owned NEITHER, so a chip with an icon
440
+ // rendered it glued to its label (measured: 0px, `margin-inline-end:
441
+ // 0px`, `gap: normal`, on all 8 identities) and no theme could fix it
442
+ // — the channel had never been opened. Default 6px is not a new design
443
+ // value: it is `--origam-chip__close---margin-inline-start`'s, i.e.
444
+ // the component's own precedent for "gutter between an affix and the
445
+ // label".
446
+ //
447
+ // ⛔ The gutter is CONDITIONAL on the label being non-empty, and that
448
+ // is the whole difficulty. `__content` has NO `v-if`: an icon-only
449
+ // chip (`<origam-chip prepend-icon="…"/>`, no text, no default slot)
450
+ // still renders `<div class="origam-chip__content">` holding the
451
+ // empty text node Vue emits for `{{ text }}`. An unconditional margin
452
+ // would therefore hang a 6px PHANTOM gutter off the trailing edge of
453
+ // every icon-only chip, in 217 places. Measured in Chromium, which is
454
+ // what makes `:empty` the right discriminator here:
455
+ //
456
+ // content = "text" → :empty false → gutter 6px
457
+ // content = <div></div> → :empty true → gutter 0px
458
+ // content = empty text node (Vue!) → :empty true → gutter 0px
459
+ // content = " " (one space) → :empty false → gutter 6px
460
+ //
461
+ // `__prepend` needs `:has(+ …)` because the element it depends on is
462
+ // its FOLLOWING sibling; `__append` reads its PRECEDING sibling, so a
463
+ // plain `+` combinator suffices. Both keep the declaration on the
464
+ // element the token NAMES, so `--origam-chip__prepend---*` stays
465
+ // readable as "the prepend zone's own margin". Where `:has()` is
466
+ // unsupported the prepend gutter is simply absent — today's rendering,
467
+ // not a regression.
468
+ &__prepend:has(+ #{$this}__content:not(:empty)) {
469
+ margin-inline-end: var(--origam-chip__prepend---margin-inline-end, 6px);
470
+ }
471
+
472
+ &__content:not(:empty) + &__append {
473
+ margin-inline-start: var(--origam-chip__append---margin-inline-start, 6px);
474
+ }
475
+
438
476
  &__close {
439
477
  cursor: var(--origam-chip__close---cursor, pointer);
440
478
  flex: var(--origam-chip__close---flex, 0 1 auto);
@@ -16,7 +16,7 @@
16
16
 
17
17
  <script lang="ts" setup>
18
18
  import { onMounted, ref } from "vue";
19
- defineOptions({ name: "OrigamClientOnly" });
19
+ defineOptions({ name: "OrigamClientOnly", inheritAttrs: false });
20
20
  defineProps({
21
21
  placeholderTag: { type: String, required: false },
22
22
  placeholderClass: { type: String, required: false }
@@ -8,6 +8,7 @@
8
8
  :class="rootClasses"
9
9
  :style="rootStyles"
10
10
  :data-cy="dataCy"
11
+ v-bind="{ ...$attrs }"
11
12
  @click.self="handleBackdropClick"
12
13
  @keydown="handleKeydown"
13
14
  >
@@ -178,6 +179,7 @@ import { IN_BROWSER } from "../../consts/Commons/commons.const";
178
179
  import { MDI_ICONS } from "../../enums/Commons/mdi.enum";
179
180
  import { getUid } from "../../utils/Commons/getCurrentInstance.util";
180
181
  import { fuzzyMatch } from "../../utils/CommandPalette/fuzzy-match.util";
182
+ defineOptions({ inheritAttrs: false });
181
183
  const props = defineProps({
182
184
  modelValue: { type: Boolean, required: false, default: false },
183
185
  hotkey: { type: [Array, null], required: false, default: () => COMMAND_PALETTE_DEFAULT_HOTKEY },
@@ -80,6 +80,7 @@ import { LOADER_KIND } from "../../enums/Commons/loader.enum";
80
80
  import { PROGRESS_TYPE } from "../../enums/Progress/progress.enum";
81
81
  import { pickDataTableHeaderColumnSlotNames } from "../../utils/DataTable/slot-name.util";
82
82
  import { computed, ref, StyleValue, useSlots } from "vue";
83
+ defineOptions({ inheritAttrs: false });
83
84
  const props = defineProps({
84
85
  id: { type: String, required: false },
85
86
  class: { type: [String, Array, Object], required: false },
@@ -42,6 +42,7 @@ import { useProps } from "../../composables/Commons/props.composable";
42
42
  import { useStyle } from "../../composables/Commons/style.composable";
43
43
  import { pickDataTableHeaderColumnSlotNames } from "../../utils/DataTable/slot-name.util";
44
44
  import { computed, ref, StyleValue, useSlots } from "vue";
45
+ defineOptions({ inheritAttrs: false });
45
46
  const props = defineProps({
46
47
  headers: { type: Array, required: true },
47
48
  id: { type: String, required: false },
@@ -41,6 +41,7 @@
41
41
  class="origam-data-table-rows origam-data-table-rows--no-data"
42
42
  :class="textColorClasses"
43
43
  :style="textColorStyles"
44
+ v-bind="{ ...$attrs }"
44
45
  >
45
46
  <td :colspan="columns.length">
46
47
  <slot name="no-data">
@@ -153,6 +154,7 @@ import {
153
154
  } from "../../utils/DataTable/slot-name.util";
154
155
  import { computed, mergeProps, useAttrs, useSlots } from "vue";
155
156
  const attrs = useAttrs();
157
+ defineOptions({ inheritAttrs: false });
156
158
  const props = defineProps({
157
159
  hideNoData: { type: Boolean, required: false },
158
160
  items: { type: Array, required: false },
@@ -248,7 +250,7 @@ const itemSlotProps = (item, index) => {
248
250
  * read by the row at all. Both fell through
249
251
  * `<OrigamDataTableRow>`'s undeclared-key path
250
252
  * straight into `$attrs`, which its
251
- * `v-bind="$attrs"` root then serialised as literal
253
+ * `v-bind="{ ...$attrs }"` root then serialised as literal
252
254
  * DOM attributes on every rendered `<tr>`:
253
255
  * `index="0" mobile="false"`.
254
256
  *
@@ -6,6 +6,7 @@
6
6
  import { computed } from "vue";
7
7
  import { provideDefaults } from "../../composables/Commons/defaults.composable";
8
8
  import { useProps } from "../../composables/Commons/props.composable";
9
+ defineOptions({ inheritAttrs: false });
9
10
  const props = defineProps({
10
11
  defaults: { type: Object, required: false },
11
12
  disabled: { type: Boolean, required: false },
@@ -88,6 +88,7 @@ import { useTouch } from "../../composables/Commons/touch.composable";
88
88
  import { useVModel } from "../../composables/Commons/vModel.composable";
89
89
  import { INLINE } from "../../enums/Commons/anchor.enum";
90
90
  import { int } from "../../utils/Commons/commons.util";
91
+ defineOptions({ inheritAttrs: false });
91
92
  const props = defineProps({
92
93
  disableResizeWatcher: { type: Boolean, required: false },
93
94
  disableRouteWatcher: { type: Boolean, required: false },
@@ -11,6 +11,7 @@
11
11
  :aria-label="skeletonAriaLabel"
12
12
  aria-busy="true"
13
13
  role="status"
14
+ v-bind="{ ...$attrs }"
14
15
  >
15
16
  <div
16
17
  :class="skeletonCircularClasses"
@@ -30,6 +31,7 @@
30
31
  :aria-label="skeletonAriaLabel"
31
32
  aria-busy="true"
32
33
  role="status"
34
+ v-bind="{ ...$attrs }"
33
35
  >
34
36
  <div :class="skeletonRectangularClasses"/>
35
37
  <div :class="skeletonTextClasses"/>
@@ -45,6 +47,7 @@
45
47
  :aria-label="skeletonAriaLabel"
46
48
  aria-busy="true"
47
49
  role="status"
50
+ v-bind="{ ...$attrs }"
48
51
  />
49
52
  </template>
50
53
 
@@ -57,6 +60,7 @@ import { useSize } from "../../composables/Commons/size.composable";
57
60
  import { useStyle } from "../../composables/Commons/style.composable";
58
61
  import { convertToUnit } from "../../utils/Commons/commons.util";
59
62
  import { computed, toRef } from "vue";
63
+ defineOptions({ inheritAttrs: false });
60
64
  const props = defineProps({
61
65
  variant: { type: null, required: false, default: "rectangular" },
62
66
  width: { type: [String, Number], required: false },
@@ -8,6 +8,7 @@
8
8
  :class="stackClasses"
9
9
  :style="stackStyles"
10
10
  role="region"
11
+ v-bind="{ ...$attrs }"
11
12
  >
12
13
  <transition-group
13
14
  :name="transitionName"
@@ -44,6 +45,7 @@ import { useSnackbarGroupInternal } from "../../composables/Snackbar/snackbarGro
44
45
  import { INTENT } from "../../enums/Commons/intent.enum";
45
46
  import { SNACKBAR_GROUP_DIRECTION } from "../../enums/Snackbar/snackbar-group.enum";
46
47
  import { SNACKBAR_GROUP_DEFAULT_DURATION, SNACKBAR_GROUP_DEFAULT_ID, SNACKBAR_GROUP_DEFAULT_MAX, SNACKBAR_GROUP_DEFAULT_SPACING } from "../../consts/Snackbar/snackbar-group.const";
48
+ defineOptions({ inheritAttrs: false });
47
49
  const props = defineProps({
48
50
  id: { type: String, required: false, default: SNACKBAR_GROUP_DEFAULT_ID },
49
51
  location: { type: null, required: false, default: "bottom-right" },
@@ -40,6 +40,7 @@
40
40
  ref="containerRef"
41
41
  :class="virtualScrollClasses"
42
42
  :style="virtualScrollStyles"
43
+ v-bind="{ ...$attrs }"
43
44
  @scrollend="handleScrollend"
44
45
  @scroll-passive="handleScroll"
45
46
  >
@@ -89,6 +90,7 @@ import { useVirtual } from "../../composables/Commons/virtual.composable";
89
90
  import { convertToUnit } from "../../utils/Commons/commons.util";
90
91
  import { getCurrentInstance } from "../../utils/Commons/getCurrentInstance.util";
91
92
  import { getScrollParent } from "../../utils/Commons/scroll.util";
93
+ defineOptions({ inheritAttrs: false });
92
94
  const props = defineProps({
93
95
  items: { type: Array, required: false, default: () => [] },
94
96
  renderless: { type: Boolean, required: false },
@@ -23,6 +23,7 @@ import { computed, StyleValue, useAttrs, watch } from "vue";
23
23
  import { useProps } from "../../composables/Commons/props.composable";
24
24
  import { useResizeObserver } from "../../composables/Commons/resizeObserver.composable";
25
25
  import { useStyle } from "../../composables/Commons/style.composable";
26
+ defineOptions({ inheritAttrs: false });
26
27
  const props = defineProps({
27
28
  renderless: { type: Boolean, required: false },
28
29
  id: { type: String, required: false },