@dialpad/dialtone 9.115.1 → 9.117.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 (132) hide show
  1. package/dist/css/dialtone-default-theme.css +19 -4
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone-docs.json +1 -1
  4. package/dist/css/dialtone.css +15 -0
  5. package/dist/css/dialtone.min.css +1 -1
  6. package/dist/css/tokens/tokens-base-dark.css +1 -1
  7. package/dist/css/tokens/tokens-base-deca-dark.css +1 -1
  8. package/dist/css/tokens/tokens-base-deca-light.css +1 -1
  9. package/dist/css/tokens/tokens-base-light.css +1 -1
  10. package/dist/css/tokens/tokens-debug-base.css +1 -1
  11. package/dist/css/tokens/tokens-debug-dp.css +3 -3
  12. package/dist/css/tokens/tokens-deca-dark.css +3 -3
  13. package/dist/css/tokens/tokens-deca-light.css +3 -3
  14. package/dist/css/tokens/tokens-dp-dark.css +3 -3
  15. package/dist/css/tokens/tokens-dp-light.css +3 -3
  16. package/dist/css/tokens/tokens-expressive-dark.css +3 -3
  17. package/dist/css/tokens/tokens-expressive-light.css +3 -3
  18. package/dist/css/tokens/tokens-expressive-sm-dark.css +3 -3
  19. package/dist/css/tokens/tokens-expressive-sm-light.css +3 -3
  20. package/dist/css/tokens/tokens-tmo-dark.css +3 -3
  21. package/dist/css/tokens/tokens-tmo-light.css +3 -3
  22. package/dist/css/tokens-docs.json +1 -1
  23. package/dist/tokens/css/tokens-base-dark.css +1 -1
  24. package/dist/tokens/css/tokens-base-deca-dark.css +1 -1
  25. package/dist/tokens/css/tokens-base-deca-light.css +1 -1
  26. package/dist/tokens/css/tokens-base-light.css +1 -1
  27. package/dist/tokens/css/tokens-debug-base.css +1 -1
  28. package/dist/tokens/css/tokens-debug-dp.css +3 -3
  29. package/dist/tokens/css/tokens-deca-dark.css +3 -3
  30. package/dist/tokens/css/tokens-deca-light.css +3 -3
  31. package/dist/tokens/css/tokens-dp-dark.css +3 -3
  32. package/dist/tokens/css/tokens-dp-light.css +3 -3
  33. package/dist/tokens/css/tokens-expressive-dark.css +3 -3
  34. package/dist/tokens/css/tokens-expressive-light.css +3 -3
  35. package/dist/tokens/css/tokens-expressive-sm-dark.css +3 -3
  36. package/dist/tokens/css/tokens-expressive-sm-light.css +3 -3
  37. package/dist/tokens/css/tokens-tmo-dark.css +3 -3
  38. package/dist/tokens/css/tokens-tmo-light.css +3 -3
  39. package/dist/tokens/doc.json +9973 -9973
  40. package/dist/tokens/less/tokens-base-dark.less +1 -1
  41. package/dist/tokens/less/tokens-base-deca-dark.less +1 -1
  42. package/dist/tokens/less/tokens-base-deca-light.less +1 -1
  43. package/dist/tokens/less/tokens-base-light.less +1 -1
  44. package/dist/tokens/less/tokens-deca-dark.less +3 -3
  45. package/dist/tokens/less/tokens-deca-light.less +3 -3
  46. package/dist/tokens/less/tokens-dp-dark.less +3 -3
  47. package/dist/tokens/less/tokens-dp-light.less +3 -3
  48. package/dist/tokens/less/tokens-expressive-dark.less +3 -3
  49. package/dist/tokens/less/tokens-expressive-light.less +3 -3
  50. package/dist/tokens/less/tokens-expressive-sm-dark.less +3 -3
  51. package/dist/tokens/less/tokens-expressive-sm-light.less +3 -3
  52. package/dist/tokens/less/tokens-tmo-dark.less +3 -3
  53. package/dist/tokens/less/tokens-tmo-light.less +3 -3
  54. package/dist/tokens/themes/chunks/tokens-base-dark-CKvoqrK2.js +1 -0
  55. package/dist/tokens/themes/chunks/tokens-base-dark-CLL9Sz8C.js +4 -0
  56. package/dist/tokens/themes/chunks/tokens-base-light-C7afXvK5.js +4 -0
  57. package/dist/tokens/themes/chunks/tokens-base-light-DgGeYJGp.js +1 -0
  58. package/dist/tokens/themes/debug.cjs +1 -1
  59. package/dist/tokens/themes/debug.js +1 -1
  60. package/dist/tokens/themes/dp-dark.cjs +1 -1
  61. package/dist/tokens/themes/dp-dark.js +2 -2
  62. package/dist/tokens/themes/dp-deca-dark.cjs +1 -1
  63. package/dist/tokens/themes/dp-deca-dark.js +1 -1
  64. package/dist/tokens/themes/dp-deca-light.cjs +1 -1
  65. package/dist/tokens/themes/dp-deca-light.js +1 -1
  66. package/dist/tokens/themes/dp-light.cjs +1 -1
  67. package/dist/tokens/themes/dp-light.js +2 -2
  68. package/dist/tokens/themes/expressive-dark.cjs +1 -1
  69. package/dist/tokens/themes/expressive-dark.js +2 -2
  70. package/dist/tokens/themes/expressive-light.cjs +1 -1
  71. package/dist/tokens/themes/expressive-light.js +2 -2
  72. package/dist/tokens/themes/expressive-sm-dark.cjs +1 -1
  73. package/dist/tokens/themes/expressive-sm-dark.js +2 -2
  74. package/dist/tokens/themes/expressive-sm-light.cjs +1 -1
  75. package/dist/tokens/themes/expressive-sm-light.js +2 -2
  76. package/dist/tokens/themes/tmo-dark.cjs +1 -1
  77. package/dist/tokens/themes/tmo-dark.js +2 -2
  78. package/dist/tokens/themes/tmo-light.cjs +1 -1
  79. package/dist/tokens/themes/tmo-light.js +2 -2
  80. package/dist/tokens/tokens-base-dark.json +1 -1
  81. package/dist/tokens/tokens-base-deca-dark.json +1 -1
  82. package/dist/tokens/tokens-base-deca-light.json +1 -1
  83. package/dist/tokens/tokens-base-light.json +1 -1
  84. package/dist/tokens/tokens-deca-dark.json +3 -3
  85. package/dist/tokens/tokens-deca-light.json +3 -3
  86. package/dist/tokens/tokens-dp-dark.json +3 -3
  87. package/dist/tokens/tokens-dp-light.json +3 -3
  88. package/dist/tokens/tokens-expressive-dark.json +3 -3
  89. package/dist/tokens/tokens-expressive-light.json +3 -3
  90. package/dist/tokens/tokens-expressive-sm-dark.json +3 -3
  91. package/dist/tokens/tokens-expressive-sm-light.json +3 -3
  92. package/dist/tokens/tokens-tmo-dark.json +3 -3
  93. package/dist/tokens/tokens-tmo-light.json +3 -3
  94. package/dist/vue2/component-documentation.json +1 -1
  95. package/dist/vue2/lib/button/button-constants.cjs +1 -1
  96. package/dist/vue2/lib/button/button-constants.cjs.map +1 -1
  97. package/dist/vue2/lib/button/button-constants.js +18 -15
  98. package/dist/vue2/lib/button/button-constants.js.map +1 -1
  99. package/dist/vue2/lib/button/button.cjs +1 -1
  100. package/dist/vue2/lib/button/button.cjs.map +1 -1
  101. package/dist/vue2/lib/button/button.js +25 -17
  102. package/dist/vue2/lib/button/button.js.map +1 -1
  103. package/dist/vue2/lib/editor/editor.cjs +1 -1
  104. package/dist/vue2/lib/editor/editor.cjs.map +1 -1
  105. package/dist/vue2/lib/editor/editor.js +53 -53
  106. package/dist/vue2/lib/editor/editor.js.map +1 -1
  107. package/dist/vue2/types/components/button/button.vue.d.ts.map +1 -1
  108. package/dist/vue2/types/components/button/button_constants.d.ts +3 -0
  109. package/dist/vue2/types/components/button/button_constants.d.ts.map +1 -1
  110. package/dist/vue2/types/components/item_layout/item_layout.vue.d.ts +1 -1
  111. package/dist/vue3/component-documentation.json +1 -1
  112. package/dist/vue3/lib/button/button-constants.cjs +1 -1
  113. package/dist/vue3/lib/button/button-constants.cjs.map +1 -1
  114. package/dist/vue3/lib/button/button-constants.js +18 -15
  115. package/dist/vue3/lib/button/button-constants.js.map +1 -1
  116. package/dist/vue3/lib/button/button.cjs +1 -1
  117. package/dist/vue3/lib/button/button.cjs.map +1 -1
  118. package/dist/vue3/lib/button/button.js +33 -25
  119. package/dist/vue3/lib/button/button.js.map +1 -1
  120. package/dist/vue3/lib/editor/editor.cjs +1 -1
  121. package/dist/vue3/lib/editor/editor.cjs.map +1 -1
  122. package/dist/vue3/lib/editor/editor.js +13 -13
  123. package/dist/vue3/lib/editor/editor.js.map +1 -1
  124. package/dist/vue3/types/components/button/button.vue.d.ts.map +1 -1
  125. package/dist/vue3/types/components/button/button_constants.d.ts +3 -0
  126. package/dist/vue3/types/components/button/button_constants.d.ts.map +1 -1
  127. package/dist/vue3/types/components/item_layout/item_layout.vue.d.ts +1 -1
  128. package/package.json +3 -3
  129. package/dist/tokens/themes/chunks/tokens-base-dark-B42c8NRe.js +0 -1
  130. package/dist/tokens/themes/chunks/tokens-base-dark-D3XlzClW.js +0 -4
  131. package/dist/tokens/themes/chunks/tokens-base-light-5p3ZOPKU.js +0 -1
  132. package/dist/tokens/themes/chunks/tokens-base-light-C_G4p7UU.js +0 -4
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={xs:"d-btn--xs",sm:"d-btn--sm",md:"",lg:"d-btn--lg",xl:"d-btn--xl"},n={default:"",muted:"d-btn--muted",danger:"d-btn--danger",positive:"d-btn--positive",inverted:"d-btn--inverted"},i={clear:"",outlined:"d-btn--outlined",primary:"d-btn--primary"},o=["submit","reset","button"],d={left:"d-btn__icon--left",right:"d-btn__icon--right",top:"d-btn__icon--top",bottom:"d-btn__icon--bottom"},r=[{circle:!0,kind:"default",importance:"primary",message:t(!0,"default","primary")},{circle:!0,kind:"danger",importance:"outlined",message:t(!0,"danger","outlined")},{circle:!0,kind:"muted",importance:"primary",message:t(!0,"muted","primary")},{circle:!1,kind:"muted",importance:"primary",message:t(!1,"muted","primary")}],a={xs:"200",sm:"200",md:"300",lg:"400",xl:"500"};function t(s,I,l){return`You cannot have a ${s?"circle ":""}button with kind: ${I} and importance: ${l} as it does not exist in our design system. See https://dialtone.dialpad.com/components/button.html for a list of available button styles`}const m={BUTTON_SIZE_MODIFIERS:e,BUTTON_KIND_MODIFIERS:n,BUTTON_IMPORTANCE_MODIFIERS:i,BUTTON_TYPES:o,ICON_POSITION_MODIFIERS:d,INVALID_COMBINATION:r,BUTTON_ICON_SIZES:a};exports.BUTTON_ICON_SIZES=a;exports.BUTTON_IMPORTANCE_MODIFIERS=i;exports.BUTTON_KIND_MODIFIERS=n;exports.BUTTON_SIZE_MODIFIERS=e;exports.BUTTON_TYPES=o;exports.ICON_POSITION_MODIFIERS=d;exports.INVALID_COMBINATION=r;exports.default=m;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="d-btn--unstyled",n={xs:"d-btn--xs",sm:"d-btn--sm",md:"",lg:"d-btn--lg",xl:"d-btn--xl"},i={default:"",muted:"d-btn--muted",danger:"d-btn--danger",positive:"d-btn--positive",inverted:"d-btn--inverted",unstyled:"d-btn--unstyled"},d={clear:"",outlined:"d-btn--outlined",primary:"d-btn--primary"},o=["submit","reset","button"],r={left:"d-btn__icon--left",right:"d-btn__icon--right",top:"d-btn__icon--top",bottom:"d-btn__icon--bottom"},s=[{circle:!0,kind:"default",importance:"primary",message:t(!0,"default","primary")},{circle:!0,kind:"danger",importance:"outlined",message:t(!0,"danger","outlined")},{circle:!0,kind:"muted",importance:"primary",message:t(!0,"muted","primary")},{circle:!1,kind:"muted",importance:"primary",message:t(!1,"muted","primary")}],a={xs:"200",sm:"200",md:"300",lg:"400",xl:"500"};function t(l,I,_){return`You cannot have a ${l?"circle ":""}button with kind: ${I} and importance: ${_} as it does not exist in our design system. See https://dialtone.dialpad.com/components/button.html for a list of available button styles`}const u={BUTTON_SIZE_MODIFIERS:n,BUTTON_KIND_MODIFIERS:i,BUTTON_IMPORTANCE_MODIFIERS:d,BUTTON_TYPES:o,BUTTON_UNSTYLED_CLASS:e,ICON_POSITION_MODIFIERS:r,INVALID_COMBINATION:s,BUTTON_ICON_SIZES:a};exports.BUTTON_ICON_SIZES=a;exports.BUTTON_IMPORTANCE_MODIFIERS=d;exports.BUTTON_KIND_MODIFIERS=i;exports.BUTTON_SIZE_MODIFIERS=n;exports.BUTTON_TYPES=o;exports.BUTTON_UNSTYLED_CLASS=e;exports.ICON_POSITION_MODIFIERS=r;exports.INVALID_COMBINATION=s;exports.default=u;
2
2
  //# sourceMappingURL=button-constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-constants.cjs","sources":["../../../components/button/button_constants.js"],"sourcesContent":["export const BUTTON_SIZE_MODIFIERS = {\n xs: 'd-btn--xs',\n sm: 'd-btn--sm',\n md: '',\n lg: 'd-btn--lg',\n xl: 'd-btn--xl',\n};\n\nexport const BUTTON_KIND_MODIFIERS = {\n default: '',\n muted: 'd-btn--muted',\n danger: 'd-btn--danger',\n positive: 'd-btn--positive',\n inverted: 'd-btn--inverted',\n};\n\nexport const BUTTON_IMPORTANCE_MODIFIERS = {\n clear: '',\n outlined: 'd-btn--outlined',\n primary: 'd-btn--primary',\n};\n\nexport const BUTTON_TYPES = ['submit', 'reset', 'button'];\n\nexport const ICON_POSITION_MODIFIERS = {\n left: 'd-btn__icon--left',\n right: 'd-btn__icon--right',\n top: 'd-btn__icon--top',\n bottom: 'd-btn__icon--bottom',\n};\n\nexport const INVALID_COMBINATION = [\n {\n circle: true,\n kind: 'default',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'default', 'primary'),\n },\n {\n circle: true,\n kind: 'danger',\n importance: 'outlined',\n message: _invalidCombinationMessage(true, 'danger', 'outlined'),\n },\n {\n circle: true,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'muted', 'primary'),\n },\n {\n circle: false,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(false, 'muted', 'primary'),\n },\n];\n\nexport const BUTTON_ICON_SIZES = {\n xs: '200',\n sm: '200',\n md: '300',\n lg: '400',\n xl: '500',\n};\n\nfunction _invalidCombinationMessage (circle, kind, importance) {\n return `You cannot have a ${circle ? 'circle ' : ''}button \\\nwith kind: ${kind} and importance: ${importance} as it \\\ndoes not exist in our design system. \\\nSee https://dialtone.dialpad.com/components/button.html for a \\\nlist of available button styles`;\n}\n\nexport default {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_TYPES,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n BUTTON_ICON_SIZES,\n};\n"],"names":["BUTTON_SIZE_MODIFIERS","BUTTON_KIND_MODIFIERS","BUTTON_IMPORTANCE_MODIFIERS","BUTTON_TYPES","ICON_POSITION_MODIFIERS","INVALID_COMBINATION","_invalidCombinationMessage","BUTTON_ICON_SIZES","circle","kind","importance","button_constants"],"mappings":"4GAAY,MAACA,EAAwB,CACnC,GAAI,YACJ,GAAI,YACJ,GAAI,GACJ,GAAI,YACJ,GAAI,WACN,EAEaC,EAAwB,CACnC,QAAS,GACT,MAAO,eACP,OAAQ,gBACR,SAAU,kBACV,SAAU,iBACZ,EAEaC,EAA8B,CACzC,MAAO,GACP,SAAU,kBACV,QAAS,gBACX,EAEaC,EAAe,CAAC,SAAU,QAAS,QAAQ,EAE3CC,EAA0B,CACrC,KAAM,oBACN,MAAO,qBACP,IAAK,mBACL,OAAQ,qBACV,EAEaC,EAAsB,CACjC,CACE,OAAQ,GACR,KAAM,UACN,WAAY,UACZ,QAASC,EAA2B,GAAM,UAAW,SAAS,CAC/D,EACD,CACE,OAAQ,GACR,KAAM,SACN,WAAY,WACZ,QAASA,EAA2B,GAAM,SAAU,UAAU,CAC/D,EACD,CACE,OAAQ,GACR,KAAM,QACN,WAAY,UACZ,QAASA,EAA2B,GAAM,QAAS,SAAS,CAC7D,EACD,CACE,OAAQ,GACR,KAAM,QACN,WAAY,UACZ,QAASA,EAA2B,GAAO,QAAS,SAAS,CAC9D,CACH,EAEaC,EAAoB,CAC/B,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,KACN,EAEA,SAASD,EAA4BE,EAAQC,EAAMC,EAAY,CAC7D,MAAO,qBAAqBF,EAAS,UAAY,EAAE,qBACxCC,CAAI,oBAAoBC,CAAU,2IAI/C,CAEA,MAAeC,EAAA,CACb,sBAAAX,EACA,sBAAAC,EACA,4BAAAC,EACA,aAAAC,EACA,wBAAAC,EACA,oBAAAC,EACA,kBAAAE,CACF"}
1
+ {"version":3,"file":"button-constants.cjs","sources":["../../../components/button/button_constants.js"],"sourcesContent":["export const BUTTON_UNSTYLED_CLASS = 'd-btn--unstyled';\n\nexport const BUTTON_SIZE_MODIFIERS = {\n xs: 'd-btn--xs',\n sm: 'd-btn--sm',\n md: '',\n lg: 'd-btn--lg',\n xl: 'd-btn--xl',\n};\n\nexport const BUTTON_KIND_MODIFIERS = {\n default: '',\n muted: 'd-btn--muted',\n danger: 'd-btn--danger',\n positive: 'd-btn--positive',\n inverted: 'd-btn--inverted',\n unstyled: 'd-btn--unstyled',\n};\n\nexport const BUTTON_IMPORTANCE_MODIFIERS = {\n clear: '',\n outlined: 'd-btn--outlined',\n primary: 'd-btn--primary',\n};\n\nexport const BUTTON_TYPES = ['submit', 'reset', 'button'];\n\nexport const ICON_POSITION_MODIFIERS = {\n left: 'd-btn__icon--left',\n right: 'd-btn__icon--right',\n top: 'd-btn__icon--top',\n bottom: 'd-btn__icon--bottom',\n};\n\nexport const INVALID_COMBINATION = [\n {\n circle: true,\n kind: 'default',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'default', 'primary'),\n },\n {\n circle: true,\n kind: 'danger',\n importance: 'outlined',\n message: _invalidCombinationMessage(true, 'danger', 'outlined'),\n },\n {\n circle: true,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'muted', 'primary'),\n },\n {\n circle: false,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(false, 'muted', 'primary'),\n },\n];\n\nexport const BUTTON_ICON_SIZES = {\n xs: '200',\n sm: '200',\n md: '300',\n lg: '400',\n xl: '500',\n};\n\nfunction _invalidCombinationMessage (circle, kind, importance) {\n return `You cannot have a ${circle ? 'circle ' : ''}button \\\nwith kind: ${kind} and importance: ${importance} as it \\\ndoes not exist in our design system. \\\nSee https://dialtone.dialpad.com/components/button.html for a \\\nlist of available button styles`;\n}\n\nexport default {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_TYPES,\n BUTTON_UNSTYLED_CLASS,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n BUTTON_ICON_SIZES,\n};\n"],"names":["BUTTON_UNSTYLED_CLASS","BUTTON_SIZE_MODIFIERS","BUTTON_KIND_MODIFIERS","BUTTON_IMPORTANCE_MODIFIERS","BUTTON_TYPES","ICON_POSITION_MODIFIERS","INVALID_COMBINATION","_invalidCombinationMessage","BUTTON_ICON_SIZES","circle","kind","importance","button_constants"],"mappings":"4GAAY,MAACA,EAAwB,kBAExBC,EAAwB,CACnC,GAAI,YACJ,GAAI,YACJ,GAAI,GACJ,GAAI,YACJ,GAAI,WACN,EAEaC,EAAwB,CACnC,QAAS,GACT,MAAO,eACP,OAAQ,gBACR,SAAU,kBACV,SAAU,kBACV,SAAU,iBACZ,EAEaC,EAA8B,CACzC,MAAO,GACP,SAAU,kBACV,QAAS,gBACX,EAEaC,EAAe,CAAC,SAAU,QAAS,QAAQ,EAE3CC,EAA0B,CACrC,KAAM,oBACN,MAAO,qBACP,IAAK,mBACL,OAAQ,qBACV,EAEaC,EAAsB,CACjC,CACE,OAAQ,GACR,KAAM,UACN,WAAY,UACZ,QAASC,EAA2B,GAAM,UAAW,SAAS,CAC/D,EACD,CACE,OAAQ,GACR,KAAM,SACN,WAAY,WACZ,QAASA,EAA2B,GAAM,SAAU,UAAU,CAC/D,EACD,CACE,OAAQ,GACR,KAAM,QACN,WAAY,UACZ,QAASA,EAA2B,GAAM,QAAS,SAAS,CAC7D,EACD,CACE,OAAQ,GACR,KAAM,QACN,WAAY,UACZ,QAASA,EAA2B,GAAO,QAAS,SAAS,CAC9D,CACH,EAEaC,EAAoB,CAC/B,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,KACN,EAEA,SAASD,EAA4BE,EAAQC,EAAMC,EAAY,CAC7D,MAAO,qBAAqBF,EAAS,UAAY,EAAE,qBACxCC,CAAI,oBAAoBC,CAAU,2IAI/C,CAEA,MAAeC,EAAA,CACb,sBAAAX,EACA,sBAAAC,EACA,4BAAAC,EACA,aAAAC,EACA,sBAAAJ,EACA,wBAAAK,EACA,oBAAAC,EACA,kBAAAE,CACF"}
@@ -1,25 +1,26 @@
1
- const o = {
1
+ const d = "d-btn--unstyled", o = {
2
2
  xs: "d-btn--xs",
3
3
  sm: "d-btn--sm",
4
4
  md: "",
5
5
  lg: "d-btn--lg",
6
6
  xl: "d-btn--xl"
7
- }, d = {
7
+ }, s = {
8
8
  default: "",
9
9
  muted: "d-btn--muted",
10
10
  danger: "d-btn--danger",
11
11
  positive: "d-btn--positive",
12
- inverted: "d-btn--inverted"
12
+ inverted: "d-btn--inverted",
13
+ unstyled: "d-btn--unstyled"
13
14
  }, r = {
14
15
  clear: "",
15
16
  outlined: "d-btn--outlined",
16
17
  primary: "d-btn--primary"
17
- }, a = ["submit", "reset", "button"], s = {
18
+ }, a = ["submit", "reset", "button"], m = {
18
19
  left: "d-btn__icon--left",
19
20
  right: "d-btn__icon--right",
20
21
  top: "d-btn__icon--top",
21
22
  bottom: "d-btn__icon--bottom"
22
- }, m = [
23
+ }, l = [
23
24
  {
24
25
  circle: !0,
25
26
  kind: "default",
@@ -51,26 +52,28 @@ const o = {
51
52
  lg: "400",
52
53
  xl: "500"
53
54
  };
54
- function t(e, n, i) {
55
- return `You cannot have a ${e ? "circle " : ""}button with kind: ${n} and importance: ${i} as it does not exist in our design system. See https://dialtone.dialpad.com/components/button.html for a list of available button styles`;
55
+ function t(n, e, i) {
56
+ return `You cannot have a ${n ? "circle " : ""}button with kind: ${e} and importance: ${i} as it does not exist in our design system. See https://dialtone.dialpad.com/components/button.html for a list of available button styles`;
56
57
  }
57
- const l = {
58
+ const u = {
58
59
  BUTTON_SIZE_MODIFIERS: o,
59
- BUTTON_KIND_MODIFIERS: d,
60
+ BUTTON_KIND_MODIFIERS: s,
60
61
  BUTTON_IMPORTANCE_MODIFIERS: r,
61
62
  BUTTON_TYPES: a,
62
- ICON_POSITION_MODIFIERS: s,
63
- INVALID_COMBINATION: m,
63
+ BUTTON_UNSTYLED_CLASS: d,
64
+ ICON_POSITION_MODIFIERS: m,
65
+ INVALID_COMBINATION: l,
64
66
  BUTTON_ICON_SIZES: c
65
67
  };
66
68
  export {
67
69
  c as BUTTON_ICON_SIZES,
68
70
  r as BUTTON_IMPORTANCE_MODIFIERS,
69
- d as BUTTON_KIND_MODIFIERS,
71
+ s as BUTTON_KIND_MODIFIERS,
70
72
  o as BUTTON_SIZE_MODIFIERS,
71
73
  a as BUTTON_TYPES,
72
- s as ICON_POSITION_MODIFIERS,
73
- m as INVALID_COMBINATION,
74
- l as default
74
+ d as BUTTON_UNSTYLED_CLASS,
75
+ m as ICON_POSITION_MODIFIERS,
76
+ l as INVALID_COMBINATION,
77
+ u as default
75
78
  };
76
79
  //# sourceMappingURL=button-constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-constants.js","sources":["../../../components/button/button_constants.js"],"sourcesContent":["export const BUTTON_SIZE_MODIFIERS = {\n xs: 'd-btn--xs',\n sm: 'd-btn--sm',\n md: '',\n lg: 'd-btn--lg',\n xl: 'd-btn--xl',\n};\n\nexport const BUTTON_KIND_MODIFIERS = {\n default: '',\n muted: 'd-btn--muted',\n danger: 'd-btn--danger',\n positive: 'd-btn--positive',\n inverted: 'd-btn--inverted',\n};\n\nexport const BUTTON_IMPORTANCE_MODIFIERS = {\n clear: '',\n outlined: 'd-btn--outlined',\n primary: 'd-btn--primary',\n};\n\nexport const BUTTON_TYPES = ['submit', 'reset', 'button'];\n\nexport const ICON_POSITION_MODIFIERS = {\n left: 'd-btn__icon--left',\n right: 'd-btn__icon--right',\n top: 'd-btn__icon--top',\n bottom: 'd-btn__icon--bottom',\n};\n\nexport const INVALID_COMBINATION = [\n {\n circle: true,\n kind: 'default',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'default', 'primary'),\n },\n {\n circle: true,\n kind: 'danger',\n importance: 'outlined',\n message: _invalidCombinationMessage(true, 'danger', 'outlined'),\n },\n {\n circle: true,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'muted', 'primary'),\n },\n {\n circle: false,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(false, 'muted', 'primary'),\n },\n];\n\nexport const BUTTON_ICON_SIZES = {\n xs: '200',\n sm: '200',\n md: '300',\n lg: '400',\n xl: '500',\n};\n\nfunction _invalidCombinationMessage (circle, kind, importance) {\n return `You cannot have a ${circle ? 'circle ' : ''}button \\\nwith kind: ${kind} and importance: ${importance} as it \\\ndoes not exist in our design system. \\\nSee https://dialtone.dialpad.com/components/button.html for a \\\nlist of available button styles`;\n}\n\nexport default {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_TYPES,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n BUTTON_ICON_SIZES,\n};\n"],"names":["BUTTON_SIZE_MODIFIERS","BUTTON_KIND_MODIFIERS","BUTTON_IMPORTANCE_MODIFIERS","BUTTON_TYPES","ICON_POSITION_MODIFIERS","INVALID_COMBINATION","_invalidCombinationMessage","BUTTON_ICON_SIZES","circle","kind","importance","button_constants"],"mappings":"AAAY,MAACA,IAAwB;AAAA,EACnC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAAwB;AAAA,EACnC,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AACZ,GAEaC,IAA8B;AAAA,EACzC,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AACX,GAEaC,IAAe,CAAC,UAAU,SAAS,QAAQ,GAE3CC,IAA0B;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AACV,GAEaC,IAAsB;AAAA,EACjC;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASC,EAA2B,IAAM,WAAW,SAAS;AAAA,EAC/D;AAAA,EACD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASA,EAA2B,IAAM,UAAU,UAAU;AAAA,EAC/D;AAAA,EACD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASA,EAA2B,IAAM,SAAS,SAAS;AAAA,EAC7D;AAAA,EACD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASA,EAA2B,IAAO,SAAS,SAAS;AAAA,EAC9D;AACH,GAEaC,IAAoB;AAAA,EAC/B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,SAASD,EAA4BE,GAAQC,GAAMC,GAAY;AAC7D,SAAO,qBAAqBF,IAAS,YAAY,EAAE,qBACxCC,CAAI,oBAAoBC,CAAU;AAI/C;AAEA,MAAeC,IAAA;AAAA,EACb,uBAAAX;AAAA,EACA,uBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,cAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,mBAAAE;AACF;"}
1
+ {"version":3,"file":"button-constants.js","sources":["../../../components/button/button_constants.js"],"sourcesContent":["export const BUTTON_UNSTYLED_CLASS = 'd-btn--unstyled';\n\nexport const BUTTON_SIZE_MODIFIERS = {\n xs: 'd-btn--xs',\n sm: 'd-btn--sm',\n md: '',\n lg: 'd-btn--lg',\n xl: 'd-btn--xl',\n};\n\nexport const BUTTON_KIND_MODIFIERS = {\n default: '',\n muted: 'd-btn--muted',\n danger: 'd-btn--danger',\n positive: 'd-btn--positive',\n inverted: 'd-btn--inverted',\n unstyled: 'd-btn--unstyled',\n};\n\nexport const BUTTON_IMPORTANCE_MODIFIERS = {\n clear: '',\n outlined: 'd-btn--outlined',\n primary: 'd-btn--primary',\n};\n\nexport const BUTTON_TYPES = ['submit', 'reset', 'button'];\n\nexport const ICON_POSITION_MODIFIERS = {\n left: 'd-btn__icon--left',\n right: 'd-btn__icon--right',\n top: 'd-btn__icon--top',\n bottom: 'd-btn__icon--bottom',\n};\n\nexport const INVALID_COMBINATION = [\n {\n circle: true,\n kind: 'default',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'default', 'primary'),\n },\n {\n circle: true,\n kind: 'danger',\n importance: 'outlined',\n message: _invalidCombinationMessage(true, 'danger', 'outlined'),\n },\n {\n circle: true,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(true, 'muted', 'primary'),\n },\n {\n circle: false,\n kind: 'muted',\n importance: 'primary',\n message: _invalidCombinationMessage(false, 'muted', 'primary'),\n },\n];\n\nexport const BUTTON_ICON_SIZES = {\n xs: '200',\n sm: '200',\n md: '300',\n lg: '400',\n xl: '500',\n};\n\nfunction _invalidCombinationMessage (circle, kind, importance) {\n return `You cannot have a ${circle ? 'circle ' : ''}button \\\nwith kind: ${kind} and importance: ${importance} as it \\\ndoes not exist in our design system. \\\nSee https://dialtone.dialpad.com/components/button.html for a \\\nlist of available button styles`;\n}\n\nexport default {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_TYPES,\n BUTTON_UNSTYLED_CLASS,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n BUTTON_ICON_SIZES,\n};\n"],"names":["BUTTON_UNSTYLED_CLASS","BUTTON_SIZE_MODIFIERS","BUTTON_KIND_MODIFIERS","BUTTON_IMPORTANCE_MODIFIERS","BUTTON_TYPES","ICON_POSITION_MODIFIERS","INVALID_COMBINATION","_invalidCombinationMessage","BUTTON_ICON_SIZES","circle","kind","importance","button_constants"],"mappings":"AAAY,MAACA,IAAwB,mBAExBC,IAAwB;AAAA,EACnC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAAwB;AAAA,EACnC,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ,GAEaC,IAA8B;AAAA,EACzC,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AACX,GAEaC,IAAe,CAAC,UAAU,SAAS,QAAQ,GAE3CC,IAA0B;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AACV,GAEaC,IAAsB;AAAA,EACjC;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASC,EAA2B,IAAM,WAAW,SAAS;AAAA,EAC/D;AAAA,EACD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASA,EAA2B,IAAM,UAAU,UAAU;AAAA,EAC/D;AAAA,EACD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASA,EAA2B,IAAM,SAAS,SAAS;AAAA,EAC7D;AAAA,EACD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,SAASA,EAA2B,IAAO,SAAS,SAAS;AAAA,EAC9D;AACH,GAEaC,IAAoB;AAAA,EAC/B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,SAASD,EAA4BE,GAAQC,GAAMC,GAAY;AAC7D,SAAO,qBAAqBF,IAAS,YAAY,EAAE,qBACxCC,CAAI,oBAAoBC,CAAU;AAI/C;AAEA,MAAeC,IAAA;AAAA,EACb,uBAAAX;AAAA,EACA,uBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,cAAAC;AAAA,EACA,uBAAAJ;AAAA,EACA,yBAAAK;AAAA,EACA,qBAAAC;AAAA,EACA,mBAAAE;AACF;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),a=require("../../common/utils/index.cjs"),i=require("./button-constants.cjs"),c=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),u=require("../link/link-constants.cjs"),d={compatConfig:{MODE:3},name:"DtButton",props:{circle:{type:Boolean,default:!1},iconPosition:{type:String,default:"left",validator:t=>Object.keys(i.ICON_POSITION_MODIFIERS).includes(t)},importance:{type:String,default:"primary",validator:t=>Object.keys(i.BUTTON_IMPORTANCE_MODIFIERS).includes(t)},link:{type:Boolean,default:!1},linkKind:{type:String,default:"default",validator:t=>Object.keys(u.LINK_KIND_MODIFIERS).includes(t)},linkInverted:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>i.BUTTON_TYPES.includes(t)},width:{type:String,default:null},size:{type:String,default:"md",validator:t=>Object.keys(i.BUTTON_SIZE_MODIFIERS).includes(t)},labelClass:{type:[String,Array,Object],default:""},loading:{type:Boolean,default:!1},kind:{type:String,default:"default",validator:t=>Object.keys(i.BUTTON_KIND_MODIFIERS).includes(t)},assertiveOnFocus:{type:Boolean,default:!1},active:{type:Boolean,default:!1}},emits:["focusin","focusout"],data(){return{ICON_POSITION_MODIFIERS:i.ICON_POSITION_MODIFIERS,isInFocus:!1,hasSlotContent:a.hasSlotContent}},computed:{buttonListeners(){return{focusin:t=>{this.isInFocus=this.assertiveOnFocus,this.$emit("focusin",t)},focusout:t=>{this.isInFocus=!1,this.$emit("focusout",t)}}},computedAriaLive(){return this.assertiveOnFocus&&this.isInFocus?"assertive":this.$attrs.ariaLive},iconSize(){return i.BUTTON_ICON_SIZES[this.size]}},watch:{$props:{deep:!0,immediate:!0,handler(){process.env.NODE_ENV!=="production"&&(this.circle&&this.link&&e.warn("You cannot enable circle and link at the same time",this),this.isInvalidPropCombination(this.circle,this.kind,this.importance))}}},methods:{buttonClasses(){return this.link?["d-link",u.getLinkKindModifier(this.linkKind,this.linkInverted),i.BUTTON_SIZE_MODIFIERS[this.size]]:["d-btn",i.BUTTON_IMPORTANCE_MODIFIERS[this.importance],i.BUTTON_KIND_MODIFIERS[this.kind],i.BUTTON_SIZE_MODIFIERS[this.size],{"d-btn--circle":this.circle,"d-btn--loading":this.loading,"d-btn--icon-only":this.isIconOnly(),"d-btn--vertical":this.isVerticalIconLayout(),"d-btn--active":this.active}]},isInvalidPropCombination(t,l,n){for(const s of i.INVALID_COMBINATION)if(t===s.circle&&l===s.kind&&n===s.importance)return console.warn(s.message),!1;return!0},shouldRenderIcon(){return a.hasSlotContent(this.$slots.icon)&&!this.link},isIconOnly(){return this.shouldRenderIcon()&&!a.hasSlotContent(this.$slots.default)},isVerticalIconLayout(){return!this.isIconOnly()&&["top","bottom"].includes(this.iconPosition)}}},I=["type","disabled","aria-live","aria-label"];function _(t,l,n,s,r,o){return e.openBlock(),e.createElementBlock("button",e.mergeProps({class:["base-button__button",o.buttonClasses()],"data-qa":"dt-button",type:n.type,disabled:n.disabled,style:{width:n.width},"aria-live":o.computedAriaLive,"aria-label":n.loading?"loading":t.$attrs["aria-label"]},e.toHandlers(o.buttonListeners,!0)),[o.shouldRenderIcon()?(e.openBlock(),e.createElementBlock("span",{key:0,"data-qa":"dt-button-icon",class:e.normalizeClass(["base-button__icon","d-btn__icon",r.ICON_POSITION_MODIFIERS[n.iconPosition]])},[e.renderSlot(t.$slots,"icon",{iconSize:o.iconSize})],2)):e.createCommentVNode("",!0),r.hasSlotContent(t.$slots.default)?(e.openBlock(),e.createElementBlock("span",{key:1,"data-qa":"dt-button-label",class:e.normalizeClass(["d-btn__label","base-button__label",n.labelClass])},[e.renderSlot(t.$slots,"default")],2)):e.createCommentVNode("",!0)],16,I)}const O=c._(d,[["render",_]]);exports.default=O;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),a=require("../../common/utils/index.cjs"),n=require("./button-constants.cjs"),u=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),d=require("../link/link-constants.cjs"),c={compatConfig:{MODE:3},name:"DtButton",props:{circle:{type:Boolean,default:!1},iconPosition:{type:String,default:"left",validator:t=>Object.keys(n.ICON_POSITION_MODIFIERS).includes(t)},importance:{type:String,default:"primary",validator:t=>Object.keys(n.BUTTON_IMPORTANCE_MODIFIERS).includes(t)},link:{type:Boolean,default:!1},linkKind:{type:String,default:"default",validator:t=>Object.keys(d.LINK_KIND_MODIFIERS).includes(t)},linkInverted:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>n.BUTTON_TYPES.includes(t)},width:{type:String,default:null},size:{type:String,default:"md",validator:t=>Object.keys(n.BUTTON_SIZE_MODIFIERS).includes(t)},labelClass:{type:[String,Array,Object],default:""},loading:{type:Boolean,default:!1},kind:{type:String,default:"default",validator:t=>Object.keys(n.BUTTON_KIND_MODIFIERS).includes(t)},assertiveOnFocus:{type:Boolean,default:!1},active:{type:Boolean,default:!1}},emits:["focusin","focusout"],data(){return{ICON_POSITION_MODIFIERS:n.ICON_POSITION_MODIFIERS,isInFocus:!1,hasSlotContent:a.hasSlotContent}},computed:{buttonListeners(){return{focusin:t=>{this.isInFocus=this.assertiveOnFocus,this.$emit("focusin",t)},focusout:t=>{this.isInFocus=!1,this.$emit("focusout",t)}}},computedAriaLive(){return this.assertiveOnFocus&&this.isInFocus?"assertive":this.$attrs.ariaLive},iconSize(){return n.BUTTON_ICON_SIZES[this.size]}},watch:{$props:{deep:!0,immediate:!0,handler(){process.env.NODE_ENV!=="production"&&(this.circle&&this.link&&e.warn("You cannot enable circle and link at the same time",this),this.isInvalidPropCombination(this.circle,this.kind,this.importance))}}},methods:{buttonClasses(){return this.link?["d-link",d.getLinkKindModifier(this.linkKind,this.linkInverted),n.BUTTON_SIZE_MODIFIERS[this.size]]:this.kind==="unstyled"?["d-btn--unstyled"]:["d-btn",n.BUTTON_IMPORTANCE_MODIFIERS[this.importance],n.BUTTON_KIND_MODIFIERS[this.kind],n.BUTTON_SIZE_MODIFIERS[this.size],{"d-btn--circle":this.circle,"d-btn--loading":this.loading,"d-btn--icon-only":this.isIconOnly(),"d-btn--vertical":this.isVerticalIconLayout(),"d-btn--active":this.active}]},isInvalidPropCombination(t,o,i){if(this.kind==="unstyled")return!0;for(const s of n.INVALID_COMBINATION)if(t===s.circle&&o===s.kind&&i===s.importance)return console.warn(s.message),!1;return!0},shouldRenderIcon(){return a.hasSlotContent(this.$slots.icon)&&!this.link},isIconOnly(){return this.shouldRenderIcon()&&!a.hasSlotContent(this.$slots.default)},isVerticalIconLayout(){return!this.isIconOnly()&&["top","bottom"].includes(this.iconPosition)}}},I=["type","disabled","aria-live","aria-label"];function _(t,o,i,s,r,l){return e.openBlock(),e.createElementBlock("button",e.mergeProps({class:["base-button__button",l.buttonClasses()],"data-qa":"dt-button",type:i.type,disabled:i.disabled,style:{width:i.width},"aria-live":l.computedAriaLive,"aria-label":i.loading?"loading":t.$attrs["aria-label"]},e.toHandlers(l.buttonListeners,!0)),[l.shouldRenderIcon()?(e.openBlock(),e.createElementBlock("span",{key:0,"data-qa":"dt-button-icon",class:e.normalizeClass(["base-button__icon",{"d-btn__icon":i.kind!=="unstyled",[r.ICON_POSITION_MODIFIERS[i.iconPosition]]:i.kind!=="unstyled"}])},[e.renderSlot(t.$slots,"icon",{iconSize:l.iconSize})],2)):e.createCommentVNode("",!0),r.hasSlotContent(t.$slots.default)?(e.openBlock(),e.createElementBlock("span",{key:1,"data-qa":"dt-button-label",class:e.normalizeClass(["base-button__label",{"d-btn__label":i.kind!=="unstyled"},i.labelClass])},[e.renderSlot(t.$slots,"default")],2)):e.createCommentVNode("",!0)],16,I)}const b=u._(c,[["render",_]]);exports.default=b;
2
2
  //# sourceMappingURL=button.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.cjs","sources":["../../../components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"[\n 'base-button__button',\n buttonClasses(),\n ]\"\n data-qa=\"dt-button\"\n :type=\"type\"\n :disabled=\"disabled\"\n :style=\"{ width: width }\"\n :aria-live=\"computedAriaLive\"\n :aria-label=\"loading ? 'loading' : $attrs['aria-label']\"\n v-on=\"buttonListeners\"\n >\n <!-- NOTE(cormac): This span is needed since we can't apply styles to slots. -->\n <span\n v-if=\"shouldRenderIcon()\"\n data-qa=\"dt-button-icon\"\n :class=\"[\n 'base-button__icon',\n 'd-btn__icon',\n ICON_POSITION_MODIFIERS[iconPosition],\n ]\"\n >\n <!-- @slot Button icon -->\n <slot\n name=\"icon\"\n :icon-size=\"iconSize\"\n />\n </span>\n <span\n v-if=\"hasSlotContent($slots.default)\"\n data-qa=\"dt-button-label\"\n :class=\"['d-btn__label', 'base-button__label', labelClass]\"\n >\n <!-- @slot Content within button -->\n <slot />\n </span>\n </button>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { hasSlotContent } from '@/common/utils';\n\nimport {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_ICON_SIZES,\n BUTTON_TYPES,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n} from './button_constants';\n\nimport { LINK_KIND_MODIFIERS, getLinkKindModifier } from '@/components/link';\n\n/**\n * A button is a UI element which allows users to take an action throughout the app.\n * It is important a button is identifiable, consistent, and communicates its actions clearly,\n * and is appropriately sized to its action.\n * @see https://dialtone.dialpad.com/components/button.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtButton',\n\n props: {\n /**\n * Whether the button is a circle or not.\n * @values true, false\n */\n circle: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The position of the icon slot within the button.\n * @values left, right, top, bottom\n */\n iconPosition: {\n type: String,\n default: 'left',\n validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position),\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 * Whether the button should be styled as a link or not.\n * @values true, false\n * @see DtLink\n */\n link: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the link and button if the button is styled as a link.\n * @values default, warning, danger, success, muted\n * @see DtLink\n */\n linkKind: {\n type: String,\n default: 'default',\n validator: (lk) => Object.keys(LINK_KIND_MODIFIERS).includes(lk),\n },\n\n /**\n * Determines whether the link should have inverted styling if the button is styled as a link.\n * @values true, false\n * @see DtLink\n */\n linkInverted: {\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\"> (Reference) </a>\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button type attribute\n * <a\n * class=\"d-link\"\n * href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type\"\n * target=\"_blank\"\n * >\n * (Reference)\n * </a>\n * @values button, submit, reset\n */\n type: {\n type: String,\n default: 'button',\n validator: (t) => BUTTON_TYPES.includes(t),\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 * 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 * 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 * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the button.\n * @values default, muted, danger, positive, 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 a screenreader reads live updates of\n * the button content to the user while the button\n * is in focus. default is to not.\n * @values true, false\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines whether the button should have active styling\n * default is false.\n * @values true, false\n */\n active: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native button focus in event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native button focus out event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n ],\n\n data () {\n return {\n ICON_POSITION_MODIFIERS,\n // whether the button is currently in focus\n isInFocus: false,\n hasSlotContent,\n };\n },\n\n computed: {\n\n buttonListeners () {\n return {\n focusin: (e) => {\n this.isInFocus = this.assertiveOnFocus;\n this.$emit('focusin', e);\n },\n\n focusout: (e) => {\n this.isInFocus = false;\n this.$emit('focusout', e);\n },\n };\n },\n\n computedAriaLive () {\n return this.assertiveOnFocus && this.isInFocus ? 'assertive' : this.$attrs.ariaLive;\n },\n\n iconSize () {\n return BUTTON_ICON_SIZES[this.size];\n },\n },\n\n watch: {\n $props: {\n deep: true,\n immediate: true,\n handler () {\n if (process.env.NODE_ENV === 'production') return;\n\n if (this.circle && this.link) {\n warn('You cannot enable circle and link at the same time', this);\n }\n\n this.isInvalidPropCombination(this.circle, this.kind, this.importance);\n },\n },\n },\n\n methods: {\n buttonClasses () {\n if (this.link) {\n return [\n 'd-link',\n getLinkKindModifier(this.linkKind, this.linkInverted),\n BUTTON_SIZE_MODIFIERS[this.size],\n ];\n }\n return [\n 'd-btn',\n BUTTON_IMPORTANCE_MODIFIERS[this.importance],\n BUTTON_KIND_MODIFIERS[this.kind],\n BUTTON_SIZE_MODIFIERS[this.size],\n {\n 'd-btn--circle': this.circle,\n 'd-btn--loading': this.loading,\n 'd-btn--icon-only': this.isIconOnly(),\n 'd-btn--vertical': this.isVerticalIconLayout(),\n 'd-btn--active': this.active,\n },\n ];\n },\n\n isInvalidPropCombination (circle, kind, importance) {\n for (const row of INVALID_COMBINATION) {\n if (circle === row.circle && kind === row.kind && importance === row.importance) {\n console.warn(row.message);\n return false;\n }\n }\n return true;\n },\n\n shouldRenderIcon () {\n return hasSlotContent(this.$slots.icon) && !this.link;\n },\n\n isIconOnly () {\n return this.shouldRenderIcon() && !hasSlotContent(this.$slots.default);\n },\n\n isVerticalIconLayout () {\n return !this.isIconOnly() && ['top', 'bottom'].includes(this.iconPosition);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","position","ICON_POSITION_MODIFIERS","i","BUTTON_IMPORTANCE_MODIFIERS","lk","LINK_KIND_MODIFIERS","BUTTON_TYPES","s","BUTTON_SIZE_MODIFIERS","k","BUTTON_KIND_MODIFIERS","hasSlotContent","e","BUTTON_ICON_SIZES","warn","getLinkKindModifier","circle","kind","importance","row","INVALID_COMBINATION","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","$options","$props","_ctx","_toHandlers","_normalizeClass","$data","_renderSlot","_createCommentVNode"],"mappings":"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"}
1
+ {"version":3,"file":"button.cjs","sources":["../../../components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"[\n 'base-button__button',\n buttonClasses(),\n ]\"\n data-qa=\"dt-button\"\n :type=\"type\"\n :disabled=\"disabled\"\n :style=\"{ width: width }\"\n :aria-live=\"computedAriaLive\"\n :aria-label=\"loading ? 'loading' : $attrs['aria-label']\"\n v-on=\"buttonListeners\"\n >\n <!-- NOTE(cormac): This span is needed since we can't apply styles to slots. -->\n <span\n v-if=\"shouldRenderIcon()\"\n data-qa=\"dt-button-icon\"\n :class=\"[\n 'base-button__icon',\n {\n 'd-btn__icon': kind !== 'unstyled',\n [ICON_POSITION_MODIFIERS[iconPosition]]: kind !== 'unstyled',\n },\n ]\"\n >\n <!-- @slot Button icon -->\n <slot\n name=\"icon\"\n :icon-size=\"iconSize\"\n />\n </span>\n <span\n v-if=\"hasSlotContent($slots.default)\"\n data-qa=\"dt-button-label\"\n :class=\"[\n 'base-button__label',\n { 'd-btn__label': kind !== 'unstyled' },\n labelClass,\n ]\"\n >\n <!-- @slot Content within button -->\n <slot />\n </span>\n </button>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { hasSlotContent } from '@/common/utils';\n\nimport {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_ICON_SIZES,\n BUTTON_TYPES,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n} from './button_constants';\n\nimport { LINK_KIND_MODIFIERS, getLinkKindModifier } from '@/components/link';\n\n/**\n * A button is a UI element which allows users to take an action throughout the app.\n * It is important a button is identifiable, consistent, and communicates its actions clearly,\n * and is appropriately sized to its action.\n * @see https://dialtone.dialpad.com/components/button.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtButton',\n\n props: {\n /**\n * Whether the button is a circle or not.\n * @values true, false\n */\n circle: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The position of the icon slot within the button.\n * @values left, right, top, bottom\n */\n iconPosition: {\n type: String,\n default: 'left',\n validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position),\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 * Whether the button should be styled as a link or not.\n * @values true, false\n * @see DtLink\n */\n link: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the link and button if the button is styled as a link.\n * @values default, warning, danger, success, muted\n * @see DtLink\n */\n linkKind: {\n type: String,\n default: 'default',\n validator: (lk) => Object.keys(LINK_KIND_MODIFIERS).includes(lk),\n },\n\n /**\n * Determines whether the link should have inverted styling if the button is styled as a link.\n * @values true, false\n * @see DtLink\n */\n linkInverted: {\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\"> (Reference) </a>\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button type attribute\n * <a\n * class=\"d-link\"\n * href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type\"\n * target=\"_blank\"\n * >\n * (Reference)\n * </a>\n * @values button, submit, reset\n */\n type: {\n type: String,\n default: 'button',\n validator: (t) => BUTTON_TYPES.includes(t),\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 * 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 * 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 * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the button.\n * @values default, unstyled, muted, danger, positive, inverted, unstyled\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 a screenreader reads live updates of\n * the button content to the user while the button\n * is in focus. default is to not.\n * @values true, false\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines whether the button should have active styling\n * default is false.\n * @values true, false\n */\n active: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native button focus in event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native button focus out event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n ],\n\n data () {\n return {\n ICON_POSITION_MODIFIERS,\n // whether the button is currently in focus\n isInFocus: false,\n hasSlotContent,\n };\n },\n\n computed: {\n\n buttonListeners () {\n return {\n focusin: (e) => {\n this.isInFocus = this.assertiveOnFocus;\n this.$emit('focusin', e);\n },\n\n focusout: (e) => {\n this.isInFocus = false;\n this.$emit('focusout', e);\n },\n };\n },\n\n computedAriaLive () {\n return this.assertiveOnFocus && this.isInFocus ? 'assertive' : this.$attrs.ariaLive;\n },\n\n iconSize () {\n return BUTTON_ICON_SIZES[this.size];\n },\n },\n\n watch: {\n $props: {\n deep: true,\n immediate: true,\n handler () {\n if (process.env.NODE_ENV === 'production') return;\n\n if (this.circle && this.link) {\n warn('You cannot enable circle and link at the same time', this);\n }\n\n this.isInvalidPropCombination(this.circle, this.kind, this.importance);\n },\n },\n },\n\n methods: {\n buttonClasses () {\n if (this.link) {\n return [\n 'd-link',\n getLinkKindModifier(this.linkKind, this.linkInverted),\n BUTTON_SIZE_MODIFIERS[this.size],\n ];\n }\n if (this.kind === 'unstyled') {\n return ['d-btn--unstyled'];\n }\n return [\n 'd-btn',\n BUTTON_IMPORTANCE_MODIFIERS[this.importance],\n BUTTON_KIND_MODIFIERS[this.kind],\n BUTTON_SIZE_MODIFIERS[this.size],\n {\n 'd-btn--circle': this.circle,\n 'd-btn--loading': this.loading,\n 'd-btn--icon-only': this.isIconOnly(),\n 'd-btn--vertical': this.isVerticalIconLayout(),\n 'd-btn--active': this.active,\n },\n ];\n },\n\n isInvalidPropCombination (circle, kind, importance) {\n // Skip validation if unstyled is true\n if (this.kind === 'unstyled') {\n return true;\n }\n\n for (const row of INVALID_COMBINATION) {\n if (circle === row.circle && kind === row.kind && importance === row.importance) {\n console.warn(row.message);\n return false;\n }\n }\n return true;\n },\n\n shouldRenderIcon () {\n return hasSlotContent(this.$slots.icon) && !this.link;\n },\n\n isIconOnly () {\n return this.shouldRenderIcon() && !hasSlotContent(this.$slots.default);\n },\n\n isVerticalIconLayout () {\n return !this.isIconOnly() && ['top', 'bottom'].includes(this.iconPosition);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","position","ICON_POSITION_MODIFIERS","i","BUTTON_IMPORTANCE_MODIFIERS","lk","LINK_KIND_MODIFIERS","BUTTON_TYPES","s","BUTTON_SIZE_MODIFIERS","k","BUTTON_KIND_MODIFIERS","hasSlotContent","e","BUTTON_ICON_SIZES","warn","getLinkKindModifier","circle","kind","importance","row","INVALID_COMBINATION","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","$options","$props","_ctx","_toHandlers","_normalizeClass","$data","_renderSlot","_createCommentVNode"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { warn as m, openBlock as s, createElementBlock as a, mergeProps as p, toHandlers as y, normalizeClass as c, renderSlot as u, createCommentVNode as f } from "vue";
2
- import { hasSlotContent as o } from "../../common/utils/index.js";
3
- import { ICON_POSITION_MODIFIERS as h, BUTTON_IMPORTANCE_MODIFIERS as b, BUTTON_TYPES as O, BUTTON_SIZE_MODIFIERS as l, BUTTON_KIND_MODIFIERS as I, BUTTON_ICON_SIZES as _, INVALID_COMBINATION as S } from "./button-constants.js";
4
- import { _ as k } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
1
+ import { warn as y, openBlock as s, createElementBlock as a, mergeProps as m, toHandlers as O, normalizeClass as u, renderSlot as c, createCommentVNode as f } from "vue";
2
+ import { hasSlotContent as l } from "../../common/utils/index.js";
3
+ import { ICON_POSITION_MODIFIERS as h, BUTTON_IMPORTANCE_MODIFIERS as b, BUTTON_TYPES as _, BUTTON_SIZE_MODIFIERS as o, BUTTON_KIND_MODIFIERS as I, BUTTON_ICON_SIZES as p, INVALID_COMBINATION as k } from "./button-constants.js";
4
+ import { _ as S } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
5
5
  import { LINK_KIND_MODIFIERS as v, getLinkKindModifier as N } from "../link/link-constants.js";
6
6
  const g = {
7
7
  compatConfig: { MODE: 3 },
@@ -84,7 +84,7 @@ const g = {
84
84
  type: {
85
85
  type: String,
86
86
  default: "button",
87
- validator: (t) => O.includes(t)
87
+ validator: (t) => _.includes(t)
88
88
  },
89
89
  /**
90
90
  * Button width, accepts
@@ -104,7 +104,7 @@ const g = {
104
104
  size: {
105
105
  type: String,
106
106
  default: "md",
107
- validator: (t) => Object.keys(l).includes(t)
107
+ validator: (t) => Object.keys(o).includes(t)
108
108
  },
109
109
  /**
110
110
  * Used to customize the label container
@@ -123,7 +123,7 @@ const g = {
123
123
  },
124
124
  /**
125
125
  * The color of the button.
126
- * @values default, muted, danger, positive, inverted
126
+ * @values default, unstyled, muted, danger, positive, inverted, unstyled
127
127
  */
128
128
  kind: {
129
129
  type: String,
@@ -171,7 +171,7 @@ const g = {
171
171
  ICON_POSITION_MODIFIERS: h,
172
172
  // whether the button is currently in focus
173
173
  isInFocus: !1,
174
- hasSlotContent: o
174
+ hasSlotContent: l
175
175
  };
176
176
  },
177
177
  computed: {
@@ -189,7 +189,7 @@ const g = {
189
189
  return this.assertiveOnFocus && this.isInFocus ? "assertive" : this.$attrs.ariaLive;
190
190
  },
191
191
  iconSize() {
192
- return _[this.size];
192
+ return p[this.size];
193
193
  }
194
194
  },
195
195
  watch: {
@@ -197,7 +197,7 @@ const g = {
197
197
  deep: !0,
198
198
  immediate: !0,
199
199
  handler() {
200
- process.env.NODE_ENV !== "production" && (this.circle && this.link && m("You cannot enable circle and link at the same time", this), this.isInvalidPropCombination(this.circle, this.kind, this.importance));
200
+ process.env.NODE_ENV !== "production" && (this.circle && this.link && y("You cannot enable circle and link at the same time", this), this.isInvalidPropCombination(this.circle, this.kind, this.importance));
201
201
  }
202
202
  }
203
203
  },
@@ -206,12 +206,12 @@ const g = {
206
206
  return this.link ? [
207
207
  "d-link",
208
208
  N(this.linkKind, this.linkInverted),
209
- l[this.size]
210
- ] : [
209
+ o[this.size]
210
+ ] : this.kind === "unstyled" ? ["d-btn--unstyled"] : [
211
211
  "d-btn",
212
212
  b[this.importance],
213
213
  I[this.kind],
214
- l[this.size],
214
+ o[this.size],
215
215
  {
216
216
  "d-btn--circle": this.circle,
217
217
  "d-btn--loading": this.loading,
@@ -222,16 +222,18 @@ const g = {
222
222
  ];
223
223
  },
224
224
  isInvalidPropCombination(t, r, e) {
225
- for (const i of S)
225
+ if (this.kind === "unstyled")
226
+ return !0;
227
+ for (const i of k)
226
228
  if (t === i.circle && r === i.kind && e === i.importance)
227
229
  return console.warn(i.message), !1;
228
230
  return !0;
229
231
  },
230
232
  shouldRenderIcon() {
231
- return o(this.$slots.icon) && !this.link;
233
+ return l(this.$slots.icon) && !this.link;
232
234
  },
233
235
  isIconOnly() {
234
- return this.shouldRenderIcon() && !o(this.$slots.default);
236
+ return this.shouldRenderIcon() && !l(this.$slots.default);
235
237
  },
236
238
  isVerticalIconLayout() {
237
239
  return !this.isIconOnly() && ["top", "bottom"].includes(this.iconPosition);
@@ -239,7 +241,7 @@ const g = {
239
241
  }
240
242
  }, B = ["type", "disabled", "aria-live", "aria-label"];
241
243
  function C(t, r, e, i, d, n) {
242
- return s(), a("button", p({
244
+ return s(), a("button", m({
243
245
  class: [
244
246
  "base-button__button",
245
247
  n.buttonClasses()
@@ -250,28 +252,34 @@ function C(t, r, e, i, d, n) {
250
252
  style: { width: e.width },
251
253
  "aria-live": n.computedAriaLive,
252
254
  "aria-label": e.loading ? "loading" : t.$attrs["aria-label"]
253
- }, y(n.buttonListeners, !0)), [
255
+ }, O(n.buttonListeners, !0)), [
254
256
  n.shouldRenderIcon() ? (s(), a("span", {
255
257
  key: 0,
256
258
  "data-qa": "dt-button-icon",
257
- class: c([
259
+ class: u([
258
260
  "base-button__icon",
259
- "d-btn__icon",
260
- d.ICON_POSITION_MODIFIERS[e.iconPosition]
261
+ {
262
+ "d-btn__icon": e.kind !== "unstyled",
263
+ [d.ICON_POSITION_MODIFIERS[e.iconPosition]]: e.kind !== "unstyled"
264
+ }
261
265
  ])
262
266
  }, [
263
- u(t.$slots, "icon", { iconSize: n.iconSize })
267
+ c(t.$slots, "icon", { iconSize: n.iconSize })
264
268
  ], 2)) : f("", !0),
265
269
  d.hasSlotContent(t.$slots.default) ? (s(), a("span", {
266
270
  key: 1,
267
271
  "data-qa": "dt-button-label",
268
- class: c(["d-btn__label", "base-button__label", e.labelClass])
272
+ class: u([
273
+ "base-button__label",
274
+ { "d-btn__label": e.kind !== "unstyled" },
275
+ e.labelClass
276
+ ])
269
277
  }, [
270
- u(t.$slots, "default")
278
+ c(t.$slots, "default")
271
279
  ], 2)) : f("", !0)
272
280
  ], 16, B);
273
281
  }
274
- const M = /* @__PURE__ */ k(g, [["render", C]]);
282
+ const M = /* @__PURE__ */ S(g, [["render", C]]);
275
283
  export {
276
284
  M as default
277
285
  };
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../../components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"[\n 'base-button__button',\n buttonClasses(),\n ]\"\n data-qa=\"dt-button\"\n :type=\"type\"\n :disabled=\"disabled\"\n :style=\"{ width: width }\"\n :aria-live=\"computedAriaLive\"\n :aria-label=\"loading ? 'loading' : $attrs['aria-label']\"\n v-on=\"buttonListeners\"\n >\n <!-- NOTE(cormac): This span is needed since we can't apply styles to slots. -->\n <span\n v-if=\"shouldRenderIcon()\"\n data-qa=\"dt-button-icon\"\n :class=\"[\n 'base-button__icon',\n 'd-btn__icon',\n ICON_POSITION_MODIFIERS[iconPosition],\n ]\"\n >\n <!-- @slot Button icon -->\n <slot\n name=\"icon\"\n :icon-size=\"iconSize\"\n />\n </span>\n <span\n v-if=\"hasSlotContent($slots.default)\"\n data-qa=\"dt-button-label\"\n :class=\"['d-btn__label', 'base-button__label', labelClass]\"\n >\n <!-- @slot Content within button -->\n <slot />\n </span>\n </button>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { hasSlotContent } from '@/common/utils';\n\nimport {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_ICON_SIZES,\n BUTTON_TYPES,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n} from './button_constants';\n\nimport { LINK_KIND_MODIFIERS, getLinkKindModifier } from '@/components/link';\n\n/**\n * A button is a UI element which allows users to take an action throughout the app.\n * It is important a button is identifiable, consistent, and communicates its actions clearly,\n * and is appropriately sized to its action.\n * @see https://dialtone.dialpad.com/components/button.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtButton',\n\n props: {\n /**\n * Whether the button is a circle or not.\n * @values true, false\n */\n circle: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The position of the icon slot within the button.\n * @values left, right, top, bottom\n */\n iconPosition: {\n type: String,\n default: 'left',\n validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position),\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 * Whether the button should be styled as a link or not.\n * @values true, false\n * @see DtLink\n */\n link: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the link and button if the button is styled as a link.\n * @values default, warning, danger, success, muted\n * @see DtLink\n */\n linkKind: {\n type: String,\n default: 'default',\n validator: (lk) => Object.keys(LINK_KIND_MODIFIERS).includes(lk),\n },\n\n /**\n * Determines whether the link should have inverted styling if the button is styled as a link.\n * @values true, false\n * @see DtLink\n */\n linkInverted: {\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\"> (Reference) </a>\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button type attribute\n * <a\n * class=\"d-link\"\n * href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type\"\n * target=\"_blank\"\n * >\n * (Reference)\n * </a>\n * @values button, submit, reset\n */\n type: {\n type: String,\n default: 'button',\n validator: (t) => BUTTON_TYPES.includes(t),\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 * 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 * 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 * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the button.\n * @values default, muted, danger, positive, 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 a screenreader reads live updates of\n * the button content to the user while the button\n * is in focus. default is to not.\n * @values true, false\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines whether the button should have active styling\n * default is false.\n * @values true, false\n */\n active: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native button focus in event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native button focus out event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n ],\n\n data () {\n return {\n ICON_POSITION_MODIFIERS,\n // whether the button is currently in focus\n isInFocus: false,\n hasSlotContent,\n };\n },\n\n computed: {\n\n buttonListeners () {\n return {\n focusin: (e) => {\n this.isInFocus = this.assertiveOnFocus;\n this.$emit('focusin', e);\n },\n\n focusout: (e) => {\n this.isInFocus = false;\n this.$emit('focusout', e);\n },\n };\n },\n\n computedAriaLive () {\n return this.assertiveOnFocus && this.isInFocus ? 'assertive' : this.$attrs.ariaLive;\n },\n\n iconSize () {\n return BUTTON_ICON_SIZES[this.size];\n },\n },\n\n watch: {\n $props: {\n deep: true,\n immediate: true,\n handler () {\n if (process.env.NODE_ENV === 'production') return;\n\n if (this.circle && this.link) {\n warn('You cannot enable circle and link at the same time', this);\n }\n\n this.isInvalidPropCombination(this.circle, this.kind, this.importance);\n },\n },\n },\n\n methods: {\n buttonClasses () {\n if (this.link) {\n return [\n 'd-link',\n getLinkKindModifier(this.linkKind, this.linkInverted),\n BUTTON_SIZE_MODIFIERS[this.size],\n ];\n }\n return [\n 'd-btn',\n BUTTON_IMPORTANCE_MODIFIERS[this.importance],\n BUTTON_KIND_MODIFIERS[this.kind],\n BUTTON_SIZE_MODIFIERS[this.size],\n {\n 'd-btn--circle': this.circle,\n 'd-btn--loading': this.loading,\n 'd-btn--icon-only': this.isIconOnly(),\n 'd-btn--vertical': this.isVerticalIconLayout(),\n 'd-btn--active': this.active,\n },\n ];\n },\n\n isInvalidPropCombination (circle, kind, importance) {\n for (const row of INVALID_COMBINATION) {\n if (circle === row.circle && kind === row.kind && importance === row.importance) {\n console.warn(row.message);\n return false;\n }\n }\n return true;\n },\n\n shouldRenderIcon () {\n return hasSlotContent(this.$slots.icon) && !this.link;\n },\n\n isIconOnly () {\n return this.shouldRenderIcon() && !hasSlotContent(this.$slots.default);\n },\n\n isVerticalIconLayout () {\n return !this.isIconOnly() && ['top', 'bottom'].includes(this.iconPosition);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","position","ICON_POSITION_MODIFIERS","i","BUTTON_IMPORTANCE_MODIFIERS","lk","LINK_KIND_MODIFIERS","BUTTON_TYPES","s","BUTTON_SIZE_MODIFIERS","k","BUTTON_KIND_MODIFIERS","hasSlotContent","e","BUTTON_ICON_SIZES","warn","getLinkKindModifier","circle","kind","importance","row","INVALID_COMBINATION","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","$options","$props","_ctx","_toHandlers","_normalizeClass","$data","_renderSlot","_createCommentVNode"],"mappings":"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"}
1
+ {"version":3,"file":"button.js","sources":["../../../components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"[\n 'base-button__button',\n buttonClasses(),\n ]\"\n data-qa=\"dt-button\"\n :type=\"type\"\n :disabled=\"disabled\"\n :style=\"{ width: width }\"\n :aria-live=\"computedAriaLive\"\n :aria-label=\"loading ? 'loading' : $attrs['aria-label']\"\n v-on=\"buttonListeners\"\n >\n <!-- NOTE(cormac): This span is needed since we can't apply styles to slots. -->\n <span\n v-if=\"shouldRenderIcon()\"\n data-qa=\"dt-button-icon\"\n :class=\"[\n 'base-button__icon',\n {\n 'd-btn__icon': kind !== 'unstyled',\n [ICON_POSITION_MODIFIERS[iconPosition]]: kind !== 'unstyled',\n },\n ]\"\n >\n <!-- @slot Button icon -->\n <slot\n name=\"icon\"\n :icon-size=\"iconSize\"\n />\n </span>\n <span\n v-if=\"hasSlotContent($slots.default)\"\n data-qa=\"dt-button-label\"\n :class=\"[\n 'base-button__label',\n { 'd-btn__label': kind !== 'unstyled' },\n labelClass,\n ]\"\n >\n <!-- @slot Content within button -->\n <slot />\n </span>\n </button>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { hasSlotContent } from '@/common/utils';\n\nimport {\n BUTTON_SIZE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_ICON_SIZES,\n BUTTON_TYPES,\n ICON_POSITION_MODIFIERS,\n INVALID_COMBINATION,\n} from './button_constants';\n\nimport { LINK_KIND_MODIFIERS, getLinkKindModifier } from '@/components/link';\n\n/**\n * A button is a UI element which allows users to take an action throughout the app.\n * It is important a button is identifiable, consistent, and communicates its actions clearly,\n * and is appropriately sized to its action.\n * @see https://dialtone.dialpad.com/components/button.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtButton',\n\n props: {\n /**\n * Whether the button is a circle or not.\n * @values true, false\n */\n circle: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The position of the icon slot within the button.\n * @values left, right, top, bottom\n */\n iconPosition: {\n type: String,\n default: 'left',\n validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position),\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 * Whether the button should be styled as a link or not.\n * @values true, false\n * @see DtLink\n */\n link: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the link and button if the button is styled as a link.\n * @values default, warning, danger, success, muted\n * @see DtLink\n */\n linkKind: {\n type: String,\n default: 'default',\n validator: (lk) => Object.keys(LINK_KIND_MODIFIERS).includes(lk),\n },\n\n /**\n * Determines whether the link should have inverted styling if the button is styled as a link.\n * @values true, false\n * @see DtLink\n */\n linkInverted: {\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\"> (Reference) </a>\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button type attribute\n * <a\n * class=\"d-link\"\n * href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type\"\n * target=\"_blank\"\n * >\n * (Reference)\n * </a>\n * @values button, submit, reset\n */\n type: {\n type: String,\n default: 'button',\n validator: (t) => BUTTON_TYPES.includes(t),\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 * 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 * 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 * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The color of the button.\n * @values default, unstyled, muted, danger, positive, inverted, unstyled\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 a screenreader reads live updates of\n * the button content to the user while the button\n * is in focus. default is to not.\n * @values true, false\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines whether the button should have active styling\n * default is false.\n * @values true, false\n */\n active: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native button focus in event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native button focus out event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n ],\n\n data () {\n return {\n ICON_POSITION_MODIFIERS,\n // whether the button is currently in focus\n isInFocus: false,\n hasSlotContent,\n };\n },\n\n computed: {\n\n buttonListeners () {\n return {\n focusin: (e) => {\n this.isInFocus = this.assertiveOnFocus;\n this.$emit('focusin', e);\n },\n\n focusout: (e) => {\n this.isInFocus = false;\n this.$emit('focusout', e);\n },\n };\n },\n\n computedAriaLive () {\n return this.assertiveOnFocus && this.isInFocus ? 'assertive' : this.$attrs.ariaLive;\n },\n\n iconSize () {\n return BUTTON_ICON_SIZES[this.size];\n },\n },\n\n watch: {\n $props: {\n deep: true,\n immediate: true,\n handler () {\n if (process.env.NODE_ENV === 'production') return;\n\n if (this.circle && this.link) {\n warn('You cannot enable circle and link at the same time', this);\n }\n\n this.isInvalidPropCombination(this.circle, this.kind, this.importance);\n },\n },\n },\n\n methods: {\n buttonClasses () {\n if (this.link) {\n return [\n 'd-link',\n getLinkKindModifier(this.linkKind, this.linkInverted),\n BUTTON_SIZE_MODIFIERS[this.size],\n ];\n }\n if (this.kind === 'unstyled') {\n return ['d-btn--unstyled'];\n }\n return [\n 'd-btn',\n BUTTON_IMPORTANCE_MODIFIERS[this.importance],\n BUTTON_KIND_MODIFIERS[this.kind],\n BUTTON_SIZE_MODIFIERS[this.size],\n {\n 'd-btn--circle': this.circle,\n 'd-btn--loading': this.loading,\n 'd-btn--icon-only': this.isIconOnly(),\n 'd-btn--vertical': this.isVerticalIconLayout(),\n 'd-btn--active': this.active,\n },\n ];\n },\n\n isInvalidPropCombination (circle, kind, importance) {\n // Skip validation if unstyled is true\n if (this.kind === 'unstyled') {\n return true;\n }\n\n for (const row of INVALID_COMBINATION) {\n if (circle === row.circle && kind === row.kind && importance === row.importance) {\n console.warn(row.message);\n return false;\n }\n }\n return true;\n },\n\n shouldRenderIcon () {\n return hasSlotContent(this.$slots.icon) && !this.link;\n },\n\n isIconOnly () {\n return this.shouldRenderIcon() && !hasSlotContent(this.$slots.default);\n },\n\n isVerticalIconLayout () {\n return !this.isIconOnly() && ['top', 'bottom'].includes(this.iconPosition);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","position","ICON_POSITION_MODIFIERS","i","BUTTON_IMPORTANCE_MODIFIERS","lk","LINK_KIND_MODIFIERS","BUTTON_TYPES","s","BUTTON_SIZE_MODIFIERS","k","BUTTON_KIND_MODIFIERS","hasSlotContent","e","BUTTON_ICON_SIZES","warn","getLinkKindModifier","circle","kind","importance","row","INVALID_COMBINATION","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","$options","$props","_ctx","_toHandlers","_normalizeClass","$data","_renderSlot","_createCommentVNode"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("./editor-constants.cjs"),B=require("../../common/utils/index.cjs"),l=require("@dialpad/dialtone-icons/vue3"),e=require("vue"),x=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),L=require("../rich-text-editor/rich-text-editor.cjs"),b=require("../button/button.cjs"),A=require("../popover/popover.cjs"),y=require("../stack/stack.cjs"),T=require("../input/input.cjs"),_=require("../tooltip/tooltip.cjs"),I=require("../rich-text-editor/rich-text-editor-constants.cjs"),D={compatConfig:{MODE:3},name:"DtRecipeEditor",components:{DtRichTextEditor:L.default,DtButton:b.default,DtPopover:A.default,DtStack:y.default,DtInput:T.default,DtTooltip:_.default,DtIconLightningBolt:l.DtIconLightningBolt,DtIconBold:l.DtIconBold,DtIconItalic:l.DtIconItalic,DtIconUnderline:l.DtIconUnderline,DtIconStrikethrough:l.DtIconStrikethrough,DtIconListBullet:l.DtIconListBullet,DtIconListOrdered:l.DtIconListOrdered,DtIconAlignLeft:l.DtIconAlignLeft,DtIconAlignCenter:l.DtIconAlignCenter,DtIconAlignRight:l.DtIconAlignRight,DtIconAlignJustify:l.DtIconAlignJustify,DtIconQuote:l.DtIconQuote,DtIconCodeBlock:l.DtIconCodeBlock,DtIconLink2:l.DtIconLink2,DtIconImage:l.DtIconImage},mixins:[],inheritAttrs:!1,props:{modelValue:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},inputAriaLabel:{type:String,required:!0,default:""},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(t){return typeof t=="string"?I.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(t):!0}},placeholder:{type:String,default:""},maxHeight:{type:String,default:"unset"},confirmSetLinkButton:{type:Object,default:()=>({label:"Confirm",ariaLabel:"Confirm set link"})},removeLinkButton:{type:Object,default:()=>({label:"Remove",ariaLabel:"Remove link"})},cancelSetLinkButton:{type:Object,default:()=>({label:"Cancel",ariaLabel:"Cancel set link"})},setLinkPlaceholder:{type:String,default:""},showBoldButton:{type:Boolean,default:!0},showItalicsButton:{type:Boolean,default:!0},showUnderlineButton:{type:Boolean,default:!0},showStrikeButton:{type:Boolean,default:!0},showListItemsButton:{type:Boolean,default:!0},showOrderedListButton:{type:Boolean,default:!0},showAlignLeftButton:{type:Boolean,default:!0},showAlignCenterButton:{type:Boolean,default:!0},showAlignRightButton:{type:Boolean,default:!0},showAlignJustifyButton:{type:Boolean,default:!0},showQuoteButton:{type:Boolean,default:!0},showCodeBlockButton:{type:Boolean,default:!0},showQuickRepliesButton:{type:Boolean,default:!0},showInlineImageButton:{type:Boolean,default:!1},showAddLink:{type:Object,default:()=>({showAddLinkButton:!0,setLinkTitle:"Add a link",setLinkInputAriaLabel:"Input field to add link"})},useDivTags:{type:Boolean,default:!1}},emits:["focus","blur","input","update:modelValue","quick-replies-click","inline-image-click","text-input"],data(){return{internalInputValue:this.modelValue,hasFocus:!1,linkOptions:{class:"d-recipe-editor__link"},showLinkInput:!1,linkInput:"",currentButtonRefIndex:0,buttonRefMap:e.ref({})}},computed:{inputLength(){return this.internalInputValue.length},htmlOutputFormat(){return I.RICH_TEXT_EDITOR_OUTPUT_FORMATS[2]},showingTextFormatButtons(){return this.showBoldButton||this.showItalicsButton||this.showStrikeButton||this.showUnderlineButton},showingAlignmentButtons(){return this.showAlignLeftButton||this.showAlignCenterButton||this.showAlignRightButton||this.showAlignJustifyButton},showingListButtons(){return this.showListItemsButton||this.showOrderedListButton},orderedRefs(){const t=this.buttonGroups.reduce((function(i,n){return n.buttonGroup.forEach(r=>{i.push(this.getButtonRef(n.key,r.selector))},this),i}).bind(this),[]);return t.push(this.getButtonRef("custom","link")),t},buttonGroups(){const t=this.individualButtons.map(i=>({key:i.selector,buttonGroup:[i]}));return[{key:"new",buttonGroup:this.newButtons},{key:"format",buttonGroup:this.textFormatButtons},{key:"alignment",buttonGroup:this.alignmentButtons},{key:"list",buttonGroup:this.listButtons},...t].filter(i=>i.buttonGroup.length>0)},newButtons(){return[{showBtn:this.showQuickRepliesButton,label:"Quick reply",selector:"quickReplies",icon:l.DtIconLightningBolt,dataQA:"dt-recipe-editor-quick-replies-btn",tooltipMessage:"Quick Reply",onClick:this.onQuickRepliesClick}].filter(t=>t.showBtn)},textFormatButtons(){return[{showBtn:this.showBoldButton,selector:"bold",icon:l.DtIconBold,dataQA:"dt-recipe-editor-bold-btn",tooltipMessage:"Bold",onClick:this.onBoldTextToggle},{showBtn:this.showItalicsButton,selector:"italic",icon:l.DtIconItalic,dataQA:"dt-recipe-editor-italics-btn",tooltipMessage:"Italics",onClick:this.onItalicTextToggle},{showBtn:this.showUnderlineButton,selector:"underline",icon:l.DtIconUnderline,dataQA:"dt-recipe-editor-underline-btn",tooltipMessage:"Underline",onClick:this.onUnderlineTextToggle},{showBtn:this.showStrikeButton,selector:"strike",icon:l.DtIconStrikethrough,dataQA:"dt-recipe-editor-strike-btn",tooltipMessage:"Strike",onClick:this.onStrikethroughTextToggle}].filter(t=>t.showBtn)},alignmentButtons(){return[{showBtn:this.showAlignLeftButton,selector:{textAlign:"left"},icon:l.DtIconAlignLeft,dataQA:"dt-recipe-editor-align-left-btn",tooltipMessage:"Align Left",onClick:()=>this.onTextAlign("left")},{showBtn:this.showAlignCenterButton,selector:{textAlign:"center"},icon:l.DtIconAlignCenter,dataQA:"dt-recipe-editor-align-center-btn",tooltipMessage:"Align Center",onClick:()=>this.onTextAlign("center")},{showBtn:this.showAlignRightButton,selector:{textAlign:"right"},icon:l.DtIconAlignRight,dataQA:"dt-recipe-editor-align-right-btn",tooltipMessage:"Align Right",onClick:()=>this.onTextAlign("right")},{showBtn:this.showAlignJustifyButton,selector:{textAlign:"justify"},icon:l.DtIconAlignJustify,dataQA:"dt-recipe-editor-align-justify-btn",tooltipMessage:"Align Justify",onClick:()=>this.onTextAlign("justify")}].filter(t=>t.showBtn)},listButtons(){return[{showBtn:this.showListItemsButton,selector:"bulletList",icon:l.DtIconListBullet,dataQA:"dt-recipe-editor-list-items-btn",tooltipMessage:"Bullet List",onClick:this.onBulletListToggle},{showBtn:this.showOrderedListButton,selector:"orderedList",icon:l.DtIconListOrdered,dataQA:"dt-recipe-editor-ordered-list-items-btn",tooltipMessage:"Ordered List",onClick:this.onOrderedListToggle}].filter(t=>t.showBtn)},individualButtons(){return[{showBtn:this.showQuoteButton,selector:"blockquote",icon:l.DtIconQuote,dataQA:"dt-recipe-editor-blockquote-btn",tooltipMessage:"Quote",onClick:this.onBlockquoteToggle},{showBtn:this.showCodeBlockButton,selector:"codeBlock",icon:l.DtIconCodeBlock,dataQA:"dt-recipe-editor-code-block-btn",tooltipMessage:"Code",onClick:this.onCodeBlockToggle},{showBtn:this.showInlineImageButton,selector:"image",icon:l.DtIconImage,dataQA:"dt-recipe-editor-inline-image-btn",tooltipMessage:"Image",onClick:this.onInsertInlineImageClick}].filter(t=>t.showBtn)},linkButton(){return{showBtn:this.showAddLink.showAddLinkButton,selector:"link",icon:l.DtIconLink2,dataQA:"dt-recipe-editor-add-link-btn",tooltipMessage:"Link",onClick:this.openLinkInput}}},watch:{modelValue(t){this.internalInputValue=t}},methods:{removeClassStyleAttrs:B.removeClassStyleAttrs,addClassStyleAttrs:B.addClassStyleAttrs,onInputFocus(t){t==null||t.stopPropagation()},removeLink(){var t,i,n,r,s;(s=(r=(n=(i=(t=this.$refs.richTextEditor)==null?void 0:t.editor)==null?void 0:i.chain())==null?void 0:n.focus())==null?void 0:r.unsetLink())==null||s.run(),this.closeLinkInput()},setLink(t){var s,o,c;const i=(s=this.$refs.richTextEditor)==null?void 0:s.editor;if(t==null||t.preventDefault(),t==null||t.stopPropagation(),!this.linkInput){this.removeLink();return}f.EDITOR_SUPPORTED_LINK_PROTOCOLS.find(h=>h.test(this.linkInput))||(this.linkInput=`${f.EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`);const r=(c=(o=i==null?void 0:i.view)==null?void 0:o.state)==null?void 0:c.selection;r.anchor===r.head?i.chain().focus().insertContentAt(r.anchor,`<a class="${this.linkOptions.class}" href=${this.linkInput}>${this.linkInput}</a>`).run():i.chain().focus().extendMarkRange("link").setLink({href:this.linkInput,class:this.linkOptions.class}).run(),this.closeLinkInput()},openLinkInput(){this.showLinkInput=!0},updateInput(t){var i,n,r;if(!t)return this.closeLinkInput();this.linkInput=(r=(n=(i=this.$refs.richTextEditor)==null?void 0:i.editor)==null?void 0:n.getAttributes("link"))==null?void 0:r.href},closeLinkInput(){var t;this.showLinkInput=!1,this.linkInput="",(t=this.$refs.richTextEditor.editor)==null||t.chain().focus()},onBoldTextToggle(){var t,i;(i=(t=this.$refs.richTextEditor)==null?void 0:t.editor)==null||i.chain().focus().toggleBold().run()},onItalicTextToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleItalic().run()},onUnderlineTextToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleUnderline().run()},onStrikethroughTextToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleStrike().run()},onTextAlign(t){var i,n,r,s;if((n=(i=this.$refs.richTextEditor)==null?void 0:i.editor)!=null&&n.isActive({textAlign:t}))return(r=this.$refs.richTextEditor)==null?void 0:r.editor.chain().focus().unsetTextAlign().run();(s=this.$refs.richTextEditor)==null||s.editor.chain().focus().setTextAlign(t).run()},onBulletListToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleBulletList().run()},onOrderedListToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleOrderedList().run()},onCodeBlockToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleCodeBlock().run()},onQuickRepliesClick(){this.$emit("quick-replies-click")},onInsertInlineImageClick(){this.$emit("inline-image-click")},insertInlineImage(t){var i;(i=this.$refs.richTextEditor)==null||i.editor.chain().focus().setImage({src:t}).run()},insertInMessageBody(t){var i;(i=this.$refs.richTextEditor)==null||i.editor.chain().focus().insertContent(t).run()},setCursorPosition(t=null){var i;(i=this.$refs.richTextEditor)==null||i.editor.chain().focus(t).run()},onBlockquoteToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleBlockquote().run()},onTextInput(t){this.$emit("text-input",t)},onFocus(t){this.hasFocus=!0,this.$emit("focus",t)},onBlur(t){this.hasFocus=!1,this.$emit("blur",t)},onInput(t){this.$emit("input",t),this.$emit("update:modelValue",t)},getButtonKey(t,i){return`${t}-${JSON.stringify(i)}`},getButtonRef(t,i){return`${this.getButtonKey(t,i)}-ref`},canFocus(t){return t===this.orderedRefs[this.currentButtonRefIndex]},shiftActionBarFocusRight(){this.shiftButtonRefIndex(1)},shiftActionBarFocusLeft(){this.shiftButtonRefIndex(-1)},shiftButtonRefIndex(t){const i=this.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]],n=(this.currentButtonRefIndex+t)%this.orderedRefs.length;this.currentButtonRefIndex=n>=0?n:this.orderedRefs.length+n;const r=this.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]];i.$el.blur(),r.$el.focus()}}},R=e.createElementVNode("div",{class:"d-recipe-editor__button-group-divider"},null,-1),E={class:"d-recipe-editor__popover-content"},v={key:0};function S(t,i,n,r,s,o){const c=e.resolveComponent("dt-button"),h=e.resolveComponent("dt-tooltip"),p=e.resolveComponent("dt-stack"),m=e.resolveComponent("dt-input"),w=e.resolveComponent("dt-popover"),C=e.resolveComponent("dt-rich-text-editor");return e.openBlock(),e.createElementBlock("div",e.mergeProps({class:"d-recipe-editor"},o.addClassStyleAttrs(t.$attrs),{"data-qa":"dt-recipe-editor",role:"presentation",onClick:i[4]||(i[4]=u=>t.$refs.richTextEditor.focusEditor())}),[e.createVNode(p,{class:"d-recipe-editor__top-bar",direction:"row",gap:"450"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.buttonGroups,u=>(e.openBlock(),e.createBlock(p,{key:u.key,direction:"row",gap:"300"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.buttonGroup,a=>(e.openBlock(),e.createBlock(h,{key:o.getButtonKey(u.key,a.selector),message:a.tooltipMessage,placement:"top"},{anchor:e.withCtx(()=>{var d,g;return[e.createVNode(c,{ref_for:!0,ref:k=>{s.buttonRefMap[o.getButtonRef(u.key,a.selector)]=k},active:(g=(d=t.$refs.richTextEditor)==null?void 0:d.editor)==null?void 0:g.isActive(a.selector),"aria-label":a.tooltipMessage,"data-qa":a.dataQA,tabindex:o.canFocus(o.getButtonRef(u.key,a.selector))?0:-1,importance:"clear",kind:"muted",size:"xs",onClick:k=>a.onClick(),onKeydown:[e.withKeys(e.withModifiers(o.shiftActionBarFocusRight,["stop"]),["right"]),e.withKeys(e.withModifiers(o.shiftActionBarFocusLeft,["stop"]),["left"])]},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.icon),{size:"200"}))]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(a==null?void 0:a.label),1)]),_:2},1032,["active","aria-label","data-qa","tabindex","onClick","onKeydown"])]}),_:2},1032,["message"]))),128)),R]),_:2},1024))),128)),o.linkButton.showBtn?(e.openBlock(),e.createBlock(p,{key:0,direction:"row",gap:"300"},{default:e.withCtx(()=>[e.createVNode(w,{open:s.showLinkInput,"show-close-button":!1,"visually-hidden-close":!0,"visually-hidden-close-label":"Close link input popover","data-qa":"dt-recipe-editor-link-input-popover",padding:"none",placement:"bottom-start",onClick:[o.onInputFocus,e.withModifiers(o.onInputFocus,["stop"])],onOpened:o.updateInput},{anchor:e.withCtx(()=>[(e.openBlock(),e.createBlock(h,{key:o.linkButton.key,message:o.linkButton.tooltipMessage,placement:"top"},{anchor:e.withCtx(()=>{var u,a;return[e.createVNode(c,{ref:d=>{s.buttonRefMap[o.getButtonRef("custom","link")]=d},active:(a=(u=t.$refs.richTextEditor)==null?void 0:u.editor)==null?void 0:a.isActive(o.linkButton.selector),"aria-label":o.linkButton.tooltipMessage,"data-qa":o.linkButton.dataQA,tabindex:o.canFocus(o.getButtonRef("custom","link"))?0:-1,importance:"clear",kind:"muted",size:"xs",onClick:i[0]||(i[0]=d=>o.linkButton.onClick()),onKeydown:[e.withKeys(e.withModifiers(o.shiftActionBarFocusRight,["stop"]),["right"]),e.withKeys(e.withModifiers(o.shiftActionBarFocusLeft,["stop"]),["left"])]},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.linkButton.icon),{size:"200"}))]),_:1},8,["active","aria-label","data-qa","tabindex","onKeydown"])]}),_:1},8,["message"]))]),content:e.withCtx(()=>[e.createElementVNode("div",E,[n.showAddLink.setLinkTitle.length>0?(e.openBlock(),e.createElementBlock("span",v,e.toDisplayString(n.showAddLink.setLinkTitle),1)):e.createCommentVNode("",!0),e.createVNode(m,{modelValue:s.linkInput,"onUpdate:modelValue":i[1]||(i[1]=u=>s.linkInput=u),"input-aria-label":n.showAddLink.setLinkInputAriaLabel,placeholder:n.setLinkPlaceholder,"data-qa":"dt-recipe-editor-link-input","input-wrapper-class":"d-recipe-editor-link__input-wrapper",onClick:[o.onInputFocus,e.withModifiers(o.onInputFocus,["stop"])],onFocus:o.onInputFocus,onKeydown:e.withKeys(o.setLink,["enter"])},null,8,["modelValue","input-aria-label","placeholder","onClick","onFocus","onKeydown"])])]),footerContent:e.withCtx(()=>[e.createVNode(p,{direction:"row",gap:"300",class:"d-recipe-editor__popover-footer"},{default:e.withCtx(()=>[e.createVNode(c,{"aria-label":n.removeLinkButton.ariaLabel,"data-qa":"dt-recipe-editor-remove-link-btn",importance:"clear",kind:"muted",size:"sm",onClick:o.removeLink},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.removeLinkButton.label),1)]),_:1},8,["aria-label","onClick"]),e.createVNode(c,{"aria-label":n.cancelSetLinkButton.ariaLabel,"data-qa":"dt-recipe-editor-set-link-cancel-btn",importance:"clear",kind:"muted",size:"sm",onClick:o.closeLinkInput},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.cancelSetLinkButton.label),1)]),_:1},8,["aria-label","onClick"]),e.createVNode(c,{"aria-label":n.confirmSetLinkButton.ariaLabel,"data-qa":"dt-recipe-editor-set-link-confirm-btn",size:"sm",onClick:o.setLink},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.confirmSetLinkButton.label),1)]),_:1},8,["aria-label","onClick"])]),_:1})]),_:1},8,["open","onClick","onOpened"])]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",{style:e.normalizeStyle({"max-height":n.maxHeight}),class:"d-recipe-editor__content"},[e.createVNode(C,e.mergeProps({ref:"richTextEditor",modelValue:s.internalInputValue,"onUpdate:modelValue":i[2]||(i[2]=u=>s.internalInputValue=u),"allow-inline-images":!0,"allow-line-breaks":!0,"hide-link-bubble-menu":!0,"auto-focus":n.autoFocus,editable:n.editable,"input-aria-label":n.inputAriaLabel,"input-class":`d-recipe-editor__content-input ${n.inputClass}`,link:!0,"output-format":o.htmlOutputFormat,placeholder:n.placeholder,"use-div-tags":n.useDivTags,"data-qa":"dt-rich-text-editor"},o.removeClassStyleAttrs(t.$attrs),{onTextInput:o.onTextInput,onBlur:o.onBlur,onFocus:o.onFocus,onInput:i[3]||(i[3]=u=>o.onInput(u))}),null,16,["modelValue","auto-focus","editable","input-aria-label","input-class","output-format","placeholder","use-div-tags","onTextInput","onBlur","onFocus"])],4)],16)}const O=x._(D,[["render",S]]);exports.default=O;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("./editor-constants.cjs"),B=require("../../common/utils/index.cjs"),l=require("@dialpad/dialtone-icons/vue3"),e=require("vue"),x=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),L=require("../rich-text-editor/rich-text-editor.cjs"),b=require("../button/button.cjs"),y=require("../popover/popover.cjs"),A=require("../stack/stack.cjs"),T=require("../input/input.cjs"),_=require("../tooltip/tooltip.cjs"),I=require("../rich-text-editor/rich-text-editor-constants.cjs"),D={compatConfig:{MODE:3},name:"DtRecipeEditor",components:{DtRichTextEditor:L.default,DtButton:b.default,DtPopover:y.default,DtStack:A.default,DtInput:T.default,DtTooltip:_.default,DtIconQuickReply:l.DtIconQuickReply,DtIconBold:l.DtIconBold,DtIconItalic:l.DtIconItalic,DtIconUnderline:l.DtIconUnderline,DtIconStrikethrough:l.DtIconStrikethrough,DtIconListBullet:l.DtIconListBullet,DtIconListOrdered:l.DtIconListOrdered,DtIconAlignLeft:l.DtIconAlignLeft,DtIconAlignCenter:l.DtIconAlignCenter,DtIconAlignRight:l.DtIconAlignRight,DtIconAlignJustify:l.DtIconAlignJustify,DtIconQuote:l.DtIconQuote,DtIconCodeBlock:l.DtIconCodeBlock,DtIconLink2:l.DtIconLink2,DtIconImage:l.DtIconImage},mixins:[],inheritAttrs:!1,props:{modelValue:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},inputAriaLabel:{type:String,required:!0,default:""},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(t){return typeof t=="string"?I.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(t):!0}},placeholder:{type:String,default:""},maxHeight:{type:String,default:"unset"},confirmSetLinkButton:{type:Object,default:()=>({label:"Confirm",ariaLabel:"Confirm set link"})},removeLinkButton:{type:Object,default:()=>({label:"Remove",ariaLabel:"Remove link"})},cancelSetLinkButton:{type:Object,default:()=>({label:"Cancel",ariaLabel:"Cancel set link"})},setLinkPlaceholder:{type:String,default:""},showBoldButton:{type:Boolean,default:!0},showItalicsButton:{type:Boolean,default:!0},showUnderlineButton:{type:Boolean,default:!0},showStrikeButton:{type:Boolean,default:!0},showListItemsButton:{type:Boolean,default:!0},showOrderedListButton:{type:Boolean,default:!0},showAlignLeftButton:{type:Boolean,default:!0},showAlignCenterButton:{type:Boolean,default:!0},showAlignRightButton:{type:Boolean,default:!0},showAlignJustifyButton:{type:Boolean,default:!0},showQuoteButton:{type:Boolean,default:!0},showCodeBlockButton:{type:Boolean,default:!0},showQuickRepliesButton:{type:Boolean,default:!0},showInlineImageButton:{type:Boolean,default:!1},showAddLink:{type:Object,default:()=>({showAddLinkButton:!0,setLinkTitle:"Add a link",setLinkInputAriaLabel:"Input field to add link"})},useDivTags:{type:Boolean,default:!1}},emits:["focus","blur","input","update:modelValue","quick-replies-click","inline-image-click","text-input"],data(){return{internalInputValue:this.modelValue,hasFocus:!1,linkOptions:{class:"d-recipe-editor__link"},showLinkInput:!1,linkInput:"",currentButtonRefIndex:0,buttonRefMap:e.ref({})}},computed:{inputLength(){return this.internalInputValue.length},htmlOutputFormat(){return I.RICH_TEXT_EDITOR_OUTPUT_FORMATS[2]},showingTextFormatButtons(){return this.showBoldButton||this.showItalicsButton||this.showStrikeButton||this.showUnderlineButton},showingAlignmentButtons(){return this.showAlignLeftButton||this.showAlignCenterButton||this.showAlignRightButton||this.showAlignJustifyButton},showingListButtons(){return this.showListItemsButton||this.showOrderedListButton},orderedRefs(){const t=this.buttonGroups.reduce((function(i,n){return n.buttonGroup.forEach(r=>{i.push(this.getButtonRef(n.key,r.selector))},this),i}).bind(this),[]);return t.push(this.getButtonRef("custom","link")),t},buttonGroups(){const t=this.individualButtons.map(i=>({key:i.selector,buttonGroup:[i]}));return[{key:"new",buttonGroup:this.newButtons},{key:"format",buttonGroup:this.textFormatButtons},{key:"alignment",buttonGroup:this.alignmentButtons},{key:"list",buttonGroup:this.listButtons},...t].filter(i=>i.buttonGroup.length>0)},newButtons(){return[{showBtn:this.showQuickRepliesButton,label:"Quick reply",selector:"quickReplies",icon:l.DtIconQuickReply,dataQA:"dt-recipe-editor-quick-replies-btn",tooltipMessage:"Quick Reply",onClick:this.onQuickRepliesClick}].filter(t=>t.showBtn)},textFormatButtons(){return[{showBtn:this.showBoldButton,selector:"bold",icon:l.DtIconBold,dataQA:"dt-recipe-editor-bold-btn",tooltipMessage:"Bold",onClick:this.onBoldTextToggle},{showBtn:this.showItalicsButton,selector:"italic",icon:l.DtIconItalic,dataQA:"dt-recipe-editor-italics-btn",tooltipMessage:"Italics",onClick:this.onItalicTextToggle},{showBtn:this.showUnderlineButton,selector:"underline",icon:l.DtIconUnderline,dataQA:"dt-recipe-editor-underline-btn",tooltipMessage:"Underline",onClick:this.onUnderlineTextToggle},{showBtn:this.showStrikeButton,selector:"strike",icon:l.DtIconStrikethrough,dataQA:"dt-recipe-editor-strike-btn",tooltipMessage:"Strike",onClick:this.onStrikethroughTextToggle}].filter(t=>t.showBtn)},alignmentButtons(){return[{showBtn:this.showAlignLeftButton,selector:{textAlign:"left"},icon:l.DtIconAlignLeft,dataQA:"dt-recipe-editor-align-left-btn",tooltipMessage:"Align Left",onClick:()=>this.onTextAlign("left")},{showBtn:this.showAlignCenterButton,selector:{textAlign:"center"},icon:l.DtIconAlignCenter,dataQA:"dt-recipe-editor-align-center-btn",tooltipMessage:"Align Center",onClick:()=>this.onTextAlign("center")},{showBtn:this.showAlignRightButton,selector:{textAlign:"right"},icon:l.DtIconAlignRight,dataQA:"dt-recipe-editor-align-right-btn",tooltipMessage:"Align Right",onClick:()=>this.onTextAlign("right")},{showBtn:this.showAlignJustifyButton,selector:{textAlign:"justify"},icon:l.DtIconAlignJustify,dataQA:"dt-recipe-editor-align-justify-btn",tooltipMessage:"Align Justify",onClick:()=>this.onTextAlign("justify")}].filter(t=>t.showBtn)},listButtons(){return[{showBtn:this.showListItemsButton,selector:"bulletList",icon:l.DtIconListBullet,dataQA:"dt-recipe-editor-list-items-btn",tooltipMessage:"Bullet List",onClick:this.onBulletListToggle},{showBtn:this.showOrderedListButton,selector:"orderedList",icon:l.DtIconListOrdered,dataQA:"dt-recipe-editor-ordered-list-items-btn",tooltipMessage:"Ordered List",onClick:this.onOrderedListToggle}].filter(t=>t.showBtn)},individualButtons(){return[{showBtn:this.showQuoteButton,selector:"blockquote",icon:l.DtIconQuote,dataQA:"dt-recipe-editor-blockquote-btn",tooltipMessage:"Quote",onClick:this.onBlockquoteToggle},{showBtn:this.showCodeBlockButton,selector:"codeBlock",icon:l.DtIconCodeBlock,dataQA:"dt-recipe-editor-code-block-btn",tooltipMessage:"Code",onClick:this.onCodeBlockToggle},{showBtn:this.showInlineImageButton,selector:"image",icon:l.DtIconImage,dataQA:"dt-recipe-editor-inline-image-btn",tooltipMessage:"Image",onClick:this.onInsertInlineImageClick}].filter(t=>t.showBtn)},linkButton(){return{showBtn:this.showAddLink.showAddLinkButton,selector:"link",icon:l.DtIconLink2,dataQA:"dt-recipe-editor-add-link-btn",tooltipMessage:"Link",onClick:this.openLinkInput}}},watch:{modelValue(t){this.internalInputValue=t}},methods:{removeClassStyleAttrs:B.removeClassStyleAttrs,addClassStyleAttrs:B.addClassStyleAttrs,onInputFocus(t){t==null||t.stopPropagation()},removeLink(){var t,i,n,r,s;(s=(r=(n=(i=(t=this.$refs.richTextEditor)==null?void 0:t.editor)==null?void 0:i.chain())==null?void 0:n.focus())==null?void 0:r.unsetLink())==null||s.run(),this.closeLinkInput()},setLink(t){var s,o,a;const i=(s=this.$refs.richTextEditor)==null?void 0:s.editor;if(t==null||t.preventDefault(),t==null||t.stopPropagation(),!this.linkInput){this.removeLink();return}g.EDITOR_SUPPORTED_LINK_PROTOCOLS.find(h=>h.test(this.linkInput))||(this.linkInput=`${g.EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`);const r=(a=(o=i==null?void 0:i.view)==null?void 0:o.state)==null?void 0:a.selection;r.anchor===r.head?i.chain().focus().insertContentAt(r.anchor,`<a class="${this.linkOptions.class}" href=${this.linkInput}>${this.linkInput}</a>`).run():i.chain().focus().extendMarkRange("link").setLink({href:this.linkInput,class:this.linkOptions.class}).run(),this.closeLinkInput()},openLinkInput(){this.showLinkInput=!0},updateInput(t){var i,n,r;if(!t)return this.closeLinkInput();this.linkInput=(r=(n=(i=this.$refs.richTextEditor)==null?void 0:i.editor)==null?void 0:n.getAttributes("link"))==null?void 0:r.href},closeLinkInput(){var t;this.showLinkInput=!1,this.linkInput="",(t=this.$refs.richTextEditor.editor)==null||t.chain().focus()},onBoldTextToggle(){var t,i;(i=(t=this.$refs.richTextEditor)==null?void 0:t.editor)==null||i.chain().focus().toggleBold().run()},onItalicTextToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleItalic().run()},onUnderlineTextToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleUnderline().run()},onStrikethroughTextToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleStrike().run()},onTextAlign(t){var i,n,r,s;if((n=(i=this.$refs.richTextEditor)==null?void 0:i.editor)!=null&&n.isActive({textAlign:t}))return(r=this.$refs.richTextEditor)==null?void 0:r.editor.chain().focus().unsetTextAlign().run();(s=this.$refs.richTextEditor)==null||s.editor.chain().focus().setTextAlign(t).run()},onBulletListToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleBulletList().run()},onOrderedListToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleOrderedList().run()},onCodeBlockToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleCodeBlock().run()},onQuickRepliesClick(){this.$emit("quick-replies-click")},onInsertInlineImageClick(){this.$emit("inline-image-click")},insertInlineImage(t){var i;(i=this.$refs.richTextEditor)==null||i.editor.chain().focus().setImage({src:t}).run()},insertInMessageBody(t){var i;(i=this.$refs.richTextEditor)==null||i.editor.chain().focus().insertContent(t).run()},setCursorPosition(t=null){var i;(i=this.$refs.richTextEditor)==null||i.editor.chain().focus(t).run()},onBlockquoteToggle(){var t;(t=this.$refs.richTextEditor)==null||t.editor.chain().focus().toggleBlockquote().run()},onTextInput(t){this.$emit("text-input",t)},onFocus(t){this.hasFocus=!0,this.$emit("focus",t)},onBlur(t){this.hasFocus=!1,this.$emit("blur",t)},onInput(t){this.$emit("input",t),this.$emit("update:modelValue",t)},getButtonKey(t,i){return`${t}-${JSON.stringify(i)}`},getButtonRef(t,i){return`${this.getButtonKey(t,i)}-ref`},canFocus(t){return t===this.orderedRefs[this.currentButtonRefIndex]},shiftActionBarFocusRight(){this.shiftButtonRefIndex(1)},shiftActionBarFocusLeft(){this.shiftButtonRefIndex(-1)},shiftButtonRefIndex(t){const i=this.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]],n=(this.currentButtonRefIndex+t)%this.orderedRefs.length;this.currentButtonRefIndex=n>=0?n:this.orderedRefs.length+n;const r=this.buttonRefMap[this.orderedRefs[this.currentButtonRefIndex]];i.$el.blur(),r.$el.focus()}}},R=e.createElementVNode("div",{class:"d-recipe-editor__button-group-divider"},null,-1),E={class:"d-recipe-editor__popover-content"},v={key:0};function S(t,i,n,r,s,o){const a=e.resolveComponent("dt-button"),h=e.resolveComponent("dt-tooltip"),p=e.resolveComponent("dt-stack"),m=e.resolveComponent("dt-input"),w=e.resolveComponent("dt-popover"),C=e.resolveComponent("dt-rich-text-editor");return e.openBlock(),e.createElementBlock("div",e.mergeProps({class:"d-recipe-editor"},o.addClassStyleAttrs(t.$attrs),{"data-qa":"dt-recipe-editor",role:"presentation",onClick:i[4]||(i[4]=u=>t.$refs.richTextEditor.focusEditor())}),[e.createVNode(p,{class:"d-recipe-editor__top-bar",direction:"row",gap:"450"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.buttonGroups,u=>(e.openBlock(),e.createBlock(p,{key:u.key,direction:"row",gap:"300"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.buttonGroup,c=>(e.openBlock(),e.createBlock(h,{key:o.getButtonKey(u.key,c.selector),message:c.tooltipMessage,placement:"top"},{anchor:e.withCtx(()=>{var d,k;return[e.createVNode(a,{ref_for:!0,ref:f=>{s.buttonRefMap[o.getButtonRef(u.key,c.selector)]=f},active:(k=(d=t.$refs.richTextEditor)==null?void 0:d.editor)==null?void 0:k.isActive(c.selector),"aria-label":c.tooltipMessage,"data-qa":c.dataQA,tabindex:o.canFocus(o.getButtonRef(u.key,c.selector))?0:-1,importance:"clear",kind:"muted",size:"xs",onClick:f=>c.onClick(),onKeydown:[e.withKeys(e.withModifiers(o.shiftActionBarFocusRight,["stop"]),["right"]),e.withKeys(e.withModifiers(o.shiftActionBarFocusLeft,["stop"]),["left"])]},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.icon),{size:"200"}))]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(c==null?void 0:c.label),1)]),_:2},1032,["active","aria-label","data-qa","tabindex","onClick","onKeydown"])]}),_:2},1032,["message"]))),128)),R]),_:2},1024))),128)),o.linkButton.showBtn?(e.openBlock(),e.createBlock(p,{key:0,direction:"row",gap:"300"},{default:e.withCtx(()=>[e.createVNode(w,{open:s.showLinkInput,"show-close-button":!1,"visually-hidden-close":!0,"visually-hidden-close-label":"Close link input popover","data-qa":"dt-recipe-editor-link-input-popover",padding:"none",placement:"bottom-start",onClick:[o.onInputFocus,e.withModifiers(o.onInputFocus,["stop"])],onOpened:o.updateInput},{anchor:e.withCtx(()=>[(e.openBlock(),e.createBlock(h,{key:o.linkButton.key,message:o.linkButton.tooltipMessage,placement:"top"},{anchor:e.withCtx(()=>{var u,c;return[e.createVNode(a,{ref:d=>{s.buttonRefMap[o.getButtonRef("custom","link")]=d},active:(c=(u=t.$refs.richTextEditor)==null?void 0:u.editor)==null?void 0:c.isActive(o.linkButton.selector),"aria-label":o.linkButton.tooltipMessage,"data-qa":o.linkButton.dataQA,tabindex:o.canFocus(o.getButtonRef("custom","link"))?0:-1,importance:"clear",kind:"muted",size:"xs",onClick:i[0]||(i[0]=d=>o.linkButton.onClick()),onKeydown:[e.withKeys(e.withModifiers(o.shiftActionBarFocusRight,["stop"]),["right"]),e.withKeys(e.withModifiers(o.shiftActionBarFocusLeft,["stop"]),["left"])]},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.linkButton.icon),{size:"200"}))]),_:1},8,["active","aria-label","data-qa","tabindex","onKeydown"])]}),_:1},8,["message"]))]),content:e.withCtx(()=>[e.createElementVNode("div",E,[n.showAddLink.setLinkTitle.length>0?(e.openBlock(),e.createElementBlock("span",v,e.toDisplayString(n.showAddLink.setLinkTitle),1)):e.createCommentVNode("",!0),e.createVNode(m,{modelValue:s.linkInput,"onUpdate:modelValue":i[1]||(i[1]=u=>s.linkInput=u),"input-aria-label":n.showAddLink.setLinkInputAriaLabel,placeholder:n.setLinkPlaceholder,"data-qa":"dt-recipe-editor-link-input","input-wrapper-class":"d-recipe-editor-link__input-wrapper",onClick:[o.onInputFocus,e.withModifiers(o.onInputFocus,["stop"])],onFocus:o.onInputFocus,onKeydown:e.withKeys(o.setLink,["enter"])},null,8,["modelValue","input-aria-label","placeholder","onClick","onFocus","onKeydown"])])]),footerContent:e.withCtx(()=>[e.createVNode(p,{direction:"row",gap:"300",class:"d-recipe-editor__popover-footer"},{default:e.withCtx(()=>[e.createVNode(a,{"aria-label":n.removeLinkButton.ariaLabel,"data-qa":"dt-recipe-editor-remove-link-btn",importance:"clear",kind:"muted",size:"sm",onClick:o.removeLink},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.removeLinkButton.label),1)]),_:1},8,["aria-label","onClick"]),e.createVNode(a,{"aria-label":n.cancelSetLinkButton.ariaLabel,"data-qa":"dt-recipe-editor-set-link-cancel-btn",importance:"clear",kind:"muted",size:"sm",onClick:o.closeLinkInput},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.cancelSetLinkButton.label),1)]),_:1},8,["aria-label","onClick"]),e.createVNode(a,{"aria-label":n.confirmSetLinkButton.ariaLabel,"data-qa":"dt-recipe-editor-set-link-confirm-btn",size:"sm",onClick:o.setLink},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.confirmSetLinkButton.label),1)]),_:1},8,["aria-label","onClick"])]),_:1})]),_:1},8,["open","onClick","onOpened"])]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",{style:e.normalizeStyle({"max-height":n.maxHeight}),class:"d-recipe-editor__content"},[e.createVNode(C,e.mergeProps({ref:"richTextEditor",modelValue:s.internalInputValue,"onUpdate:modelValue":i[2]||(i[2]=u=>s.internalInputValue=u),"allow-inline-images":!0,"allow-line-breaks":!0,"hide-link-bubble-menu":!0,"auto-focus":n.autoFocus,editable:n.editable,"input-aria-label":n.inputAriaLabel,"input-class":`d-recipe-editor__content-input ${n.inputClass}`,link:!0,"output-format":o.htmlOutputFormat,placeholder:n.placeholder,"use-div-tags":n.useDivTags,"data-qa":"dt-rich-text-editor"},o.removeClassStyleAttrs(t.$attrs),{onTextInput:o.onTextInput,onBlur:o.onBlur,onFocus:o.onFocus,onInput:i[3]||(i[3]=u=>o.onInput(u))}),null,16,["modelValue","auto-focus","editable","input-aria-label","input-class","output-format","placeholder","use-div-tags","onTextInput","onBlur","onFocus"])],4)],16)}const O=x._(D,[["render",S]]);exports.default=O;
2
2
  //# sourceMappingURL=editor.cjs.map