Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

294 řádky
16 KiB

  1. <script>
  2. import { layoutMethods, layoutComputed, } from "@/state/helper.js";
  3. import simplebar from "simplebar-vue";
  4. export default {
  5. components: {
  6. simplebar
  7. },
  8. data() {
  9. return {
  10. show: false,
  11. isCaptionVisible: true,
  12. layoutDirection: 'ltr'
  13. };
  14. },
  15. methods: {
  16. ...layoutMethods,
  17. click() {
  18. this.show = !this.show;
  19. },
  20. resetLayout() {
  21. let reset = JSON.parse(localStorage.getItem("resetValue"));
  22. document.documentElement.setAttribute("data-sidebar-size", "lg");
  23. this.changeMode({ mode: reset.mode });
  24. },
  25. setFullWidth() {
  26. this.$store.commit('setFullWidth');
  27. },
  28. setFixedWidth() {
  29. this.$store.commit('setFixedWidth');
  30. },
  31. setDirection(dir) {
  32. this.layoutDirection = dir;
  33. document.body.setAttribute('data-pc-direction', dir);
  34. }
  35. },
  36. mounted() {
  37. if (document.getElementById('collapseBgGradient')) {
  38. Array.from(document.querySelectorAll("#collapseBgGradient .form-check input")).forEach(function () {
  39. if (document.querySelector("[data-bs-target='#collapseBgGradient']")) {
  40. document.querySelector("[data-bs-target='#collapseBgGradient']").addEventListener('click', function () {
  41. document.getElementById("sidebar-color-gradient").click();
  42. });
  43. }
  44. });
  45. }
  46. },
  47. computed: {
  48. ...layoutComputed,
  49. mode: {
  50. get() {
  51. return this.$store ? this.$store.state.layout.mode : 'light';
  52. },
  53. set(mode) {
  54. this.changeMode({ mode: mode });
  55. },
  56. },
  57. sidebarColor: {
  58. get() {
  59. return this.$store ? this.$store.state.layout.sidebarColor : 'light';
  60. },
  61. set(sidebarColor) {
  62. this.changeSidebarColor({ sidebarColor: sidebarColor });
  63. },
  64. },
  65. sidebarCaption: {
  66. get() {
  67. return this.$store ? this.$store.state.layout.sidebarCaption : 'true';
  68. },
  69. set(sidebarCaption) {
  70. this.changeSidebarCaption({ sidebarCaption: sidebarCaption });
  71. },
  72. },
  73. color: {
  74. get() {
  75. return this.$store ? this.$store.state.layout.color : 'preset-1';
  76. },
  77. set(color) {
  78. this.changeColor({ color: color });
  79. },
  80. },
  81. isFixedWidth() {
  82. return this.$store.getters.isFixedWidth;
  83. },
  84. },
  85. watch: {
  86. mode: {
  87. immediate: true,
  88. handler(newVal, oldVal) {
  89. if (newVal !== oldVal) {
  90. document.body.setAttribute('data-pc-theme', newVal);
  91. this.changeTopbar({ topbar: newVal });
  92. }
  93. },
  94. },
  95. sidebarColor: {
  96. immediate: true,
  97. handler(newVal, oldVal) {
  98. if (newVal !== oldVal) {
  99. document.body.setAttribute('data-pc-sidebar-theme', newVal);
  100. }
  101. },
  102. },
  103. sidebarCaption: {
  104. immediate: true,
  105. handler(newVal, oldVal) {
  106. if (newVal !== oldVal) {
  107. document.body.setAttribute('data-pc-sidebar-caption', newVal ? 'true' : 'false');
  108. }
  109. },
  110. },
  111. color: {
  112. immediate: true,
  113. handler(newVal, oldVal) {
  114. if (newVal !== oldVal) {
  115. document.body.setAttribute('data-pc-preset', newVal);
  116. }
  117. },
  118. },
  119. }
  120. }
  121. </script>
  122. <template>
  123. <div class="pc-h-item" @click="click">
  124. <a href="#" class="pc-head-link pct-c-btn m-0" data-bs-toggle="offcanvas" data-bs-target="#offcanvas_pc_layout">
  125. <i class="ph-duotone ph-gear-six"></i>
  126. </a>
  127. </div>
  128. <BOffcanvas class="border-0 pct-offcanvas offcanvas-end" tabindex="-1" id="offcanvas_pc_layout" header-class="d-flex align-items-center justify-content-between bg-gradient p-3" body-class="p-0" footer-class="offcanvas-footer border-top p-3 text-center" placement="end" v-model="show">
  129. <template #header>
  130. <div class="me-2">
  131. <h5>Settings</h5>
  132. </div>
  133. <button type="button" class="btn btn-icon btn-link-danger" @click="click"><i class="ti ti-x"></i></button>
  134. </template>
  135. <simplebar data-simplebar style="height: 660px">
  136. <div class="pct-body customizer-body">
  137. <div class="offcanvas-body py-0">
  138. <ul class="list-group list-group-flush">
  139. <li class="list-group-item">
  140. <div class="pc-dark">
  141. <h6 class="mb-1">Theme Mode</h6>
  142. <p class="text-muted text-sm">Choose light or dark mode or Auto</p>
  143. <BRow class="theme-color theme-layout">
  144. <BCol Cols="4">
  145. <div class="d-grid">
  146. <button class="preset-btn btn" name="data-pc-theme" data-value="light" :class="{ active: mode === 'light' }" @click="mode = 'light'">
  147. <span class="btn-label">Light</span>
  148. <span class="pc-lay-icon"><span></span><span></span><span></span><span></span></span>
  149. </button>
  150. </div>
  151. </BCol>
  152. <BCol Cols="4">
  153. <div class="d-grid">
  154. <button class="preset-btn btn" name="data-pc-theme" data-value="dark" :class="{ active: mode === 'dark' }" @click="mode = 'dark'">
  155. <span class="btn-label">Dark</span>
  156. <span class="pc-lay-icon"><span></span><span></span><span></span><span></span></span>
  157. </button>
  158. </div>
  159. </BCol>
  160. <BCol Cols="4">
  161. <div class="d-grid">
  162. <button class="preset-btn btn" data-value="default" :class="{ active: mode === 'default' }" @click="mode = 'default'" data-bs-toggle="tooltip" title="Automatically sets the theme based on user's operating system's color scheme.">
  163. <span class="btn-label">Default</span>
  164. <span class="pc-lay-icon d-flex align-items-center justify-content-center">
  165. <i class="ph-duotone ph-cpu"></i>
  166. </span>
  167. </button>
  168. </div>
  169. </BCol>
  170. </BRow>
  171. </div>
  172. </li>
  173. <li class="list-group-item">
  174. <h6 class="mb-1">Sidebar Theme</h6>
  175. <p class="text-muted text-sm">Choose Sidebar Theme</p>
  176. <BRow class="theme-color theme-sidebar-color">
  177. <BCol Cols="6">
  178. <div class="d-grid">
  179. <button class="preset-btn btn" data-value="true" value="dark" :class="{ active: sidebarColor === 'dark' }" @click="sidebarColor = 'dark'">
  180. <span class="btn-label">Dark</span>
  181. <span class="pc-lay-icon"><span></span><span></span><span></span><span></span></span>
  182. </button>
  183. </div>
  184. </BCol>
  185. <BCol Cols="6">
  186. <div class="d-grid">
  187. <button class="preset-btn btn" data-value="false" value="light" :class="{ active: sidebarColor === 'light' }" @click="sidebarColor = 'light'">
  188. <span class="btn-label">Light</span>
  189. <span class="pc-lay-icon"><span></span><span></span><span></span><span></span></span>
  190. </button>
  191. </div>
  192. </BCol>
  193. </BRow>
  194. </li>
  195. <li class="list-group-item">
  196. <h6 class="mb-1">Accent color</h6>
  197. <p class="text-muted text-sm">Choose your primary theme color</p>
  198. <div class="theme-color preset-color">
  199. <BLink :class="{ active: color === 'preset-1' }" @click="color = 'preset-1'" data-value="preset-1"><i class="ti ti-check"></i></BLink>
  200. <BLink :class="{ active: !color === 'preset-2' }" @click="color = 'preset-2'" data-value="preset-2"><i class="ti ti-check"></i></BLink>
  201. <BLink :class="{ active: !color === 'preset-3' }" @click="color = 'preset-3'" data-value="preset-3"><i class="ti ti-check"></i></BLink>
  202. <BLink :class="{ active: !color === 'preset-4' }" @click="color = 'preset-4'" data-value="preset-4"><i class="ti ti-check"></i></BLink>
  203. <BLink :class="{ active: !color === 'preset-5' }" @click="color = 'preset-5'" data-value="preset-5"><i class="ti ti-check"></i></BLink>
  204. <BLink :class="{ active: !color === 'preset-6' }" @click="color = 'preset-6'" data-value="preset-6"><i class="ti ti-check"></i></BLink>
  205. <BLink :class="{ active: !color === 'preset-7' }" @click="color = 'preset-7'" data-value="preset-7"><i class="ti ti-check"></i></BLink>
  206. <BLink :class="{ active: !color === 'preset-8' }" @click="color = 'preset-8'" data-value="preset-8"><i class="ti ti-check"></i></BLink>
  207. <BLink :class="{ active: !color === 'preset-9' }" @click="color = 'preset-9'" data-value="preset-9"><i class="ti ti-check"></i></BLink>
  208. <BLink :class="{ active: !color === 'preset-10' }" @click="color = 'preset-10'" data-value="preset-10"><i class="ti ti-check"></i></BLink>
  209. </div>
  210. </li>
  211. <li class="list-group-item">
  212. <h6 class="mb-1">Sidebar Caption</h6>
  213. <p class="text-muted text-sm">Sidebar Caption Hide/Show</p>
  214. <BRow class="theme-color theme-nav-caption">
  215. <BCol Cols="6">
  216. <div class="d-grid">
  217. <button class="preset-btn btn" data-value="true" :class="{ active: sidebarCaption === 'true' }" @click="sidebarCaption = true">
  218. <span class="btn-label">Caption Show</span>
  219. <span class="pc-lay-icon"><span></span><span></span><span><span></span><span></span></span><span></span></span>
  220. </button>
  221. </div>
  222. </BCol>
  223. <BCol Cols="6">
  224. <div class="d-grid">
  225. <button class="preset-btn btn" data-value="false" :class="{ active: sidebarCaption === 'false' }" @click="sidebarCaption = false">
  226. <span class="btn-label">Caption Hide</span>
  227. <span class="pc-lay-icon"><span></span><span></span><span><span></span><span></span></span><span></span></span>
  228. </button>
  229. </div>
  230. </BCol>
  231. </BRow>
  232. </li>
  233. <li class="list-group-item">
  234. <div class="pc-rtl">
  235. <h6 class="mb-1">Theme Layout</h6>
  236. <p class="text-muted text-sm">LTR/RTL</p>
  237. <BRow class="theme-color theme-direction">
  238. <BCol Cols="6">
  239. <div class="d-grid">
  240. <button class="preset-btn btn" data-value="false" :class="{ active: layoutDirection === 'ltr' }" @click="setDirection('ltr')">
  241. <span class="btn-label">LTR</span>
  242. <span class="pc-lay-icon"><span></span><span></span><span></span><span></span></span>
  243. </button>
  244. </div>
  245. </BCol>
  246. <BCol Cols="6">
  247. <div class="d-grid">
  248. <button class="preset-btn btn" data-value="true" :class="{ active: layoutDirection === 'rtl' }" @click="setDirection('rtl')">
  249. <span class="btn-label">RTL</span>
  250. <span class="pc-lay-icon"><span></span><span></span><span></span><span></span></span>
  251. </button>
  252. </div>
  253. </BCol>
  254. </BRow>
  255. </div>
  256. </li>
  257. <li class="list-group-item pc-box-width">
  258. <div class="pc-container-width">
  259. <h6 class="mb-1">Layout Width</h6>
  260. <p class="text-muted text-sm">Choose Full or Container Layout</p>
  261. <BRow class="theme-color theme-container">
  262. <BCol Cols="6">
  263. <div class="d-grid">
  264. <button class="preset-btn btn" data-value="false" :class="{ active: !isFixedWidth }" @click="setFullWidth">
  265. <span class="btn-label">Full Width</span>
  266. <span class="pc-lay-icon"><span></span><span></span><span></span><span><span></span></span></span>
  267. </button>
  268. </div>
  269. </BCol>
  270. <BCol Cols="6">
  271. <div class="d-grid">
  272. <button class="preset-btn btn" data-value="true" :class="{ active: isFixedWidth }" @click="setFixedWidth">
  273. <span class="btn-label">Fixed Width</span>
  274. <span class="pc-lay-icon"><span></span><span></span><span></span><span><span></span></span></span>
  275. </button>
  276. </div>
  277. </BCol>
  278. </BRow>
  279. </div>
  280. </li>
  281. <li class="list-group-item">
  282. <div class="d-grid">
  283. <button class="btn btn-light-danger" id="layoutreset">Reset Layout</button>
  284. </div>
  285. </li>
  286. </ul>
  287. </div>
  288. </div>
  289. </simplebar>
  290. </BOffcanvas>
  291. </template>