quasar 2.11.1 → 2.11.3

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 (121) hide show
  1. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  2. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  3. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  4. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  7. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  8. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  9. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  10. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +2 -2
  25. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-round.umd.prod.js +2 -2
  31. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +2 -2
  32. package/dist/icon-set/svg-material-icons.umd.prod.js +2 -2
  33. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +2 -2
  34. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +2 -2
  36. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v7.umd.prod.js +2 -2
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +1 -1
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +1 -1
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/eu.umd.prod.js +1 -1
  56. package/dist/lang/fa-IR.umd.prod.js +1 -1
  57. package/dist/lang/fa.umd.prod.js +1 -1
  58. package/dist/lang/fi.umd.prod.js +1 -1
  59. package/dist/lang/fr.umd.prod.js +1 -1
  60. package/dist/lang/gn.umd.prod.js +1 -1
  61. package/dist/lang/he.umd.prod.js +1 -1
  62. package/dist/lang/hr.umd.prod.js +1 -1
  63. package/dist/lang/hu.umd.prod.js +1 -1
  64. package/dist/lang/id.umd.prod.js +1 -1
  65. package/dist/lang/is.umd.prod.js +1 -1
  66. package/dist/lang/it.umd.prod.js +1 -1
  67. package/dist/lang/ja.umd.prod.js +1 -1
  68. package/dist/lang/kk.umd.prod.js +1 -1
  69. package/dist/lang/km.umd.prod.js +1 -1
  70. package/dist/lang/ko-KR.umd.prod.js +1 -1
  71. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  72. package/dist/lang/lt.umd.prod.js +1 -1
  73. package/dist/lang/lu.umd.prod.js +1 -1
  74. package/dist/lang/lv.umd.prod.js +1 -1
  75. package/dist/lang/ml.umd.prod.js +1 -1
  76. package/dist/lang/mm.umd.prod.js +1 -1
  77. package/dist/lang/ms.umd.prod.js +1 -1
  78. package/dist/lang/my.umd.prod.js +1 -1
  79. package/dist/lang/nb-NO.umd.prod.js +1 -1
  80. package/dist/lang/nl.umd.prod.js +1 -1
  81. package/dist/lang/pl.umd.prod.js +1 -1
  82. package/dist/lang/pt-BR.umd.prod.js +1 -1
  83. package/dist/lang/pt.umd.prod.js +1 -1
  84. package/dist/lang/ro.umd.prod.js +1 -1
  85. package/dist/lang/ru.umd.prod.js +1 -1
  86. package/dist/lang/sk.umd.prod.js +1 -1
  87. package/dist/lang/sl.umd.prod.js +1 -1
  88. package/dist/lang/sm.umd.prod.js +1 -1
  89. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  90. package/dist/lang/sr.umd.prod.js +1 -1
  91. package/dist/lang/sv.umd.prod.js +1 -1
  92. package/dist/lang/ta.umd.prod.js +1 -1
  93. package/dist/lang/th.umd.prod.js +1 -1
  94. package/dist/lang/tr.umd.prod.js +1 -1
  95. package/dist/lang/ug.umd.prod.js +1 -1
  96. package/dist/lang/uk.umd.prod.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  98. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  99. package/dist/lang/vi.umd.prod.js +1 -1
  100. package/dist/lang/zh-CN.umd.prod.js +1 -1
  101. package/dist/lang/zh-TW.umd.prod.js +1 -1
  102. package/dist/quasar.cjs.prod.js +2 -2
  103. package/dist/quasar.css +8 -3
  104. package/dist/quasar.esm.js +84 -68
  105. package/dist/quasar.esm.prod.js +2 -2
  106. package/dist/quasar.prod.css +1 -1
  107. package/dist/quasar.rtl.css +9 -3
  108. package/dist/quasar.rtl.prod.css +1 -1
  109. package/dist/quasar.sass +8 -3
  110. package/dist/quasar.umd.js +84 -68
  111. package/dist/quasar.umd.prod.js +2 -2
  112. package/dist/web-types/web-types.json +1 -1
  113. package/package.json +8 -8
  114. package/src/body.js +34 -4
  115. package/src/components/checkbox/use-checkbox.js +2 -0
  116. package/src/components/radio/QRadio.js +2 -0
  117. package/src/components/tabs/QTabs.js +35 -57
  118. package/src/components/tabs/QTabs.sass +5 -1
  119. package/src/css/core/mouse.sass +3 -1
  120. package/src/lang.js +17 -11
  121. package/src/plugins/Platform.js +1 -1
package/dist/quasar.css CHANGED
@@ -4898,10 +4898,14 @@ body.desktop .q-table > tbody > tr:not(.q-tr--no-hover):hover > td:not(.q-td--no
4898
4898
  .q-tabs--scrollable.q-tabs__arrows--inside .q-tabs__arrow--faded {
4899
4899
  display: none;
4900
4900
  }
4901
- .q-tabs--not-scrollable .q-tabs__arrow {
4901
+ .q-tabs--not-scrollable.q-tabs__arrows--outside, body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows.q-tabs__arrows--outside {
4902
+ padding-left: 0;
4903
+ padding-right: 0;
4904
+ }
4905
+ .q-tabs--not-scrollable .q-tabs__arrow, body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__arrow {
4902
4906
  display: none;
4903
4907
  }
4904
- .q-tabs--not-scrollable .q-tabs__content {
4908
+ .q-tabs--not-scrollable .q-tabs__content, body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__content {
4905
4909
  border-radius: inherit;
4906
4910
  }
4907
4911
  .q-tabs__arrow {
@@ -10500,7 +10504,8 @@ img.responsive {
10500
10504
  user-select: none !important;
10501
10505
  }
10502
10506
 
10503
- .scroll {
10507
+ .scroll,
10508
+ body.mobile .scroll--mobile {
10504
10509
  overflow: auto;
10505
10510
  }
10506
10511
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.11.1
2
+ * Quasar Framework v2.11.3
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -316,8 +316,8 @@ const Platform = {
316
316
  // the rest of the props; we also avoid
317
317
  // hydration errors
318
318
  opts.onSSRHydrated.push(() => {
319
- isRuntimeSsrPreHydration.value = false;
320
319
  Object.assign($q.platform, client);
320
+ isRuntimeSsrPreHydration.value = false;
321
321
  iosCorrection = void 0;
322
322
  });
323
323
 
@@ -1069,12 +1069,14 @@ const Plugin$8 = defineReactivePlugin({
1069
1069
  };
1070
1070
 
1071
1071
  {
1072
- const el = document.documentElement;
1073
- el.setAttribute('dir', lang.rtl === true ? 'rtl' : 'ltr');
1074
- el.setAttribute('lang', lang.isoName);
1075
-
1076
1072
  lang.set = Plugin$8.set;
1077
1073
 
1074
+ if (Plugin$8.__langConfig === void 0 || Plugin$8.__langConfig.noHtmlAttrs !== true) {
1075
+ const el = document.documentElement;
1076
+ el.setAttribute('dir', lang.rtl === true ? 'rtl' : 'ltr');
1077
+ el.setAttribute('lang', lang.isoName);
1078
+ }
1079
+
1078
1080
  Object.assign(Plugin$8.__langPack, lang);
1079
1081
 
1080
1082
  Plugin$8.props = lang;
@@ -1086,6 +1088,7 @@ const Plugin$8 = defineReactivePlugin({
1086
1088
  install ({ $q, lang, ssrContext }) {
1087
1089
  {
1088
1090
  $q.lang = Plugin$8.__langPack;
1091
+ Plugin$8.__langConfig = $q.config.lang;
1089
1092
 
1090
1093
  if (this.__installed === true) {
1091
1094
  lang !== void 0 && this.set(lang);
@@ -1172,21 +1175,51 @@ function getBodyClasses ({ is, has, within }, cfg) {
1172
1175
  }
1173
1176
 
1174
1177
  function applyClientSsrCorrections () {
1178
+ const { is } = client;
1175
1179
  const classes = document.body.className;
1176
- let newCls = classes;
1180
+
1181
+ const classList = new Set(classes.replace(/ {2}/g, ' ').split(' '));
1177
1182
 
1178
1183
  if (iosCorrection !== void 0) {
1179
- newCls = newCls.replace('desktop', 'platform-ios mobile');
1184
+ classList.delete('desktop');
1185
+ classList.add('platform-ios');
1186
+ classList.add('mobile');
1187
+ }
1188
+ // else: is it SSG?
1189
+ else if (is.nativeMobile !== true && is.electron !== true && is.bex !== true) {
1190
+ if (is.desktop === true) {
1191
+ classList.delete('mobile');
1192
+ classList.delete('platform-ios');
1193
+ classList.delete('platform-android');
1194
+ classList.add('desktop');
1195
+ }
1196
+ else if (is.mobile === true) {
1197
+ classList.delete('desktop');
1198
+ classList.add('mobile');
1199
+
1200
+ const mobile = getMobilePlatform(is);
1201
+ if (mobile !== void 0) {
1202
+ classList.add(`platform-${ mobile }`);
1203
+ classList.delete(`platform-${ mobile === 'ios' ? 'android' : 'ios' }`);
1204
+ }
1205
+ else {
1206
+ classList.delete('platform-ios');
1207
+ classList.delete('platform-android');
1208
+ }
1209
+ }
1180
1210
  }
1181
1211
 
1182
1212
  if (client.has.touch === true) {
1183
- newCls = newCls.replace('no-touch', 'touch');
1213
+ classList.delete('no-touch');
1214
+ classList.add('touch');
1184
1215
  }
1185
1216
 
1186
1217
  if (client.within.iframe === true) {
1187
- newCls += ' within-iframe';
1218
+ classList.add('within-iframe');
1188
1219
  }
1189
1220
 
1221
+ const newCls = Array.from(classList).join(' ');
1222
+
1190
1223
  if (classes !== newCls) {
1191
1224
  document.body.className = newCls;
1192
1225
  }
@@ -1610,7 +1643,7 @@ function prepareApp (app, uiOpts, pluginOpts) {
1610
1643
  }
1611
1644
 
1612
1645
  var installQuasar = function (parentApp, opts = {}) {
1613
- const $q = { version: '2.11.1' };
1646
+ const $q = { version: '2.11.3' };
1614
1647
 
1615
1648
  if (globalConfigIsFrozen === false) {
1616
1649
  if (opts.config !== void 0) {
@@ -7529,6 +7562,8 @@ function useCheckbox (type, getInner) {
7529
7562
  const prop = { type: 'checkbox' };
7530
7563
 
7531
7564
  props.name !== void 0 && Object.assign(prop, {
7565
+ // see https://vuejs.org/guide/extras/render-function.html#creating-vnodes (.prop)
7566
+ '.checked': isTrue.value,
7532
7567
  '^checked': isTrue.value === true ? 'checked' : void 0,
7533
7568
  name: props.name,
7534
7569
  value: modelIsArray.value === true
@@ -9568,18 +9603,11 @@ var QTabs = createComponent({
9568
9603
  const rightArrow = ref(false);
9569
9604
  const justify = ref(false);
9570
9605
 
9571
- const arrowsEnabled = computed(() =>
9572
- $q.platform.is.desktop === true || props.mobileArrows === true
9573
- );
9574
-
9575
9606
  const tabDataList = [];
9576
9607
  const tabDataListLen = ref(0);
9577
9608
  const hasFocus = ref(false);
9578
9609
 
9579
9610
  let animateTimer, scrollTimer, unwatchRoute;
9580
- let localUpdateArrows = arrowsEnabled.value === true
9581
- ? updateArrowsFn
9582
- : noop;
9583
9611
 
9584
9612
  const tabProps = computed(() => ({
9585
9613
  activeClass: props.activeClass,
@@ -9620,17 +9648,17 @@ var QTabs = createComponent({
9620
9648
  'q-tabs row no-wrap items-center'
9621
9649
  + ` q-tabs--${ scrollable.value === true ? '' : 'not-' }scrollable`
9622
9650
  + ` q-tabs--${ props.vertical === true ? 'vertical' : 'horizontal' }`
9623
- + ` q-tabs__arrows--${ arrowsEnabled.value === true && props.outsideArrows === true ? 'outside' : 'inside' }`
9651
+ + ` q-tabs__arrows--${ props.outsideArrows === true ? 'outside' : 'inside' }`
9652
+ + ` q-tabs--mobile-with${ props.mobileArrows === true ? '' : 'out' }-arrows`
9624
9653
  + (props.dense === true ? ' q-tabs--dense' : '')
9625
9654
  + (props.shrink === true ? ' col-shrink' : '')
9626
9655
  + (props.stretch === true ? ' self-stretch' : '')
9627
9656
  );
9628
9657
 
9629
9658
  const innerClass = computed(() =>
9630
- 'q-tabs__content row no-wrap items-center self-stretch hide-scrollbar relative-position '
9659
+ 'q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position '
9631
9660
  + alignClass.value
9632
9661
  + (props.contentClass !== void 0 ? ` ${ props.contentClass }` : '')
9633
- + ($q.platform.is.mobile === true ? ' scroll' : '')
9634
9662
  );
9635
9663
 
9636
9664
  const domProps = computed(() => (
@@ -9642,25 +9670,15 @@ var QTabs = createComponent({
9642
9670
  const isRTL = computed(() => props.vertical !== true && $q.lang.rtl === true);
9643
9671
  const rtlPosCorrection = computed(() => rtlHasScrollBug === false && isRTL.value === true);
9644
9672
 
9645
- watch(isRTL, localUpdateArrows);
9673
+ watch(isRTL, updateArrows);
9646
9674
 
9647
9675
  watch(() => props.modelValue, name => {
9648
9676
  updateModel({ name, setCurrent: true, skipEmit: true });
9649
9677
  });
9650
9678
 
9651
- watch(() => props.outsideArrows, () => {
9652
- recalculateScroll();
9653
- });
9654
-
9655
- watch(arrowsEnabled, v => {
9656
- localUpdateArrows = v === true
9657
- ? updateArrowsFn
9658
- : noop;
9659
-
9660
- recalculateScroll();
9661
- });
9679
+ watch(() => props.outsideArrows, recalculateScroll);
9662
9680
 
9663
- function updateModel ({ name, setCurrent, skipEmit, fromRoute }) {
9681
+ function updateModel ({ name, setCurrent, skipEmit }) {
9664
9682
  if (currentModel.value !== name) {
9665
9683
  if (skipEmit !== true && props[ 'onUpdate:modelValue' ] !== void 0) {
9666
9684
  emit('update:modelValue', name);
@@ -9706,7 +9724,7 @@ var QTabs = createComponent({
9706
9724
  scrollable.value = scroll;
9707
9725
 
9708
9726
  // Arrows need to be updated even if the scroll status was already true
9709
- scroll === true && registerUpdateArrowsTick(localUpdateArrows);
9727
+ scroll === true && registerUpdateArrowsTick(updateArrows);
9710
9728
 
9711
9729
  justify.value = size < parseInt(props.breakpoint, 10);
9712
9730
  }
@@ -9763,34 +9781,34 @@ var QTabs = createComponent({
9763
9781
 
9764
9782
  if (offset < 0) {
9765
9783
  contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.floor(offset);
9766
- localUpdateArrows();
9784
+ updateArrows();
9767
9785
  return
9768
9786
  }
9769
9787
 
9770
9788
  offset += props.vertical === true ? newPos.height - height : newPos.width - width;
9771
9789
  if (offset > 0) {
9772
9790
  contentRef.value[ props.vertical === true ? 'scrollTop' : 'scrollLeft' ] += Math.ceil(offset);
9773
- localUpdateArrows();
9791
+ updateArrows();
9774
9792
  }
9775
9793
  }
9776
9794
 
9777
- function updateArrowsFn () {
9795
+ function updateArrows () {
9778
9796
  const content = contentRef.value;
9779
- if (content !== null) {
9780
- const
9781
- rect = content.getBoundingClientRect(),
9782
- pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft);
9797
+ if (content === null) { return }
9783
9798
 
9784
- if (isRTL.value === true) {
9785
- leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1;
9786
- rightArrow.value = pos > 0;
9787
- }
9788
- else {
9789
- leftArrow.value = pos > 0;
9790
- rightArrow.value = props.vertical === true
9791
- ? Math.ceil(pos + rect.height) < content.scrollHeight
9792
- : Math.ceil(pos + rect.width) < content.scrollWidth;
9793
- }
9799
+ const
9800
+ rect = content.getBoundingClientRect(),
9801
+ pos = props.vertical === true ? content.scrollTop : Math.abs(content.scrollLeft);
9802
+
9803
+ if (isRTL.value === true) {
9804
+ leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1;
9805
+ rightArrow.value = pos > 0;
9806
+ }
9807
+ else {
9808
+ leftArrow.value = pos > 0;
9809
+ rightArrow.value = props.vertical === true
9810
+ ? Math.ceil(pos + rect.height) < content.scrollHeight
9811
+ : Math.ceil(pos + rect.width) < content.scrollWidth;
9794
9812
  }
9795
9813
  }
9796
9814
 
@@ -9892,7 +9910,7 @@ var QTabs = createComponent({
9892
9910
  }
9893
9911
 
9894
9912
  set(content, pos);
9895
- localUpdateArrows();
9913
+ updateArrows();
9896
9914
 
9897
9915
  return done
9898
9916
  }
@@ -10136,17 +10154,21 @@ var QTabs = createComponent({
10136
10154
  });
10137
10155
 
10138
10156
  return () => {
10139
- const child = [
10157
+ return h('div', {
10158
+ ref: rootRef,
10159
+ class: classes.value,
10160
+ role: 'tablist',
10161
+ onFocusin,
10162
+ onFocusout
10163
+ }, [
10140
10164
  h(QResizeObserver, { onResize: updateContainer }),
10141
10165
 
10142
10166
  h('div', {
10143
10167
  ref: contentRef,
10144
10168
  class: innerClass.value,
10145
- onScroll: localUpdateArrows
10146
- }, hSlot(slots.default))
10147
- ];
10169
+ onScroll: updateArrows
10170
+ }, hSlot(slots.default)),
10148
10171
 
10149
- arrowsEnabled.value === true && child.push(
10150
10172
  h(QIcon, {
10151
10173
  class: 'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon'
10152
10174
  + (leftArrow.value === true ? '' : ' q-tabs__arrow--faded'),
@@ -10168,15 +10190,7 @@ var QTabs = createComponent({
10168
10190
  onMouseleavePassive: stopAnimScroll,
10169
10191
  onTouchendPassive: stopAnimScroll
10170
10192
  })
10171
- );
10172
-
10173
- return h('div', {
10174
- ref: rootRef,
10175
- class: classes.value,
10176
- role: 'tablist',
10177
- onFocusin,
10178
- onFocusout
10179
- }, child)
10193
+ ])
10180
10194
  }
10181
10195
  }
10182
10196
  });
@@ -23088,6 +23102,8 @@ var QRadio = createComponent({
23088
23102
  const prop = { type: 'radio' };
23089
23103
 
23090
23104
  props.name !== void 0 && Object.assign(prop, {
23105
+ // see https://vuejs.org/guide/extras/render-function.html#creating-vnodes (.prop)
23106
+ '.checked': isTrue.value === true,
23091
23107
  '^checked': isTrue.value === true ? 'checked' : void 0,
23092
23108
  name: props.name,
23093
23109
  value: props.val
@@ -40324,7 +40340,7 @@ function runSequentialPromises (
40324
40340
  */
40325
40341
 
40326
40342
  const Quasar = {
40327
- version: '2.11.1',
40343
+ version: '2.11.3',
40328
40344
  install: installQuasar,
40329
40345
  lang: Plugin$8,
40330
40346
  iconSet: Plugin$7