@@ -17,13 +17,14 @@ A modern, sleek Vue 3 component for viewing, editing, and manipulating JSON data
1717- 📱 ** Responsive Design** : Works on desktop and mobile devices
1818- ⌨️ ** Keyboard Navigation** : Full keyboard support
1919- ♿ ** Accessibility** : Screen reader support with proper ARIA labels
20+ - 🎯 ** Icon-Only Mode** : Option to hide button text labels for compact interface
2021- 🚀 ** Dual Build System** : Library build for npm + Demo build for preview
2122
2223## 🚀 Installation
2324
2425This component is now available on npm as ` @ctechhindi/vue3-json-viewer `
2526
26- [ @ctechhindi/vue3-json-viewer ] ( https://www.npmjs.com/package/@ctechhindi/vue3-json-viewer )
27+ [ @ctechhindi/vue3-json-viewer ] ( https://www.npmjs.com/package/@ctechhindi/vue3-json-viewer )
2728
2829``` bash
2930npm install @ctechhindi/vue3-json-viewer
@@ -53,8 +54,8 @@ yarn add @ctechhindi/vue3-json-viewer
5354</template>
5455
5556<script setup lang="ts">
56- import { ref } from ' vue'
57- import JsonViewer from ' @ctechhindi/vue3-json-viewer'
57+ import { ref } from " vue";
58+ import JsonViewer from " @ctechhindi/vue3-json-viewer";
5859
5960const jsonData = ref({
6061 name: "John Doe",
@@ -63,13 +64,13 @@ const jsonData = ref({
6364 hobbies: ["reading", "coding"],
6465 address: {
6566 street: "123 Main St",
66- city: "Anytown"
67- }
68- })
67+ city: "Anytown",
68+ },
69+ });
6970
7071const handleDataUpdate = (newData: any) => {
71- console.log(' Data updated:' , newData)
72- }
72+ console.log(" Data updated:" , newData);
73+ };
7374</script>
7475```
7576
@@ -84,6 +85,7 @@ const handleDataUpdate = (newData: any) => {
8485 default-mode="tree"
8586 :show-line-numbers="true"
8687 :max-depth="3"
88+ :hide-action-text="false"
8789 @update:data="handleDataUpdate"
8890 @node-click="handleNodeClick"
8991 @node-expand="handleNodeExpand"
@@ -95,76 +97,77 @@ const handleDataUpdate = (newData: any) => {
9597</template>
9698
9799<script setup lang="ts">
98- import { ref } from ' vue'
99- import JsonViewer from ' @ctechhindi/vue3-json-viewer'
100+ import { ref } from " vue";
101+ import JsonViewer from " @ctechhindi/vue3-json-viewer";
100102
101103const complexData = ref({
102104 // Your complex JSON data
103- })
105+ });
104106
105- const currentTheme = ref<' light' | ' dark'>(' light')
107+ const currentTheme = ref<" light" | " dark">(" light");
106108
107109// Event handlers
108110const handleDataUpdate = (newData: any) => {
109- console.log(' Data updated:' , newData)
110- }
111+ console.log(" Data updated:" , newData);
112+ };
111113
112114const handleNodeClick = (node: any) => {
113- console.log(' Node clicked:' , node)
114- }
115+ console.log(" Node clicked:" , node);
116+ };
115117
116118const handleNodeExpand = (node: any) => {
117- console.log(' Node expanded:' , node)
118- }
119+ console.log(" Node expanded:" , node);
120+ };
119121
120122const handleNodeCollapse = (node: any) => {
121- console.log(' Node collapsed:' , node)
122- }
123+ console.log(" Node collapsed:" , node);
124+ };
123125
124126const handleEditStart = () => {
125- console.log(' Edit mode started')
126- }
127+ console.log(" Edit mode started");
128+ };
127129
128130const handleEditSave = (data: any) => {
129- console.log(' Changes saved:' , data)
130- }
131+ console.log(" Changes saved:" , data);
132+ };
131133
132134const handleEditCancel = () => {
133- console.log(' Edit cancelled')
134- }
135+ console.log(" Edit cancelled");
136+ };
135137</script>
136138```
137139
138140## 📋 Props
139141
140- | Prop | Type | Default | Description |
141- | ------| ------| ---------| -------------|
142- | ` data ` | ` any ` | ` {} ` | JSON data to display |
143- | ` editable ` | ` boolean ` | ` true ` | Enable editing capabilities |
144- | ` theme ` | ` 'light' \| 'dark' ` | ` 'light' ` | Theme preference |
145- | ` defaultMode ` | ` 'tree' \| 'text' ` | ` 'tree' ` | Default view mode |
146- | ` showLineNumbers ` | ` boolean ` | ` false ` | Show line numbers in text mode |
147- | ` maxDepth ` | ` number ` | ` 3 ` | Maximum depth to expand by default |
142+ | Prop | Type | Default | Description |
143+ | ----------------- | ------------------- | --------- | ------------------------------------ |
144+ | ` data ` | ` any ` | ` {} ` | JSON data to display |
145+ | ` editable ` | ` boolean ` | ` true ` | Enable editing capabilities |
146+ | ` theme ` | ` 'light' \| 'dark' ` | ` 'light' ` | Theme preference |
147+ | ` defaultMode ` | ` 'tree' \| 'text' ` | ` 'tree' ` | Default view mode |
148+ | ` showLineNumbers ` | ` boolean ` | ` false ` | Show line numbers in text mode |
149+ | ` maxDepth ` | ` number ` | ` 3 ` | Maximum depth to expand by default |
150+ | ` hideActionText ` | ` boolean ` | ` false ` | Hide button text labels (icons only) |
148151
149152## 🎭 Events
150153
151- | Event | Payload | Description |
152- | -------| ---------| -------------|
153- | ` update:data ` | ` newData: any ` | Data changed event |
154- | ` node-click ` | ` node: JsonNode ` | Node clicked event |
155- | ` node-expand ` | ` node: JsonNode ` | Node expanded event |
154+ | Event | Payload | Description |
155+ | --------------- | ---------------- | -------------------- |
156+ | ` update:data ` | ` newData: any ` | Data changed event |
157+ | ` node-click ` | ` node: JsonNode ` | Node clicked event |
158+ | ` node-expand ` | ` node: JsonNode ` | Node expanded event |
156159| ` node-collapse ` | ` node: JsonNode ` | Node collapsed event |
157- | ` edit-start ` | - | Edit mode started |
158- | ` edit-save ` | ` data: any ` | Changes saved |
159- | ` edit-cancel ` | - | Edit mode cancelled |
160+ | ` edit-start ` | - | Edit mode started |
161+ | ` edit-save ` | ` data: any ` | Changes saved |
162+ | ` edit-cancel ` | - | Edit mode cancelled |
160163
161164## 🏗️ Data Structure
162165
163166``` typescript
164167interface JsonNode {
165168 key: string ;
166169 value: any ;
167- type: ' string' | ' number' | ' boolean' | ' object' | ' array' | ' null' ;
170+ type: " string" | " number" | " boolean" | " object" | " array" | " null" ;
168171 path: string [];
169172 level: number ;
170173 expanded? : boolean ;
@@ -223,6 +226,7 @@ npm run preview
223226### Build Outputs
224227
225228- ** ` npm run build ` ** → Creates ` dist/ ` folder with library files:
229+
226230 - ` json-viewer.umd.js ` - UMD bundle
227231 - ` json-viewer.mjs ` - ES module bundle
228232 - ` style.css ` - Component styles
0 commit comments