mirror of
https://github.com/tabler/tabler.git
synced 2025-12-22 18:04:26 +04:00
Compare commits
2 Commits
dev-layout
...
dev-onboar
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
385921c530 | ||
|
|
ca836e4258 |
@@ -3,4 +3,4 @@
|
|||||||
"@tabler/preview": minor
|
"@tabler/preview": minor
|
||||||
---
|
---
|
||||||
|
|
||||||
Added Pay page with dedicated layout, navigation link, and card/PayPal payment form.
|
Added new "Pay" page with dedicated layout, navigation link, and payment form (card + PayPal).
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Refactored Bootstrap exports to use single source of truth in `bootstrap.js` and removed duplicate exports from `tabler.js` for better maintainability.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fixed `.btn-icon` to be square by aligning `min-width` calculation with base `.btn` formula.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added `.card-gradient` component with gradient variants, direction modifiers, and animated backgrounds.
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added new `card-gradients.html` page showcasing various gradient card styles and components.
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added Change Password modal with current password, new password with strength indicator, confirm password validation, and show/hide password toggles.
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/preview": minor
|
"@tabler/preview": minor
|
||||||
---
|
---
|
||||||
|
|
||||||
Added color palette to signing component.
|
Add a color palette in the signing component
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added Confirm Delete modal with warning icon, confirmation checkbox, and JavaScript validation to enable delete button only when confirmed.
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added new Crypto Dashboard page with cryptocurrency portfolio overview, market data, and order history.
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Added crypto markets and orders data files (`crypto-markets.json`, `crypto-orders.json`) for cryptocurrency dashboard functionality.
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": patch
|
"@tabler/core": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Fixed icon alignment for `.btn-sm` and `.btn-xl` sizes.
|
Fix icon alignment for `.btn-sm` and `.btn-xl` sizes
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added Edit Profile modal with avatar upload, personal information fields, social links, and date of birth.
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update Tabler Icons to v3.35.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Updated `$border-color-translucent-dark` from `rgba(72, 110, 149, 0.14)` to `rgba(128, 150, 172, 0.2)` to improve visibility of form checkboxes and other form elements in dark mode.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fixed `.input-icon-addon` z-index issue with form validation feedback and added default height.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fixed status color classes to use CSS variables instead of hardcoded values and include social colors (bitbucket, facebook, etc.) in status class generation.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fixed white space on left side when scrollbar is present by replacing `margin-inline-start: calc(100vw - 100%)` with `scrollbar-gutter: stable` on `html` element, with `overflow-y: scroll` fallback for unsupported browsers.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Updated flags and avatars styling for better visual consistency.
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": patch
|
"@tabler/core": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Fixed mixed declarations in SCSS.
|
Fix mixed declarations in SCSS
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update SCSS to use logical properties
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
"@tabler/docs": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Added Geist font family integration.
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added language selector dropdown to navbar with flag indicators for multilingual support.
|
|
||||||
@@ -3,4 +3,4 @@
|
|||||||
"@tabler/preview": patch
|
"@tabler/preview": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Added `bg-blur` utility and increased `container-tight` width for layout flexibility.
|
Introduced `bg-blur` utility for backdrop blur effects and increased container-tight width for layout flexibility.
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/preview": patch
|
"@tabler/preview": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Updated icons to v3.34.1 with 75 new icons.
|
Update icons to v3.34.1 (75 new icons)
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Added `border-top-left-radius` and `border-top-right-radius` to first and last child elements in `.card-table` for proper corner rounding.
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Added `media-print` mixin and print styles to hide interactive components during printing.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Refactored page-menu structure for dashboards and updated navigation menu organization.
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/preview": patch
|
"@tabler/preview": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Updated activity messages.
|
Update activity messages
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Refactored navbar-side component by consolidating separate include files (apps, language, notifications, theme, user) into a single `navbar-side.html` file for better maintainability.
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added New Task modal with fields for task name, description, assigned user, priority, due date, and category tags.
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": patch
|
"@tabler/core": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Fixed double bottom border in tables.
|
Fix double bottom border in tables.
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": minor
|
"@tabler/core": minor
|
||||||
---
|
---
|
||||||
|
|
||||||
Added `.progress-lg` and `.progress-xl` size variants for the progress component.
|
Added large and extra-large sizes for progress component (`.progress-lg`, `.progress-xl`).
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": patch
|
"@tabler/core": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Added smooth transitions for progress bar `width` and `background-color` changes.
|
Added smooth transitions for progress bar width and background color changes.
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Removed redundant nullish coalescing operator from `html` option in popover and tooltip initialization.
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": patch
|
"@tabler/core": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Updated skip-link to use `visually-hidden` for improved accessibility.
|
Updated skip-link to use `visually-hidden` class for better accessibility.
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added new Task List page with tables showing tasks organized by status (Upcoming, In Progress, Completed) and modal dialog for adding new tasks.
|
|
||||||
|
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": patch
|
"@tabler/core": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Updated deprecated global Sass functions to module equivalents (`map.merge`, `string.slice`, `math.percentage`, etc.).
|
Updated deprecated global functions (`map-merge`, `str-slice`, `percentage`, etc.) with their module-based equivalents (`map.merge`, `string.slice`, `math.percentage`, etc.).
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/core": patch
|
"@tabler/core": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Updated Bootstrap to v5.3.8.
|
Update Bootstrap to v5.3.8
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
"@tabler/preview": patch
|
"@tabler/preview": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Updated trending component to use `arrow-up`/`arrow-down` instead of `trending-up`/`trending-down`.
|
Updated trending component to use `arrow-up`/`arrow-down` icons instead of `trending-up`/`trending-down`.
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/docs": patch
|
"@tabler/docs": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Fixed Docs search display in dark mode.
|
Fix Docs search in dark mode
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/preview": patch
|
"@tabler/preview": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Fixed responsive layouts on the Form Elements page.
|
Fix responsive layputs in 'Form Elements' page
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Added comprehensive All Elements page with all UI components and Bootstrap elements
|
|
||||||
2
.github/workflows/argos.yml
vendored
2
.github/workflows/argos.yml
vendored
@@ -40,7 +40,7 @@ jobs:
|
|||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v5
|
||||||
with:
|
with:
|
||||||
node-version: "${{ env.NODE }}"
|
node-version: "${{ env.NODE }}"
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|||||||
2
.github/workflows/bundlewatch.yml
vendored
2
.github/workflows/bundlewatch.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
|||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v5
|
||||||
with:
|
with:
|
||||||
node-version: "${{ env.NODE }}"
|
node-version: "${{ env.NODE }}"
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|||||||
2
.github/workflows/lockfiles.yaml
vendored
2
.github/workflows/lockfiles.yaml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
- name: Clone Tabler
|
- name: Clone Tabler
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
- name: Prevent lock file change
|
- name: Prevent lock file change
|
||||||
uses: xalvarez/prevent-file-change-action@v3
|
uses: xalvarez/prevent-file-change-action@v2
|
||||||
with:
|
with:
|
||||||
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
||||||
pattern: Gemfile.lock|pnpm-lock.json|pnpm-lock.yaml
|
pattern: Gemfile.lock|pnpm-lock.json|pnpm-lock.yaml
|
||||||
|
|||||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -27,7 +27,7 @@ jobs:
|
|||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
- name: Setup Node.js 18
|
- name: Setup Node.js 18
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v5
|
||||||
with:
|
with:
|
||||||
node-version: "${{ env.NODE }}"
|
node-version: "${{ env.NODE }}"
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|||||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
|||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v5
|
||||||
with:
|
with:
|
||||||
node-version: "${{ env.NODE }}"
|
node-version: "${{ env.NODE }}"
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|||||||
14
.prettierrc
14
.prettierrc
@@ -4,17 +4,7 @@
|
|||||||
"printWidth": 320,
|
"printWidth": 320,
|
||||||
"proseWrap": "always",
|
"proseWrap": "always",
|
||||||
"semi": false,
|
"semi": false,
|
||||||
"singleQuote": true,
|
"singleQuote": false,
|
||||||
"quoteProps": "consistent",
|
|
||||||
"tabWidth": 2,
|
"tabWidth": 2,
|
||||||
"useTabs": false,
|
"trailingComma": "all"
|
||||||
"trailingComma": "all",
|
|
||||||
"overrides": [
|
|
||||||
{
|
|
||||||
"files": "*.scss",
|
|
||||||
"options": {
|
|
||||||
"parser": "scss"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
import fs from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
import { fileURLToPath } from 'url';
|
|
||||||
|
|
||||||
// Get __dirname in ES modules
|
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
|
||||||
const __dirname = path.dirname(__filename);
|
|
||||||
|
|
||||||
// File paths (relative to core/.build directory)
|
|
||||||
const bootstrapPath = path.join(__dirname, '../node_modules/bootstrap/scss/_variables.scss');
|
|
||||||
const tablerPath = path.join(__dirname, '../scss/_variables.scss');
|
|
||||||
|
|
||||||
// Function to extract variable names from SCSS file
|
|
||||||
function extractVariables(filePath) {
|
|
||||||
const content = fs.readFileSync(filePath, 'utf8');
|
|
||||||
const variables = new Set();
|
|
||||||
|
|
||||||
// Regex to find SCSS variables
|
|
||||||
// Looks for patterns like: $variable-name: value
|
|
||||||
// Includes variables in maps and lists
|
|
||||||
const variableRegex = /\$([a-zA-Z0-9_-]+)\s*[:=]/g;
|
|
||||||
|
|
||||||
let match;
|
|
||||||
while ((match = variableRegex.exec(content)) !== null) {
|
|
||||||
const varName = match[1];
|
|
||||||
variables.add(varName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return variables;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Main function
|
|
||||||
function compareVariables() {
|
|
||||||
console.log('Analyzing Bootstrap variables...');
|
|
||||||
const bootstrapVars = extractVariables(bootstrapPath);
|
|
||||||
console.log(`Found ${bootstrapVars.size} variables in Bootstrap\n`);
|
|
||||||
|
|
||||||
console.log('Analyzing Tabler variables...');
|
|
||||||
const tablerVars = extractVariables(tablerPath);
|
|
||||||
console.log(`Found ${tablerVars.size} variables in Tabler\n`);
|
|
||||||
|
|
||||||
// Find variables that are in Bootstrap but not in Tabler
|
|
||||||
const missingInTabler = [];
|
|
||||||
for (const varName of bootstrapVars) {
|
|
||||||
if (!tablerVars.has(varName)) {
|
|
||||||
missingInTabler.push(varName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sort alphabetically
|
|
||||||
missingInTabler.sort();
|
|
||||||
|
|
||||||
console.log('='.repeat(60));
|
|
||||||
console.log(`Variables in Bootstrap that are missing in Tabler: ${missingInTabler.length}`);
|
|
||||||
console.log('='.repeat(60));
|
|
||||||
|
|
||||||
if (missingInTabler.length === 0) {
|
|
||||||
console.log('All Bootstrap variables are present in Tabler!');
|
|
||||||
} else {
|
|
||||||
console.log('\nList of missing variables:\n');
|
|
||||||
missingInTabler.forEach((varName, index) => {
|
|
||||||
console.log(`${(index + 1).toString().padStart(4)}. $${varName}`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Optionally: show statistics
|
|
||||||
console.log('\n' + '='.repeat(60));
|
|
||||||
console.log('Statistics:');
|
|
||||||
console.log(` Bootstrap: ${bootstrapVars.size} variables`);
|
|
||||||
console.log(` Tabler: ${tablerVars.size} variables`);
|
|
||||||
console.log(` Missing: ${missingInTabler.length} variables`);
|
|
||||||
console.log(` Coverage: ${((1 - missingInTabler.length / bootstrapVars.size) * 100).toFixed(1)}%`);
|
|
||||||
console.log('='.repeat(60));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run analysis
|
|
||||||
try {
|
|
||||||
compareVariables();
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Error during analysis:', error.message);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
import { existsSync, mkdirSync } from 'fs'
|
|
||||||
import { copySync } from 'fs-extra/esm'
|
|
||||||
import { fileURLToPath } from 'url'
|
|
||||||
import { join, dirname } from 'node:path'
|
|
||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
||||||
|
|
||||||
const fromDir = join(__dirname, '..', 'node_modules/geist/dist/fonts')
|
|
||||||
const toDir = join(__dirname, '..', 'fonts')
|
|
||||||
|
|
||||||
// Create fonts directory if it doesn't exist
|
|
||||||
if (!existsSync(toDir)) {
|
|
||||||
mkdirSync(toDir, { recursive: true })
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy geist-mono fonts
|
|
||||||
const monoFrom = join(fromDir, 'geist-mono')
|
|
||||||
const monoTo = join(toDir, 'geist-mono')
|
|
||||||
|
|
||||||
if (existsSync(monoFrom)) {
|
|
||||||
if (!existsSync(monoTo)) {
|
|
||||||
mkdirSync(monoTo, { recursive: true })
|
|
||||||
}
|
|
||||||
|
|
||||||
copySync(monoFrom, monoTo, {
|
|
||||||
dereference: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
console.log(`Successfully copied geist-mono fonts`)
|
|
||||||
} else {
|
|
||||||
console.warn(`Warning: geist-mono fonts not found at ${monoFrom}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy geist-sans fonts
|
|
||||||
const sansFrom = join(fromDir, 'geist-sans')
|
|
||||||
const sansTo = join(toDir, 'geist-sans')
|
|
||||||
|
|
||||||
if (existsSync(sansFrom)) {
|
|
||||||
if (!existsSync(sansTo)) {
|
|
||||||
mkdirSync(sansTo, { recursive: true })
|
|
||||||
}
|
|
||||||
|
|
||||||
copySync(sansFrom, sansTo, {
|
|
||||||
dereference: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
console.log(`Successfully copied geist-sans fonts`)
|
|
||||||
} else {
|
|
||||||
console.warn(`Warning: geist-sans fonts not found at ${sansFrom}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,7 @@
|
|||||||
// Autosize plugin
|
// Autosize plugin
|
||||||
const elements = document.querySelectorAll('[data-bs-toggle="autosize"]')
|
const elements = document.querySelectorAll('[data-bs-toggle="autosize"]');
|
||||||
|
|
||||||
if (elements.length) {
|
if (elements.length) {
|
||||||
elements.forEach(function (element) {
|
elements.forEach(function (element) {
|
||||||
window.autosize && window.autosize(element)
|
window.autosize && window.autosize(element);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
21
core/js/src/bootstrap.js
vendored
21
core/js/src/bootstrap.js
vendored
@@ -1,20 +1,3 @@
|
|||||||
export * as Popper from '@popperjs/core'
|
export * as Popper from '@popperjs/core';
|
||||||
|
|
||||||
// Export all Bootstrap components directly for consistent usage
|
export { Dropdown, Tooltip, Popover, Tab, Toast } from 'bootstrap';
|
||||||
export {
|
|
||||||
Alert,
|
|
||||||
Button,
|
|
||||||
Carousel,
|
|
||||||
Collapse,
|
|
||||||
Dropdown,
|
|
||||||
Modal,
|
|
||||||
Offcanvas,
|
|
||||||
Popover,
|
|
||||||
ScrollSpy,
|
|
||||||
Tab,
|
|
||||||
Toast,
|
|
||||||
Tooltip
|
|
||||||
} from 'bootstrap'
|
|
||||||
|
|
||||||
// Re-export everything as namespace for backward compatibility
|
|
||||||
export * as bootstrap from 'bootstrap'
|
|
||||||
@@ -1,25 +1,23 @@
|
|||||||
const elements = document.querySelectorAll('[data-countup]')
|
const elements = document.querySelectorAll('[data-countup]');
|
||||||
|
|
||||||
if (elements.length) {
|
if (elements.length) {
|
||||||
elements.forEach(function (element) {
|
elements.forEach(function (element) {
|
||||||
let options = {}
|
let options = {};
|
||||||
try {
|
try {
|
||||||
const dataOptions = element.getAttribute('data-countup') ? JSON.parse(element.getAttribute('data-countup')) : {}
|
const dataOptions = element.getAttribute('data-countup') ? JSON.parse(element.getAttribute('data-countup')) : {};
|
||||||
options = Object.assign(
|
options = Object.assign({
|
||||||
{
|
'enableScrollSpy': true
|
||||||
enableScrollSpy: true,
|
}, dataOptions);
|
||||||
},
|
|
||||||
dataOptions,
|
|
||||||
)
|
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
|
|
||||||
const value = parseInt(element.innerHTML, 10)
|
const value = parseInt(element.innerHTML, 10);
|
||||||
|
|
||||||
if (window.countUp && window.countUp.CountUp) {
|
if (window.countUp && window.countUp.CountUp) {
|
||||||
const countUp = new window.countUp.CountUp(element, value, options)
|
const countUp = new window.countUp.CountUp(element, value, options);
|
||||||
if (!countUp.error) {
|
if (!countUp.error) {
|
||||||
countUp.start()
|
countUp.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Dropdown } from './bootstrap'
|
import { Dropdown } from './bootstrap';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Core dropdowns
|
Core dropdowns
|
||||||
*/
|
*/
|
||||||
let dropdownTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]'))
|
let dropdownTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]'));
|
||||||
dropdownTriggerList.map(function (dropdownTriggerEl) {
|
dropdownTriggerList.map(function (dropdownTriggerEl) {
|
||||||
let options = {
|
let options = {
|
||||||
boundary: dropdownTriggerEl.getAttribute('data-bs-boundary') === 'viewport' ? document.querySelector('.btn') : 'clippingParents',
|
boundary: dropdownTriggerEl.getAttribute('data-bs-boundary') === 'viewport' ? document.querySelector('.btn') : 'clippingParents',
|
||||||
}
|
}
|
||||||
return new Dropdown(dropdownTriggerEl, options)
|
return new Dropdown(dropdownTriggerEl, options);
|
||||||
})
|
});
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
// Input mask plugin
|
// Input mask plugin
|
||||||
|
|
||||||
var maskElementList = [].slice.call(document.querySelectorAll('[data-mask]'))
|
var maskElementList = [].slice.call(document.querySelectorAll('[data-mask]'));
|
||||||
maskElementList.map(function (maskEl) {
|
maskElementList.map(function (maskEl) {
|
||||||
window.IMask &&
|
window.IMask && new window.IMask(maskEl, {
|
||||||
new window.IMask(maskEl, {
|
|
||||||
mask: maskEl.dataset.mask,
|
mask: maskEl.dataset.mask,
|
||||||
lazy: maskEl.dataset['mask-visible'] === 'true',
|
lazy: maskEl.dataset['mask-visible'] === 'true'
|
||||||
})
|
})
|
||||||
})
|
});
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
import { Popover } from './bootstrap'
|
import { Popover } from './bootstrap';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Core popovers
|
Core popovers
|
||||||
*/
|
*/
|
||||||
let popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
|
let popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
|
||||||
popoverTriggerList.map(function (popoverTriggerEl) {
|
popoverTriggerList.map(function (popoverTriggerEl) {
|
||||||
let options = {
|
let options = {
|
||||||
delay: { show: 50, hide: 50 },
|
delay: {show: 50, hide: 50},
|
||||||
html: popoverTriggerEl.getAttribute('data-bs-html') === 'true',
|
html: popoverTriggerEl.getAttribute('data-bs-html') === "true" ?? false,
|
||||||
placement: popoverTriggerEl.getAttribute('data-bs-placement') ?? 'auto',
|
placement: popoverTriggerEl.getAttribute('data-bs-placement') ?? 'auto'
|
||||||
}
|
};
|
||||||
return new Popover(popoverTriggerEl, options)
|
return new Popover(popoverTriggerEl, options);
|
||||||
})
|
});
|
||||||
@@ -2,22 +2,24 @@
|
|||||||
// Initializes Sortable on elements marked with [data-sortable]
|
// Initializes Sortable on elements marked with [data-sortable]
|
||||||
// Allows options via JSON in data attribute: data-sortable='{"animation":150}'
|
// Allows options via JSON in data attribute: data-sortable='{"animation":150}'
|
||||||
|
|
||||||
const sortableElements = document.querySelectorAll('[data-sortable]')
|
const sortableElements = document.querySelectorAll('[data-sortable]');
|
||||||
|
|
||||||
if (sortableElements.length) {
|
if (sortableElements.length) {
|
||||||
sortableElements.forEach(function (element) {
|
sortableElements.forEach(function (element) {
|
||||||
let options = {}
|
let options = {};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const rawOptions = element.getAttribute('data-sortable')
|
const rawOptions = element.getAttribute('data-sortable');
|
||||||
options = rawOptions ? JSON.parse(rawOptions) : {}
|
options = rawOptions ? JSON.parse(rawOptions) : {};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// ignore invalid JSON
|
// ignore invalid JSON
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.Sortable) {
|
if (window.Sortable) {
|
||||||
// eslint-disable-next-line no-new
|
// eslint-disable-next-line no-new
|
||||||
new window.Sortable(element, options)
|
new window.Sortable(element, options);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
Switch icons
|
Switch icons
|
||||||
*/
|
*/
|
||||||
let switchesTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]'))
|
let switchesTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]'));
|
||||||
switchesTriggerList.map(function (switchTriggerEl) {
|
switchesTriggerList.map(function (switchTriggerEl) {
|
||||||
switchTriggerEl.addEventListener('click', (e) => {
|
switchTriggerEl.addEventListener('click', (e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation();
|
||||||
|
|
||||||
switchTriggerEl.classList.toggle('active')
|
switchTriggerEl.classList.toggle('active');
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
import { Tab } from './bootstrap'
|
import { Tab } from './bootstrap';
|
||||||
|
|
||||||
export const EnableActivationTabsFromLocationHash = () => {
|
export const EnableActivationTabsFromLocationHash = () => {
|
||||||
const locationHash = window.location.hash
|
const locationHash = window.location.hash;
|
||||||
|
|
||||||
if (locationHash) {
|
if (locationHash) {
|
||||||
const tabsList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]'))
|
const tabsList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]'));
|
||||||
const matchedTabs = tabsList.filter((tab) => tab.hash === locationHash)
|
const matchedTabs = tabsList.filter(tab => tab.hash === locationHash);
|
||||||
|
|
||||||
matchedTabs.map((tab) => {
|
matchedTabs.map(tab => {
|
||||||
new Tab(tab).show()
|
new Tab(tab).show();
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
import { Toast } from './bootstrap'
|
import { Toast } from './bootstrap';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Toasts
|
Toasts
|
||||||
*/
|
*/
|
||||||
let toastsTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]'))
|
let toastsTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]'));
|
||||||
toastsTriggerList.map(function (toastTriggerEl) {
|
toastsTriggerList.map(function (toastTriggerEl) {
|
||||||
if (!toastTriggerEl.hasAttribute('data-bs-target')) {
|
if (!toastTriggerEl.hasAttribute('data-bs-target')) {
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const toastEl = new Toast(toastTriggerEl.getAttribute('data-bs-target'))
|
const toastEl = new Toast(toastTriggerEl.getAttribute('data-bs-target'));
|
||||||
|
|
||||||
toastTriggerEl.addEventListener('click', () => {
|
toastTriggerEl.addEventListener('click', () => {
|
||||||
toastEl.show()
|
toastEl.show()
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user