@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,512 @@
1
+ import { normalizeComponent } from "../chunks/_plugin-vue2_normalizer-sOSkiPF3.js";
2
+ import { DtButton, BUTTON_ICON_SIZES, ICON_POSITION_MODIFIERS, BUTTON_IMPORTANCE_MODIFIERS, BUTTON_KIND_MODIFIERS, BUTTON_SIZE_MODIFIERS } from "./button.js";
3
+ import { DtIconChevronDown } from "@dialpad/dialtone-icons/vue2";
4
+ import { getUniqueString } from "../common/utils.js";
5
+ import { DtDropdown } from "../chunks/dropdown-6UoczdUY.js";
6
+ import "vue";
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-81bHIpPu.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 "@linusborg/vue-simple-portal";
19
+ import "../chunks/modal-XOr4kiNZ.js";
20
+ import "./lazy-show.js";
21
+ import "../chunks/list_item_constants-u1xcN9Dd.js";
22
+ const _sfc_main$2 = {
23
+ name: "SplitButtonAlpha",
24
+ components: {
25
+ DtButton
26
+ },
27
+ props: {
28
+ /**
29
+ * Determines whether the button should have active styling
30
+ */
31
+ active: {
32
+ type: Boolean,
33
+ default: false
34
+ },
35
+ /**
36
+ * Descriptive label for the button
37
+ */
38
+ ariaLabel: {
39
+ type: String,
40
+ default: null
41
+ },
42
+ /**
43
+ * The position of the icon slot within the button.
44
+ */
45
+ iconPosition: {
46
+ type: String,
47
+ default: "left"
48
+ },
49
+ /**
50
+ * Used to customize the label container
51
+ */
52
+ labelClass: {
53
+ type: [String, Array, Object],
54
+ default: ""
55
+ },
56
+ /**
57
+ * Whether the button should display a loading animation or not.
58
+ */
59
+ loading: {
60
+ type: Boolean,
61
+ default: false
62
+ },
63
+ /**
64
+ * Text shown in tooltip when you hover the button
65
+ */
66
+ tooltipText: {
67
+ type: String,
68
+ default: ""
69
+ },
70
+ /**
71
+ * Determines whether a screenreader reads live updates of
72
+ * the button content to the user while the button is in focus.
73
+ */
74
+ assertiveOnFocus: {
75
+ type: Boolean,
76
+ default: false
77
+ },
78
+ /**
79
+ * HTML button disabled attribute
80
+ */
81
+ disabled: {
82
+ type: Boolean,
83
+ default: false
84
+ },
85
+ /**
86
+ * The fill and outline of the button associated with its visual importance.
87
+ */
88
+ importance: {
89
+ type: String,
90
+ default: "primary"
91
+ },
92
+ /**
93
+ * The color of the button.
94
+ */
95
+ kind: {
96
+ type: String,
97
+ default: "default"
98
+ },
99
+ /**
100
+ * The size of the button.
101
+ */
102
+ size: {
103
+ type: String,
104
+ default: "md"
105
+ }
106
+ },
107
+ data() {
108
+ return {
109
+ BUTTON_ICON_SIZES
110
+ };
111
+ }
112
+ };
113
+ var _sfc_render$2 = function render() {
114
+ var _vm = this, _c = _vm._self._c;
115
+ return _c("dt-button", { directives: [{ name: "dt-tooltip", rawName: "v-dt-tooltip", value: _vm.tooltipText, expression: "tooltipText" }], class: `d-split-btn__alpha d-split-btn__alpha--${_vm.size}`, attrs: { "data-qa": "dt-split-button-alpha", "active": _vm.active, "aria-label": _vm.ariaLabel, "assertive-on-focus": _vm.assertiveOnFocus, "disabled": _vm.disabled, "icon-position": _vm.iconPosition, "importance": _vm.importance, "kind": _vm.kind, "label-class": _vm.labelClass, "loading": _vm.loading, "size": _vm.size }, scopedSlots: _vm._u([{ key: "icon", fn: function() {
116
+ return [_vm._t("icon", null, { "size": _vm.BUTTON_ICON_SIZES[_vm.size] })];
117
+ }, proxy: true }], null, true) }, [_vm._t("default")], 2);
118
+ };
119
+ var _sfc_staticRenderFns$2 = [];
120
+ var __component__$2 = /* @__PURE__ */ normalizeComponent(
121
+ _sfc_main$2,
122
+ _sfc_render$2,
123
+ _sfc_staticRenderFns$2,
124
+ false,
125
+ null,
126
+ null,
127
+ null,
128
+ null
129
+ );
130
+ const SplitButtonAlpha = __component__$2.exports;
131
+ const SPLIT_BUTTON_ICON_SIZES = {
132
+ xs: "100",
133
+ sm: "100",
134
+ md: "200",
135
+ lg: "200",
136
+ xl: "300"
137
+ };
138
+ const _sfc_main$1 = {
139
+ name: "SplitButtonOmega",
140
+ components: {
141
+ DtButton,
142
+ DtIconChevronDown
143
+ },
144
+ props: {
145
+ /**
146
+ * Determines whether the button should have active styling
147
+ */
148
+ active: {
149
+ type: Boolean,
150
+ default: false
151
+ },
152
+ /**
153
+ * Descriptive label for the button
154
+ */
155
+ ariaLabel: {
156
+ type: String,
157
+ default: null
158
+ },
159
+ /**
160
+ * HTML button disabled attribute
161
+ */
162
+ disabled: {
163
+ type: Boolean,
164
+ default: false
165
+ },
166
+ /**
167
+ * Element ID, useful in case you need to reference the button
168
+ * as an external anchor for popover
169
+ */
170
+ id: {
171
+ type: String,
172
+ default: getUniqueString()
173
+ },
174
+ /**
175
+ * The fill and outline of the button associated with its visual importance.
176
+ */
177
+ importance: {
178
+ type: String,
179
+ default: "primary"
180
+ },
181
+ /**
182
+ * The color of the button.
183
+ */
184
+ kind: {
185
+ type: String,
186
+ default: "default"
187
+ },
188
+ /**
189
+ * The size of the button.
190
+ */
191
+ size: {
192
+ type: String,
193
+ default: "md"
194
+ },
195
+ /**
196
+ * Text shown in tooltip when you hover the button
197
+ */
198
+ tooltipText: {
199
+ type: String,
200
+ default: ""
201
+ }
202
+ },
203
+ data() {
204
+ return {
205
+ SPLIT_BUTTON_ICON_SIZES
206
+ };
207
+ }
208
+ };
209
+ var _sfc_render$1 = function render2() {
210
+ var _vm = this, _c = _vm._self._c;
211
+ return _c("dt-button", { directives: [{ name: "dt-tooltip", rawName: "v-dt-tooltip", value: _vm.tooltipText, expression: "tooltipText" }], class: `d-split-btn__omega d-split-btn__omega--${_vm.size}`, attrs: { "id": _vm.id, "data-qa": "dt-split-button-omega", "active": _vm.active, "aria-label": _vm.ariaLabel, "disabled": _vm.disabled, "importance": _vm.importance, "kind": _vm.kind, "size": _vm.size }, scopedSlots: _vm._u([{ key: "icon", fn: function() {
212
+ return [_vm._t("icon", function() {
213
+ return [_c("dt-icon-chevron-down", { attrs: { "size": _vm.SPLIT_BUTTON_ICON_SIZES[_vm.size] } })];
214
+ }, { "size": _vm.SPLIT_BUTTON_ICON_SIZES[_vm.size] })];
215
+ }, proxy: true }], null, true) });
216
+ };
217
+ var _sfc_staticRenderFns$1 = [];
218
+ var __component__$1 = /* @__PURE__ */ normalizeComponent(
219
+ _sfc_main$1,
220
+ _sfc_render$1,
221
+ _sfc_staticRenderFns$1,
222
+ false,
223
+ null,
224
+ null,
225
+ null,
226
+ null
227
+ );
228
+ const SplitButtonOmega = __component__$1.exports;
229
+ const _sfc_main = {
230
+ name: "DtSplitButton",
231
+ components: {
232
+ SplitButtonOmega,
233
+ DtDropdown,
234
+ SplitButtonAlpha
235
+ },
236
+ inheritAttrs: false,
237
+ props: {
238
+ /**
239
+ * Determines whether the alpha button should have active styling
240
+ * @values true, false
241
+ */
242
+ alphaActive: {
243
+ type: Boolean,
244
+ default: false
245
+ },
246
+ /**
247
+ * Descriptive label for the alpha button
248
+ */
249
+ alphaAriaLabel: {
250
+ type: String,
251
+ default: null
252
+ },
253
+ /**
254
+ * The position of the icon slot within the alpha button.
255
+ * @values left, right, top, bottom
256
+ */
257
+ alphaIconPosition: {
258
+ type: String,
259
+ default: "left",
260
+ validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position)
261
+ },
262
+ /**
263
+ * Used to customize the alpha label container
264
+ */
265
+ alphaLabelClass: {
266
+ type: [String, Array, Object],
267
+ default: ""
268
+ },
269
+ /**
270
+ * Whether the alpha button should display a loading animation or not.
271
+ * @values true, false
272
+ */
273
+ alphaLoading: {
274
+ type: Boolean,
275
+ default: false
276
+ },
277
+ /**
278
+ * Text shown in tooltip when you hover the alpha button,
279
+ * required if no content is passed to default slot
280
+ */
281
+ alphaTooltipText: {
282
+ type: String,
283
+ default: void 0
284
+ },
285
+ /**
286
+ * Determines whether a screenreader reads live updates of
287
+ * the button content to the user while the button
288
+ * is in focus.
289
+ * @values true, false
290
+ */
291
+ assertiveOnFocus: {
292
+ type: Boolean,
293
+ default: false
294
+ },
295
+ /**
296
+ * HTML button disabled attribute
297
+ * <a class="d-link" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled" target="_blank">
298
+ * (Reference)
299
+ * </a>
300
+ * @values true, false
301
+ */
302
+ disabled: {
303
+ type: Boolean,
304
+ default: false
305
+ },
306
+ /**
307
+ * The direction the dropdown displays relative to the anchor.
308
+ * @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
309
+ */
310
+ dropdownPlacement: {
311
+ type: String,
312
+ default: "bottom-end"
313
+ },
314
+ /**
315
+ * The fill and outline of the button associated with its visual importance.
316
+ * @values clear, outlined, primary
317
+ */
318
+ importance: {
319
+ type: String,
320
+ default: "primary",
321
+ validator: (i) => Object.keys(BUTTON_IMPORTANCE_MODIFIERS).includes(i)
322
+ },
323
+ /**
324
+ * The color of the button.
325
+ * @values default, muted, danger, inverted
326
+ */
327
+ kind: {
328
+ type: String,
329
+ default: "default",
330
+ validator: (k) => Object.keys(BUTTON_KIND_MODIFIERS).includes(k)
331
+ },
332
+ /**
333
+ * Determines whether the omega button should have active styling
334
+ * @values true, false
335
+ */
336
+ omegaActive: {
337
+ type: Boolean,
338
+ default: false
339
+ },
340
+ /**
341
+ * Descriptive label for the omega button
342
+ */
343
+ omegaAriaLabel: {
344
+ type: String,
345
+ default: null
346
+ },
347
+ /**
348
+ * Element ID, useful in case you need to reference the button
349
+ * as an external anchor for popover
350
+ */
351
+ omegaId: {
352
+ type: String,
353
+ default: void 0
354
+ },
355
+ /**
356
+ * Text shown in tooltip when you hover the omega button,
357
+ * required as it is an icon only button
358
+ */
359
+ omegaTooltipText: {
360
+ type: String,
361
+ default: void 0
362
+ },
363
+ /**
364
+ * The size of the button.
365
+ * @values xs, sm, md, lg, xl
366
+ */
367
+ size: {
368
+ type: String,
369
+ default: "md",
370
+ validator: (s) => Object.keys(BUTTON_SIZE_MODIFIERS).includes(s)
371
+ },
372
+ /**
373
+ * Button width, accepts
374
+ * <a class="d-link" href="https://developer.mozilla.org/en-US/docs/Web/CSS/width" target="_blank">
375
+ * CSS width attribute
376
+ * </a>
377
+ * values
378
+ */
379
+ width: {
380
+ type: String,
381
+ default: null
382
+ }
383
+ },
384
+ emits: [
385
+ /**
386
+ * Native alpha button click event
387
+ *
388
+ * @event click
389
+ * @type {PointerEvent | KeyboardEvent}
390
+ */
391
+ "alpha-clicked",
392
+ /**
393
+ * Native omega button click event
394
+ *
395
+ * @event click
396
+ * @type {PointerEvent | KeyboardEvent}
397
+ */
398
+ "omega-clicked"
399
+ ],
400
+ data() {
401
+ return {
402
+ isDropdownOpen: false
403
+ };
404
+ },
405
+ computed: {
406
+ alphaButtonProps() {
407
+ return {
408
+ active: this.alphaActive,
409
+ ariaLabel: this.alphaAriaLabel,
410
+ assertiveOnFocus: this.assertiveOnFocus,
411
+ disabled: this.disabled,
412
+ iconPosition: this.alphaIconPosition,
413
+ labelClass: this.alphaLabelClass,
414
+ loading: this.alphaLoading,
415
+ importance: this.importance,
416
+ kind: this.kind,
417
+ size: this.size,
418
+ tooltipText: this.alphaTooltipText,
419
+ class: this.$attrs.class
420
+ };
421
+ },
422
+ omegaButtonProps() {
423
+ return {
424
+ id: this.omegaId,
425
+ active: this.omegaActive,
426
+ ariaLabel: this.omegaAriaLabel,
427
+ disabled: this.disabled,
428
+ importance: this.importance,
429
+ kind: this.kind,
430
+ size: this.size,
431
+ tooltipText: this.omegaTooltipText,
432
+ class: this.$attrs.class
433
+ };
434
+ },
435
+ defaultSlotHasContent() {
436
+ var _a, _b;
437
+ return this.$scopedSlots.default && this.$scopedSlots.default() && ((_b = (_a = this.$scopedSlots.default()[0]) == null ? void 0 : _a.text) == null ? void 0 : _b.trim());
438
+ },
439
+ omegaSlotIsSet() {
440
+ return this.$scopedSlots.omega && this.$scopedSlots.omega();
441
+ }
442
+ },
443
+ created() {
444
+ this.validateProps();
445
+ },
446
+ updated() {
447
+ this.validateProps();
448
+ },
449
+ methods: {
450
+ validateProps() {
451
+ this.validateAlphaButtonProps();
452
+ this.validateOmegaButtonProps();
453
+ },
454
+ validateAlphaButtonProps() {
455
+ var _a;
456
+ if (this.defaultSlotHasContent)
457
+ return;
458
+ const isAlphaIconSet = ((_a = this.$refs.alphaButton) == null ? void 0 : _a.$scopedSlots.icon) && this.$refs.alphaButton.$scopedSlots.icon();
459
+ if (isAlphaIconSet && !this.alphaTooltipText) {
460
+ console.warn("alpha-tooltip-text prop must be set if alpha button has an icon only");
461
+ }
462
+ },
463
+ validateOmegaButtonProps() {
464
+ if (this.omegaSlotIsSet)
465
+ return;
466
+ if (!this.omegaTooltipText) {
467
+ console.warn("omega-tooltip-text prop is required as it is an icon-only button");
468
+ }
469
+ }
470
+ }
471
+ };
472
+ var _sfc_render = function render3() {
473
+ var _vm = this, _c = _vm._self._c;
474
+ return _c("span", { staticClass: "d-split-btn", style: { width: _vm.width }, attrs: { "data-qa": "dt-split-button" } }, [_c("split-button-alpha", _vm._b({ ref: "alphaButton", nativeOn: { "click": function($event) {
475
+ return _vm.$emit("alpha-clicked");
476
+ } }, scopedSlots: _vm._u([{ key: "icon", fn: function({ size: iconSize }) {
477
+ return [_vm._t("alphaIcon", null, { "size": iconSize })];
478
+ } }], null, true) }, "split-button-alpha", _vm.alphaButtonProps, false), [_vm._t("default")], 2), _vm._t("omega", function() {
479
+ return [_vm.$slots.dropdownList ? _c("dt-dropdown", { attrs: { "placement": _vm.dropdownPlacement }, on: { "click": function($event) {
480
+ _vm.isDropdownOpen = true;
481
+ }, "opened": (open) => _vm.isDropdownOpen = open }, scopedSlots: _vm._u([{ key: "anchor", fn: function(attrs) {
482
+ return [_c("split-button-omega", _vm._b({ attrs: { "active": _vm.isDropdownOpen }, nativeOn: { "click": function($event) {
483
+ return _vm.$emit("omega-clicked");
484
+ } }, scopedSlots: _vm._u([{ key: "icon", fn: function({ size: iconSize }) {
485
+ return [_vm._t("omegaIcon", null, { "size": iconSize })];
486
+ } }], null, true) }, "split-button-omega", { ...attrs, ..._vm.omegaButtonProps }, false))];
487
+ } }, { key: "list", fn: function({ close }) {
488
+ return [_vm._t("dropdownList", null, { "close": close })];
489
+ } }], null, true) }) : _c("split-button-omega", _vm._b({ nativeOn: { "click": function($event) {
490
+ return _vm.$emit("omega-clicked");
491
+ } }, scopedSlots: _vm._u([{ key: "icon", fn: function({ size: iconSize }) {
492
+ return [_vm._t("omegaIcon", null, { "size": iconSize })];
493
+ } }], null, true) }, "split-button-omega", _vm.omegaButtonProps, false))];
494
+ })], 2);
495
+ };
496
+ var _sfc_staticRenderFns = [];
497
+ var __component__ = /* @__PURE__ */ normalizeComponent(
498
+ _sfc_main,
499
+ _sfc_render,
500
+ _sfc_staticRenderFns,
501
+ false,
502
+ null,
503
+ null,
504
+ null,
505
+ null
506
+ );
507
+ const split_button = __component__.exports;
508
+ export {
509
+ split_button as DtSplitButton,
510
+ SPLIT_BUTTON_ICON_SIZES
511
+ };
512
+ //# 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/vue2';\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.native=\"$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.native=\"$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.native=\"$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';\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 defaultSlotHasContent () {\n return this.$scopedSlots.default && this.$scopedSlots.default() && this.$scopedSlots.default()[0]?.text?.trim();\n },\n\n omegaSlotIsSet () {\n return this.$scopedSlots.omega && this.$scopedSlots.omega();\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 (this.defaultSlotHasContent) return;\n\n // This can't be a computed prop due to reactivity issues.\n const isAlphaIconSet = this.$refs.alphaButton?.$scopedSlots.icon && this.$refs.alphaButton.$scopedSlots.icon();\n\n if (isAlphaIconSet && !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 (this.omegaSlotIsSet) 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"],"mappings":"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"}