@dialpad/dialtone 9.63.0 → 9.64.0

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 (128) hide show
  1. package/dist/css/dialtone-default-theme.css +96 -17
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone.css +84 -17
  4. package/dist/css/dialtone.min.css +1 -1
  5. package/dist/css/tokens/tokens-dp-dark.css +12 -0
  6. package/dist/css/tokens/tokens-dp-light.css +12 -0
  7. package/dist/css/tokens/tokens-expressive-dark.css +12 -0
  8. package/dist/css/tokens/tokens-expressive-light.css +12 -0
  9. package/dist/css/tokens/tokens-expressive-sm-dark.css +12 -0
  10. package/dist/css/tokens/tokens-expressive-sm-light.css +12 -0
  11. package/dist/css/tokens/tokens-tmo-dark.css +12 -0
  12. package/dist/css/tokens/tokens-tmo-light.css +12 -0
  13. package/dist/themes/dp-dark.cjs +1 -1
  14. package/dist/themes/dp-dark.js +1 -1
  15. package/dist/themes/dp-light.cjs +1 -1
  16. package/dist/themes/dp-light.js +1 -1
  17. package/dist/themes/expressive-dark.cjs +1 -1
  18. package/dist/themes/expressive-dark.js +1 -1
  19. package/dist/themes/expressive-light.cjs +1 -1
  20. package/dist/themes/expressive-light.js +1 -1
  21. package/dist/themes/expressive-sm-dark.cjs +1 -1
  22. package/dist/themes/expressive-sm-dark.js +1 -1
  23. package/dist/themes/expressive-sm-light.cjs +1 -1
  24. package/dist/themes/expressive-sm-light.js +1 -1
  25. package/dist/themes/tmo-dark.cjs +1 -1
  26. package/dist/themes/tmo-dark.js +1 -1
  27. package/dist/themes/tmo-light.cjs +1 -1
  28. package/dist/themes/tmo-light.js +1 -1
  29. package/dist/tokens/css/tokens-dp-dark.css +12 -0
  30. package/dist/tokens/css/tokens-dp-light.css +12 -0
  31. package/dist/tokens/css/tokens-expressive-dark.css +12 -0
  32. package/dist/tokens/css/tokens-expressive-light.css +12 -0
  33. package/dist/tokens/css/tokens-expressive-sm-dark.css +12 -0
  34. package/dist/tokens/css/tokens-expressive-sm-light.css +12 -0
  35. package/dist/tokens/css/tokens-tmo-dark.css +12 -0
  36. package/dist/tokens/css/tokens-tmo-light.css +12 -0
  37. package/dist/tokens/doc.json +8274 -7922
  38. package/dist/tokens/less/tokens-dp-dark.less +2 -0
  39. package/dist/tokens/less/tokens-dp-light.less +2 -0
  40. package/dist/tokens/less/tokens-expressive-dark.less +2 -0
  41. package/dist/tokens/less/tokens-expressive-light.less +2 -0
  42. package/dist/tokens/less/tokens-expressive-sm-dark.less +2 -0
  43. package/dist/tokens/less/tokens-expressive-sm-light.less +2 -0
  44. package/dist/tokens/less/tokens-tmo-dark.less +2 -0
  45. package/dist/tokens/less/tokens-tmo-light.less +2 -0
  46. package/dist/tokens/tokens-dp-dark.json +2 -0
  47. package/dist/tokens/tokens-dp-light.json +2 -0
  48. package/dist/tokens/tokens-expressive-dark.json +2 -0
  49. package/dist/tokens/tokens-expressive-light.json +2 -0
  50. package/dist/tokens/tokens-expressive-sm-dark.json +2 -0
  51. package/dist/tokens/tokens-expressive-sm-light.json +2 -0
  52. package/dist/tokens/tokens-tmo-dark.json +2 -0
  53. package/dist/tokens/tokens-tmo-light.json +2 -0
  54. package/dist/vue2/component-documentation.json +1 -1
  55. package/dist/vue2/dialtone-vue.cjs +3 -0
  56. package/dist/vue2/dialtone-vue.cjs.map +1 -1
  57. package/dist/vue2/dialtone-vue.js +3 -0
  58. package/dist/vue2/dialtone-vue.js.map +1 -1
  59. package/dist/vue2/lib/button.cjs +2 -8
  60. package/dist/vue2/lib/button.cjs.map +1 -1
  61. package/dist/vue2/lib/button.js +2 -8
  62. package/dist/vue2/lib/button.js.map +1 -1
  63. package/dist/vue2/lib/general-row.cjs +2 -2
  64. package/dist/vue2/lib/general-row.cjs.map +1 -1
  65. package/dist/vue2/lib/general-row.js +2 -2
  66. package/dist/vue2/lib/general-row.js.map +1 -1
  67. package/dist/vue2/lib/rich-text-editor.cjs +1 -9
  68. package/dist/vue2/lib/rich-text-editor.cjs.map +1 -1
  69. package/dist/vue2/lib/rich-text-editor.js +1 -9
  70. package/dist/vue2/lib/rich-text-editor.js.map +1 -1
  71. package/dist/vue2/lib/split-button.cjs +512 -0
  72. package/dist/vue2/lib/split-button.cjs.map +1 -0
  73. package/dist/vue2/lib/split-button.js +512 -0
  74. package/dist/vue2/lib/split-button.js.map +1 -0
  75. package/dist/vue2/style.css +65 -65
  76. package/dist/vue2/types/components/button/button.vue.d.ts +2 -14
  77. package/dist/vue2/types/components/button/button.vue.d.ts.map +1 -1
  78. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  79. package/dist/vue2/types/components/split_button/index.d.ts +3 -0
  80. package/dist/vue2/types/components/split_button/index.d.ts.map +1 -0
  81. package/dist/vue2/types/components/split_button/split_button-alpha.vue.d.ts +183 -0
  82. package/dist/vue2/types/components/split_button/split_button-alpha.vue.d.ts.map +1 -0
  83. package/dist/vue2/types/components/split_button/split_button-omega.vue.d.ts +136 -0
  84. package/dist/vue2/types/components/split_button/split_button-omega.vue.d.ts.map +1 -0
  85. package/dist/vue2/types/components/split_button/split_button.vue.d.ts +347 -0
  86. package/dist/vue2/types/components/split_button/split_button.vue.d.ts.map +1 -0
  87. package/dist/vue2/types/components/split_button/split_button_constants.d.ts +12 -0
  88. package/dist/vue2/types/components/split_button/split_button_constants.d.ts.map +1 -0
  89. package/dist/vue2/types/index.d.ts +1 -0
  90. package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts +1 -1
  91. package/dist/vue3/component-documentation.json +1 -1
  92. package/dist/vue3/dialtone-vue.cjs +3 -0
  93. package/dist/vue3/dialtone-vue.cjs.map +1 -1
  94. package/dist/vue3/dialtone-vue.js +3 -0
  95. package/dist/vue3/dialtone-vue.js.map +1 -1
  96. package/dist/vue3/lib/button.cjs +3 -9
  97. package/dist/vue3/lib/button.cjs.map +1 -1
  98. package/dist/vue3/lib/button.js +3 -9
  99. package/dist/vue3/lib/button.js.map +1 -1
  100. package/dist/vue3/lib/general-row.cjs +3 -3
  101. package/dist/vue3/lib/general-row.cjs.map +1 -1
  102. package/dist/vue3/lib/general-row.js +3 -3
  103. package/dist/vue3/lib/general-row.js.map +1 -1
  104. package/dist/vue3/lib/rich-text-editor.cjs +1 -9
  105. package/dist/vue3/lib/rich-text-editor.cjs.map +1 -1
  106. package/dist/vue3/lib/rich-text-editor.js +1 -9
  107. package/dist/vue3/lib/rich-text-editor.js.map +1 -1
  108. package/dist/vue3/lib/split-button.cjs +544 -0
  109. package/dist/vue3/lib/split-button.cjs.map +1 -0
  110. package/dist/vue3/lib/split-button.js +544 -0
  111. package/dist/vue3/lib/split-button.js.map +1 -0
  112. package/dist/vue3/style.css +65 -65
  113. package/dist/vue3/types/components/button/button.vue.d.ts +4 -16
  114. package/dist/vue3/types/components/button/button.vue.d.ts.map +1 -1
  115. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  116. package/dist/vue3/types/components/split_button/index.d.ts +3 -0
  117. package/dist/vue3/types/components/split_button/index.d.ts.map +1 -0
  118. package/dist/vue3/types/components/split_button/split_button-alpha.vue.d.ts +183 -0
  119. package/dist/vue3/types/components/split_button/split_button-alpha.vue.d.ts.map +1 -0
  120. package/dist/vue3/types/components/split_button/split_button-omega.vue.d.ts +136 -0
  121. package/dist/vue3/types/components/split_button/split_button-omega.vue.d.ts.map +1 -0
  122. package/dist/vue3/types/components/split_button/split_button.vue.d.ts +348 -0
  123. package/dist/vue3/types/components/split_button/split_button.vue.d.ts.map +1 -0
  124. package/dist/vue3/types/components/split_button/split_button_constants.d.ts +12 -0
  125. package/dist/vue3/types/components/split_button/split_button_constants.d.ts.map +1 -0
  126. package/dist/vue3/types/index.d.ts +1 -0
  127. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts +1 -1
  128. package/package.json +2 -2
@@ -0,0 +1,544 @@
1
+ import { resolveComponent, resolveDirective, withDirectives, openBlock, createBlock, normalizeClass, withCtx, renderSlot, createVNode, createElementBlock, normalizeStyle, mergeProps } from "vue";
2
+ import { _export_sfc } from "../chunks/_plugin-vue_export-helper-caHeSgYY.js";
3
+ import { DtButton, BUTTON_ICON_SIZES, ICON_POSITION_MODIFIERS, BUTTON_IMPORTANCE_MODIFIERS, BUTTON_KIND_MODIFIERS, BUTTON_SIZE_MODIFIERS } from "./button.js";
4
+ import { DtIconChevronDown } from "@dialpad/dialtone-icons/vue3";
5
+ import { getUniqueString, hasSlotContent } from "../common/utils.js";
6
+ import { DtDropdown } from "../chunks/dropdown-oA-_Gotg.js";
7
+ import "../chunks/link_constants-AfTWrr-n.js";
8
+ import "../common/constants.js";
9
+ import "../chunks/keyboard_list_navigation-ScXhrxya.js";
10
+ import "../chunks/dropdown_constants-w1MXGC3Z.js";
11
+ import "../chunks/sr_only_close_button-3EdsV-dH.js";
12
+ import "./icon.js";
13
+ import "../chunks/icon_constants-Dy4MEUJL.js";
14
+ import "@dialpad/dialtone-icons/icons.json";
15
+ import "./popover.js";
16
+ import "../chunks/popover_constants-WsOUIY-m.js";
17
+ import "tippy.js";
18
+ import "../chunks/modal-XOr4kiNZ.js";
19
+ import "./lazy-show.js";
20
+ import "../chunks/list_item_constants-u1xcN9Dd.js";
21
+ const _sfc_main$2 = {
22
+ name: "SplitButtonAlpha",
23
+ components: {
24
+ DtButton
25
+ },
26
+ props: {
27
+ /**
28
+ * Determines whether the button should have active styling
29
+ */
30
+ active: {
31
+ type: Boolean,
32
+ default: false
33
+ },
34
+ /**
35
+ * Descriptive label for the button
36
+ */
37
+ ariaLabel: {
38
+ type: String,
39
+ default: null
40
+ },
41
+ /**
42
+ * The position of the icon slot within the button.
43
+ */
44
+ iconPosition: {
45
+ type: String,
46
+ default: "left"
47
+ },
48
+ /**
49
+ * Used to customize the label container
50
+ */
51
+ labelClass: {
52
+ type: [String, Array, Object],
53
+ default: ""
54
+ },
55
+ /**
56
+ * Whether the button should display a loading animation or not.
57
+ */
58
+ loading: {
59
+ type: Boolean,
60
+ default: false
61
+ },
62
+ /**
63
+ * Text shown in tooltip when you hover the button
64
+ */
65
+ tooltipText: {
66
+ type: String,
67
+ default: ""
68
+ },
69
+ /**
70
+ * Determines whether a screenreader reads live updates of
71
+ * the button content to the user while the button is in focus.
72
+ */
73
+ assertiveOnFocus: {
74
+ type: Boolean,
75
+ default: false
76
+ },
77
+ /**
78
+ * HTML button disabled attribute
79
+ */
80
+ disabled: {
81
+ type: Boolean,
82
+ default: false
83
+ },
84
+ /**
85
+ * The fill and outline of the button associated with its visual importance.
86
+ */
87
+ importance: {
88
+ type: String,
89
+ default: "primary"
90
+ },
91
+ /**
92
+ * The color of the button.
93
+ */
94
+ kind: {
95
+ type: String,
96
+ default: "default"
97
+ },
98
+ /**
99
+ * The size of the button.
100
+ */
101
+ size: {
102
+ type: String,
103
+ default: "md"
104
+ }
105
+ },
106
+ data() {
107
+ return {
108
+ BUTTON_ICON_SIZES
109
+ };
110
+ }
111
+ };
112
+ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
113
+ const _component_dt_button = resolveComponent("dt-button");
114
+ const _directive_dt_tooltip = resolveDirective("dt-tooltip");
115
+ return withDirectives((openBlock(), createBlock(_component_dt_button, {
116
+ "data-qa": "dt-split-button-alpha",
117
+ active: $props.active,
118
+ "aria-label": $props.ariaLabel,
119
+ "assertive-on-focus": $props.assertiveOnFocus,
120
+ class: normalizeClass(`d-split-btn__alpha d-split-btn__alpha--${$props.size}`),
121
+ disabled: $props.disabled,
122
+ "icon-position": $props.iconPosition,
123
+ importance: $props.importance,
124
+ kind: $props.kind,
125
+ "label-class": $props.labelClass,
126
+ loading: $props.loading,
127
+ size: $props.size
128
+ }, {
129
+ icon: withCtx(() => [
130
+ renderSlot(_ctx.$slots, "icon", {
131
+ size: $data.BUTTON_ICON_SIZES[$props.size]
132
+ })
133
+ ]),
134
+ default: withCtx(() => [
135
+ renderSlot(_ctx.$slots, "default")
136
+ ]),
137
+ _: 3
138
+ }, 8, ["active", "aria-label", "assertive-on-focus", "class", "disabled", "icon-position", "importance", "kind", "label-class", "loading", "size"])), [
139
+ [_directive_dt_tooltip, $props.tooltipText]
140
+ ]);
141
+ }
142
+ const SplitButtonAlpha = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2]]);
143
+ const SPLIT_BUTTON_ICON_SIZES = {
144
+ xs: "100",
145
+ sm: "100",
146
+ md: "200",
147
+ lg: "200",
148
+ xl: "300"
149
+ };
150
+ const _sfc_main$1 = {
151
+ name: "SplitButtonOmega",
152
+ components: {
153
+ DtButton,
154
+ DtIconChevronDown
155
+ },
156
+ props: {
157
+ /**
158
+ * Determines whether the button should have active styling
159
+ */
160
+ active: {
161
+ type: Boolean,
162
+ default: false
163
+ },
164
+ /**
165
+ * Descriptive label for the button
166
+ */
167
+ ariaLabel: {
168
+ type: String,
169
+ default: null
170
+ },
171
+ /**
172
+ * HTML button disabled attribute
173
+ */
174
+ disabled: {
175
+ type: Boolean,
176
+ default: false
177
+ },
178
+ /**
179
+ * Element ID, useful in case you need to reference the button
180
+ * as an external anchor for popover
181
+ */
182
+ id: {
183
+ type: String,
184
+ default: getUniqueString()
185
+ },
186
+ /**
187
+ * The fill and outline of the button associated with its visual importance.
188
+ */
189
+ importance: {
190
+ type: String,
191
+ default: "primary"
192
+ },
193
+ /**
194
+ * The color of the button.
195
+ */
196
+ kind: {
197
+ type: String,
198
+ default: "default"
199
+ },
200
+ /**
201
+ * The size of the button.
202
+ */
203
+ size: {
204
+ type: String,
205
+ default: "md"
206
+ },
207
+ /**
208
+ * Text shown in tooltip when you hover the button
209
+ */
210
+ tooltipText: {
211
+ type: String,
212
+ default: ""
213
+ }
214
+ },
215
+ data() {
216
+ return {
217
+ SPLIT_BUTTON_ICON_SIZES
218
+ };
219
+ }
220
+ };
221
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
222
+ const _component_dt_icon_chevron_down = resolveComponent("dt-icon-chevron-down");
223
+ const _component_dt_button = resolveComponent("dt-button");
224
+ const _directive_dt_tooltip = resolveDirective("dt-tooltip");
225
+ return withDirectives((openBlock(), createBlock(_component_dt_button, {
226
+ id: $props.id,
227
+ "data-qa": "dt-split-button-omega",
228
+ active: $props.active,
229
+ "aria-label": $props.ariaLabel,
230
+ class: normalizeClass(`d-split-btn__omega d-split-btn__omega--${$props.size}`),
231
+ disabled: $props.disabled,
232
+ importance: $props.importance,
233
+ kind: $props.kind,
234
+ size: $props.size
235
+ }, {
236
+ icon: withCtx(() => [
237
+ renderSlot(_ctx.$slots, "icon", {
238
+ size: $data.SPLIT_BUTTON_ICON_SIZES[$props.size]
239
+ }, () => [
240
+ createVNode(_component_dt_icon_chevron_down, {
241
+ size: $data.SPLIT_BUTTON_ICON_SIZES[$props.size]
242
+ }, null, 8, ["size"])
243
+ ])
244
+ ]),
245
+ _: 3
246
+ }, 8, ["id", "active", "aria-label", "class", "disabled", "importance", "kind", "size"])), [
247
+ [_directive_dt_tooltip, $props.tooltipText]
248
+ ]);
249
+ }
250
+ const SplitButtonOmega = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]);
251
+ const _sfc_main = {
252
+ name: "DtSplitButton",
253
+ components: {
254
+ SplitButtonOmega,
255
+ DtDropdown,
256
+ SplitButtonAlpha
257
+ },
258
+ inheritAttrs: false,
259
+ props: {
260
+ /**
261
+ * Determines whether the alpha button should have active styling
262
+ * @values true, false
263
+ */
264
+ alphaActive: {
265
+ type: Boolean,
266
+ default: false
267
+ },
268
+ /**
269
+ * Descriptive label for the alpha button
270
+ */
271
+ alphaAriaLabel: {
272
+ type: String,
273
+ default: null
274
+ },
275
+ /**
276
+ * The position of the icon slot within the alpha button.
277
+ * @values left, right, top, bottom
278
+ */
279
+ alphaIconPosition: {
280
+ type: String,
281
+ default: "left",
282
+ validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position)
283
+ },
284
+ /**
285
+ * Used to customize the alpha label container
286
+ */
287
+ alphaLabelClass: {
288
+ type: [String, Array, Object],
289
+ default: ""
290
+ },
291
+ /**
292
+ * Whether the alpha button should display a loading animation or not.
293
+ * @values true, false
294
+ */
295
+ alphaLoading: {
296
+ type: Boolean,
297
+ default: false
298
+ },
299
+ /**
300
+ * Text shown in tooltip when you hover the alpha button,
301
+ * required if no content is passed to default slot
302
+ */
303
+ alphaTooltipText: {
304
+ type: String,
305
+ default: void 0
306
+ },
307
+ /**
308
+ * Determines whether a screenreader reads live updates of
309
+ * the button content to the user while the button
310
+ * is in focus.
311
+ * @values true, false
312
+ */
313
+ assertiveOnFocus: {
314
+ type: Boolean,
315
+ default: false
316
+ },
317
+ /**
318
+ * HTML button disabled attribute
319
+ * <a class="d-link" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled" target="_blank">
320
+ * (Reference)
321
+ * </a>
322
+ * @values true, false
323
+ */
324
+ disabled: {
325
+ type: Boolean,
326
+ default: false
327
+ },
328
+ /**
329
+ * The direction the dropdown displays relative to the anchor.
330
+ * @values top, top-start, top-end, right, right-start, right-end, left, left-start, left-end, bottom, bottom-start, bottom-end, auto, auto-start, auto-end
331
+ */
332
+ dropdownPlacement: {
333
+ type: String,
334
+ default: "bottom-end"
335
+ },
336
+ /**
337
+ * The fill and outline of the button associated with its visual importance.
338
+ * @values clear, outlined, primary
339
+ */
340
+ importance: {
341
+ type: String,
342
+ default: "primary",
343
+ validator: (i) => Object.keys(BUTTON_IMPORTANCE_MODIFIERS).includes(i)
344
+ },
345
+ /**
346
+ * The color of the button.
347
+ * @values default, muted, danger, inverted
348
+ */
349
+ kind: {
350
+ type: String,
351
+ default: "default",
352
+ validator: (k) => Object.keys(BUTTON_KIND_MODIFIERS).includes(k)
353
+ },
354
+ /**
355
+ * Determines whether the omega button should have active styling
356
+ * @values true, false
357
+ */
358
+ omegaActive: {
359
+ type: Boolean,
360
+ default: false
361
+ },
362
+ /**
363
+ * Descriptive label for the omega button
364
+ */
365
+ omegaAriaLabel: {
366
+ type: String,
367
+ default: null
368
+ },
369
+ /**
370
+ * Element ID, useful in case you need to reference the button
371
+ * as an external anchor for popover.
372
+ */
373
+ omegaId: {
374
+ type: String,
375
+ default: void 0
376
+ },
377
+ /**
378
+ * Text shown in tooltip when you hover the omega button,
379
+ * required as it is an icon only button
380
+ */
381
+ omegaTooltipText: {
382
+ type: String,
383
+ default: void 0
384
+ },
385
+ /**
386
+ * The size of the button.
387
+ * @values xs, sm, md, lg, xl
388
+ */
389
+ size: {
390
+ type: String,
391
+ default: "md",
392
+ validator: (s) => Object.keys(BUTTON_SIZE_MODIFIERS).includes(s)
393
+ },
394
+ /**
395
+ * Button width, accepts
396
+ * <a class="d-link" href="https://developer.mozilla.org/en-US/docs/Web/CSS/width" target="_blank">
397
+ * CSS width attribute
398
+ * </a>
399
+ * values
400
+ */
401
+ width: {
402
+ type: String,
403
+ default: null
404
+ }
405
+ },
406
+ emits: [
407
+ /**
408
+ * Native alpha button click event
409
+ *
410
+ * @event click
411
+ * @type {PointerEvent | KeyboardEvent}
412
+ */
413
+ "alpha-clicked",
414
+ /**
415
+ * Native omega button click event
416
+ *
417
+ * @event click
418
+ * @type {PointerEvent | KeyboardEvent}
419
+ */
420
+ "omega-clicked"
421
+ ],
422
+ data() {
423
+ return {
424
+ isDropdownOpen: false
425
+ };
426
+ },
427
+ computed: {
428
+ alphaButtonProps() {
429
+ return {
430
+ active: this.alphaActive,
431
+ ariaLabel: this.alphaAriaLabel,
432
+ assertiveOnFocus: this.assertiveOnFocus,
433
+ disabled: this.disabled,
434
+ iconPosition: this.alphaIconPosition,
435
+ labelClass: this.alphaLabelClass,
436
+ loading: this.alphaLoading,
437
+ importance: this.importance,
438
+ kind: this.kind,
439
+ size: this.size,
440
+ tooltipText: this.alphaTooltipText,
441
+ class: this.$attrs.class
442
+ };
443
+ },
444
+ omegaButtonProps() {
445
+ return {
446
+ id: this.omegaId,
447
+ active: this.omegaActive,
448
+ ariaLabel: this.omegaAriaLabel,
449
+ disabled: this.disabled,
450
+ importance: this.importance,
451
+ kind: this.kind,
452
+ size: this.size,
453
+ tooltipText: this.omegaTooltipText,
454
+ class: this.$attrs.class
455
+ };
456
+ }
457
+ },
458
+ created() {
459
+ this.validateProps();
460
+ },
461
+ updated() {
462
+ this.validateProps();
463
+ },
464
+ methods: {
465
+ validateProps() {
466
+ this.validateAlphaButtonProps();
467
+ this.validateOmegaButtonProps();
468
+ },
469
+ validateAlphaButtonProps() {
470
+ if (hasSlotContent(this.$slots.default))
471
+ return;
472
+ if (hasSlotContent(this.$slots.alphaIcon) && !this.alphaTooltipText) {
473
+ console.warn("alpha-tooltip-text prop must be set if alpha button has an icon only");
474
+ }
475
+ },
476
+ validateOmegaButtonProps() {
477
+ if (hasSlotContent(this.$slots.omega))
478
+ return;
479
+ if (!this.omegaTooltipText) {
480
+ console.warn("omega-tooltip-text prop is required as it is an icon-only button");
481
+ }
482
+ }
483
+ }
484
+ };
485
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
486
+ const _component_split_button_alpha = resolveComponent("split-button-alpha");
487
+ const _component_split_button_omega = resolveComponent("split-button-omega");
488
+ const _component_dt_dropdown = resolveComponent("dt-dropdown");
489
+ return openBlock(), createElementBlock("span", {
490
+ "data-qa": "dt-split-button",
491
+ class: "d-split-btn",
492
+ style: normalizeStyle({ width: $props.width })
493
+ }, [
494
+ createVNode(_component_split_button_alpha, mergeProps($options.alphaButtonProps, {
495
+ ref: "alphaButton",
496
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("alpha-clicked"))
497
+ }), {
498
+ icon: withCtx(({ size: iconSize }) => [
499
+ renderSlot(_ctx.$slots, "alphaIcon", { size: iconSize })
500
+ ]),
501
+ default: withCtx(() => [
502
+ renderSlot(_ctx.$slots, "default")
503
+ ]),
504
+ _: 3
505
+ }, 16),
506
+ renderSlot(_ctx.$slots, "omega", {}, () => [
507
+ _ctx.$slots.dropdownList ? (openBlock(), createBlock(_component_dt_dropdown, {
508
+ key: 0,
509
+ placement: $props.dropdownPlacement,
510
+ onClick: _cache[2] || (_cache[2] = ($event) => $data.isDropdownOpen = true),
511
+ onOpened: _cache[3] || (_cache[3] = (open) => $data.isDropdownOpen = open)
512
+ }, {
513
+ anchor: withCtx((attrs) => [
514
+ createVNode(_component_split_button_omega, mergeProps({ ...attrs, ...$options.omegaButtonProps }, {
515
+ active: $data.isDropdownOpen,
516
+ onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("omega-clicked"))
517
+ }), {
518
+ icon: withCtx(({ size: iconSize }) => [
519
+ renderSlot(_ctx.$slots, "omegaIcon", { size: iconSize })
520
+ ]),
521
+ _: 2
522
+ }, 1040, ["active"])
523
+ ]),
524
+ list: withCtx(({ close }) => [
525
+ renderSlot(_ctx.$slots, "dropdownList", { close })
526
+ ]),
527
+ _: 3
528
+ }, 8, ["placement"])) : (openBlock(), createBlock(_component_split_button_omega, mergeProps({ key: 1 }, $options.omegaButtonProps, {
529
+ onClick: _cache[4] || (_cache[4] = ($event) => _ctx.$emit("omega-clicked"))
530
+ }), {
531
+ icon: withCtx(({ size: iconSize }) => [
532
+ renderSlot(_ctx.$slots, "omegaIcon", { size: iconSize })
533
+ ]),
534
+ _: 3
535
+ }, 16))
536
+ ])
537
+ ], 4);
538
+ }
539
+ const split_button = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
540
+ export {
541
+ split_button as DtSplitButton,
542
+ SPLIT_BUTTON_ICON_SIZES
543
+ };
544
+ //# sourceMappingURL=split-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-button.js","sources":["../../components/split_button/split_button-alpha.vue","../../components/split_button/split_button_constants.js","../../components/split_button/split_button-omega.vue","../../components/split_button/split_button.vue"],"sourcesContent":["<template>\n <dt-button\n v-dt-tooltip=\"tooltipText\"\n data-qa=\"dt-split-button-alpha\"\n :active=\"active\"\n :aria-label=\"ariaLabel\"\n :assertive-on-focus=\"assertiveOnFocus\"\n :class=\"`d-split-btn__alpha d-split-btn__alpha--${size}`\"\n :disabled=\"disabled\"\n :icon-position=\"iconPosition\"\n :importance=\"importance\"\n :kind=\"kind\"\n :label-class=\"labelClass\"\n :loading=\"loading\"\n :size=\"size\"\n >\n <template #icon>\n <slot\n name=\"icon\"\n :size=\"BUTTON_ICON_SIZES[size]\"\n />\n </template>\n <slot name=\"default\" />\n </dt-button>\n</template>\n\n<script>\nimport { BUTTON_ICON_SIZES, DtButton } from '@/components/button';\n\nexport default {\n name: 'SplitButtonAlpha',\n\n components: {\n DtButton,\n },\n\n props: {\n /**\n * Determines whether the button should have active styling\n */\n active: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the button\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * The position of the icon slot within the button.\n */\n iconPosition: {\n type: String,\n default: 'left',\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Whether the button should display a loading animation or not.\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Text shown in tooltip when you hover the button\n */\n tooltipText: {\n type: String,\n default: '',\n },\n\n /**\n * Determines whether a screenreader reads live updates of\n * the button content to the user while the button is in focus.\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button disabled attribute\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The fill and outline of the button associated with its visual importance.\n */\n importance: {\n type: String,\n default: 'primary',\n },\n\n /**\n * The color of the button.\n */\n kind: {\n type: String,\n default: 'default',\n },\n\n /**\n * The size of the button.\n */\n size: {\n type: String,\n default: 'md',\n },\n },\n\n data () {\n return {\n BUTTON_ICON_SIZES,\n };\n },\n};\n</script>\n","export const SPLIT_BUTTON_ICON_SIZES = {\n xs: '100',\n sm: '100',\n md: '200',\n lg: '200',\n xl: '300',\n};\n\nexport default {\n SPLIT_BUTTON_ICON_SIZES,\n};\n","<template>\n <dt-button\n :id=\"id\"\n v-dt-tooltip=\"tooltipText\"\n data-qa=\"dt-split-button-omega\"\n :active=\"active\"\n :aria-label=\"ariaLabel\"\n :class=\"`d-split-btn__omega d-split-btn__omega--${size}`\"\n :disabled=\"disabled\"\n :importance=\"importance\"\n :kind=\"kind\"\n :size=\"size\"\n >\n <template #icon>\n <slot\n name=\"icon\"\n :size=\"SPLIT_BUTTON_ICON_SIZES[size]\"\n >\n <dt-icon-chevron-down :size=\"SPLIT_BUTTON_ICON_SIZES[size]\" />\n </slot>\n </template>\n </dt-button>\n</template>\n\n<script>\nimport { SPLIT_BUTTON_ICON_SIZES } from './split_button_constants';\nimport { DtButton } from '@/components/button';\nimport { DtIconChevronDown } from '@dialpad/dialtone-icons/vue3';\nimport { getUniqueString } from '@/common/utils';\n\nexport default {\n name: 'SplitButtonOmega',\n components: {\n DtButton,\n DtIconChevronDown,\n },\n\n props: {\n /**\n * Determines whether the button should have active styling\n */\n active: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the button\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * HTML button disabled attribute\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Element ID, useful in case you need to reference the button\n * as an external anchor for popover\n */\n id: {\n type: String,\n default: getUniqueString(),\n },\n\n /**\n * The fill and outline of the button associated with its visual importance.\n */\n importance: {\n type: String,\n default: 'primary',\n },\n\n /**\n * The color of the button.\n */\n kind: {\n type: String,\n default: 'default',\n },\n\n /**\n * The size of the button.\n */\n size: {\n type: String,\n default: 'md',\n },\n\n /**\n * Text shown in tooltip when you hover the button\n */\n tooltipText: {\n type: String,\n default: '',\n },\n },\n\n data () {\n return {\n SPLIT_BUTTON_ICON_SIZES,\n };\n },\n};\n</script>\n","<template>\n <span\n data-qa=\"dt-split-button\"\n class=\"d-split-btn\"\n :style=\"{ width }\"\n >\n <split-button-alpha\n v-bind=\"alphaButtonProps\"\n ref=\"alphaButton\"\n @click=\"$emit('alpha-clicked')\"\n >\n <template #icon=\"{ size: iconSize }\">\n <!-- @slot Alpha (left) button icon slot -->\n <slot\n name=\"alphaIcon\"\n :size=\"iconSize\"\n />\n </template>\n <!-- @slot Default content slot -->\n <slot name=\"default\" />\n </split-button-alpha>\n <!-- @slot Omega (right) content slot, overrides omega button styling and functionality completely -->\n <slot name=\"omega\">\n <dt-dropdown\n v-if=\"$slots.dropdownList\"\n :placement=\"dropdownPlacement\"\n @click=\"isDropdownOpen = true\"\n @opened=\"open => isDropdownOpen = open\"\n >\n <template #anchor=\"attrs\">\n <split-button-omega\n v-bind=\"{ ...attrs, ...omegaButtonProps }\"\n :active=\"isDropdownOpen\"\n @click=\"$emit('omega-clicked')\"\n >\n <template #icon=\"{ size: iconSize }\">\n <!-- @slot Omega (right) button icon slot -->\n <slot\n name=\"omegaIcon\"\n :size=\"iconSize\"\n />\n </template>\n </split-button-omega>\n </template>\n <template #list=\"{ close }\">\n <!-- @slot Built-in dropdown content slot, use of dt-list-item is highly recommended here. -->\n <slot\n name=\"dropdownList\"\n :close=\"close\"\n />\n </template>\n </dt-dropdown>\n\n <split-button-omega\n v-else\n v-bind=\"omegaButtonProps\"\n @click=\"$emit('omega-clicked')\"\n >\n <template #icon=\"{ size: iconSize }\">\n <!-- @slot Omega (right) button icon slot -->\n <slot\n name=\"omegaIcon\"\n :size=\"iconSize\"\n />\n </template>\n </split-button-omega>\n </slot>\n </span>\n</template>\n\n<script>\nimport {\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_SIZE_MODIFIERS,\n ICON_POSITION_MODIFIERS,\n} from '@/components/button';\nimport SplitButtonAlpha from './split_button-alpha.vue';\nimport SplitButtonOmega from './split_button-omega.vue';\nimport { DtDropdown } from '@/components/dropdown';\nimport { hasSlotContent } from '@/common/utils';\n\nexport default {\n name: 'DtSplitButton',\n\n components: {\n SplitButtonOmega,\n DtDropdown,\n SplitButtonAlpha,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Determines whether the alpha button should have active styling\n * @values true, false\n */\n alphaActive: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the alpha button\n */\n alphaAriaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * The position of the icon slot within the alpha button.\n * @values left, right, top, bottom\n */\n alphaIconPosition: {\n type: String,\n default: 'left',\n validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position),\n },\n\n /**\n * Used to customize the alpha label container\n */\n alphaLabelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Whether the alpha button should display a loading animation or not.\n * @values true, false\n */\n alphaLoading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Text shown in tooltip when you hover the alpha button,\n * required if no content is passed to default slot\n */\n alphaTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * Determines whether a screenreader reads live updates of\n * the button content to the user while the button\n * is in focus.\n * @values true, false\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button disabled attribute\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled\" target=\"_blank\">\n * (Reference)\n * </a>\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n * @values top, top-start, top-end, right, right-start, right-end, left, left-start, left-end, bottom, bottom-start, bottom-end, auto, auto-start, auto-end\n */\n dropdownPlacement: {\n type: String,\n default: 'bottom-end',\n },\n\n /**\n * The fill and outline of the button associated with its visual importance.\n * @values clear, outlined, primary\n */\n importance: {\n type: String,\n default: 'primary',\n validator: (i) => Object.keys(BUTTON_IMPORTANCE_MODIFIERS).includes(i),\n },\n\n /**\n * The color of the button.\n * @values default, muted, danger, inverted\n */\n kind: {\n type: String,\n default: 'default',\n validator: (k) => Object.keys(BUTTON_KIND_MODIFIERS).includes(k),\n },\n\n /**\n * Determines whether the omega button should have active styling\n * @values true, false\n */\n omegaActive: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the omega button\n */\n omegaAriaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Element ID, useful in case you need to reference the button\n * as an external anchor for popover.\n */\n omegaId: {\n type: String,\n default: undefined,\n },\n\n /**\n * Text shown in tooltip when you hover the omega button,\n * required as it is an icon only button\n */\n omegaTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the button.\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (s) => Object.keys(BUTTON_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Button width, accepts\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/width\" target=\"_blank\">\n * CSS width attribute\n * </a>\n * values\n */\n width: {\n type: String,\n default: null,\n },\n },\n\n emits: [\n /**\n * Native alpha button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'alpha-clicked',\n\n /**\n * Native omega button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'omega-clicked',\n ],\n\n data () {\n return {\n isDropdownOpen: false,\n };\n },\n\n computed: {\n alphaButtonProps () {\n return {\n active: this.alphaActive,\n ariaLabel: this.alphaAriaLabel,\n assertiveOnFocus: this.assertiveOnFocus,\n disabled: this.disabled,\n iconPosition: this.alphaIconPosition,\n labelClass: this.alphaLabelClass,\n loading: this.alphaLoading,\n importance: this.importance,\n kind: this.kind,\n size: this.size,\n tooltipText: this.alphaTooltipText,\n class: this.$attrs.class,\n };\n },\n\n omegaButtonProps () {\n return {\n id: this.omegaId,\n active: this.omegaActive,\n ariaLabel: this.omegaAriaLabel,\n disabled: this.disabled,\n importance: this.importance,\n kind: this.kind,\n size: this.size,\n tooltipText: this.omegaTooltipText,\n class: this.$attrs.class,\n };\n },\n },\n\n created () {\n this.validateProps();\n },\n\n updated () {\n this.validateProps();\n },\n\n methods: {\n validateProps () {\n this.validateAlphaButtonProps();\n this.validateOmegaButtonProps();\n },\n\n validateAlphaButtonProps () {\n if (hasSlotContent(this.$slots.default)) return;\n\n if (hasSlotContent(this.$slots.alphaIcon) && !this.alphaTooltipText) {\n console.warn('alpha-tooltip-text prop must be set if alpha button has an icon only');\n }\n },\n\n validateOmegaButtonProps () {\n if (hasSlotContent(this.$slots.omega)) return;\n\n if (!this.omegaTooltipText) {\n console.warn('omega-tooltip-text prop is required as it is an icon-only button');\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","_createBlock","_renderSlot","_createVNode","_createElementBlock","_mergeProps","_withCtx"],"mappings":"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"}