gnui 1.2.19 → 1.2.21

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 (79) hide show
  1. package/@types/gnui.d.ts +8 -0
  2. package/dist/js/gnui.esm.js +847 -263
  3. package/dist/js/gnui.js +847 -263
  4. package/dist/js/gnui.min.js +6 -6
  5. package/dist/styles/default.css +10743 -20757
  6. package/dist/styles/gpi.css +10773 -20787
  7. package/dist/styles/green24.css +11407 -21435
  8. package/dist/styles/insights.css +10759 -20774
  9. package/dist/styles/nac.css +10773 -20796
  10. package/dist/styles/ztnac.css +11407 -21436
  11. package/package.json +9 -3
  12. package/styleguide/assets/components.js +213 -12
  13. package/styleguide/assets/js/gnui.js +847 -263
  14. package/styleguide/assets/js/gnui.min.js +6 -6
  15. package/styleguide/assets/styles/default.css +10743 -20757
  16. package/styleguide/assets/styles/gpi.css +10773 -20787
  17. package/styleguide/assets/styles/green24.css +11407 -21435
  18. package/styleguide/assets/styles/insights.css +10759 -20774
  19. package/styleguide/assets/styles/nac.css +10773 -20796
  20. package/styleguide/assets/styles/ztnac.css +11407 -21436
  21. package/styleguide/category/COLOR/index.html +1 -1
  22. package/styleguide/category/COMPONENT/Alert(js)/index.html +1 -1
  23. package/styleguide/category/COMPONENT/Bignumber/index.html +1 -1
  24. package/styleguide/category/COMPONENT/Breadcrumb/index.html +1 -1
  25. package/styleguide/category/COMPONENT/Calendar(js)/index.html +1 -1
  26. package/styleguide/category/COMPONENT/Card/index.html +1 -1
  27. package/styleguide/category/COMPONENT/Chart(js)/index.html +1 -1
  28. package/styleguide/category/COMPONENT/Datagrid(js)/index.html +109 -11
  29. package/styleguide/category/COMPONENT/Datalist(js)/index.html +1 -1
  30. package/styleguide/category/COMPONENT/Growl(js)/index.html +1 -1
  31. package/styleguide/category/COMPONENT/JsonView(js)/index.html +1 -1
  32. package/styleguide/category/COMPONENT/Loader(js)/index.html +1 -1
  33. package/styleguide/category/COMPONENT/MenuButton(js)/index.html +169 -21
  34. package/styleguide/category/COMPONENT/Message(js)/index.html +1 -1
  35. package/styleguide/category/COMPONENT/Modal(js)/index.html +31 -1
  36. package/styleguide/category/COMPONENT/Pagination(js)/index.html +1 -1
  37. package/styleguide/category/COMPONENT/Panel/index.html +1 -1
  38. package/styleguide/category/COMPONENT/Progressbar(js)/index.html +1 -1
  39. package/styleguide/category/COMPONENT/Tab(js)/index.html +1 -1
  40. package/styleguide/category/COMPONENT/Tagcloud(js)/index.html +1 -1
  41. package/styleguide/category/COMPONENT/Tooltip(js)/index.html +1 -1
  42. package/styleguide/category/COMPONENT/Tree(js)/index.html +98 -19
  43. package/styleguide/category/CONTROLS/Button(js)/index.html +1 -1
  44. package/styleguide/category/CONTROLS/Checkbox/index.html +1 -1
  45. package/styleguide/category/CONTROLS/Colorpicker(js)/index.html +1 -1
  46. package/styleguide/category/CONTROLS/Datepicker(js)/index.html +1 -1
  47. package/styleguide/category/CONTROLS/Dropdown(js)/index.html +67 -10
  48. package/styleguide/category/CONTROLS/File/index.html +1 -1
  49. package/styleguide/category/CONTROLS/Form/Control/index.html +1 -1
  50. package/styleguide/category/CONTROLS/Form/Field/index.html +54 -2
  51. package/styleguide/category/CONTROLS/Form/Plain/index.html +2 -2
  52. package/styleguide/category/CONTROLS/Input/index.html +1 -1
  53. package/styleguide/category/CONTROLS/MultiText(js)/index.html +32 -1
  54. package/styleguide/category/CONTROLS/Picklist(js)/index.html +67 -13
  55. package/styleguide/category/CONTROLS/Radio/index.html +1 -1
  56. package/styleguide/category/CONTROLS/Select/index.html +1 -1
  57. package/styleguide/category/CONTROLS/SelectButton(js)/index.html +2 -2
  58. package/styleguide/category/CONTROLS/Slider/index.html +1 -1
  59. package/styleguide/category/CONTROLS/SortableList(js)/index.html +2 -2
  60. package/styleguide/category/CONTROLS/Switch(js)/index.html +1 -1
  61. package/styleguide/category/CONTROLS/SyntaxInput(js)/index.html +1 -1
  62. package/styleguide/category/CONTROLS/Textarea/index.html +2 -2
  63. package/styleguide/category/CONTROLS/Time(js)/index.html +2 -2
  64. package/styleguide/category/ELEMENTS/Box/index.html +1 -1
  65. package/styleguide/category/ELEMENTS/Icon/index.html +1 -1
  66. package/styleguide/category/ELEMENTS/Image/index.html +1 -1
  67. package/styleguide/category/ELEMENTS/List/index.html +1 -1
  68. package/styleguide/category/ELEMENTS/Table/index.html +1 -1
  69. package/styleguide/category/ELEMENTS/Tag/index.html +1 -1
  70. package/styleguide/category/ELEMENTS/Title/index.html +1 -1
  71. package/styleguide/category/LAYOUT/Container/index.html +1 -1
  72. package/styleguide/category/LAYOUT/Grid/index.html +1 -1
  73. package/styleguide/category/LAYOUT/Splitter(js)/index.html +1 -1
  74. package/styleguide/category/UTILITY/index.html +9 -2
  75. package/styleguide/category/Utils/index.html +1 -1
  76. package/styleguide/color.html +1 -1
  77. package/styleguide/index.html +1 -1
  78. package/styleguide/tag/javascript/index.html +4680 -4183
  79. package/styleguide/tag/v.0.1.0/index.html +5762 -5206
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "1.2.19",
7
+ "version": "1.2.21",
8
8
  "type": "module",
9
9
  "main": "dist/js/gnui.js",
10
10
  "types": "@types/gnui.d.ts",
@@ -29,7 +29,7 @@
29
29
  ],
30
30
  "scripts": {
31
31
  "build": "npm install && npm run build-clean && npm run build-sass && npm run build-autoprefix && npm run docs && npm run build-ts",
32
- "build-autoprefix": "postcss css/ --use autoprefixer --no-map --dir dist/styles",
32
+ "build-autoprefix": "postcss css/ --no-map --dir dist/styles",
33
33
  "build-clean": "rimraf css styleguide dist",
34
34
  "build-sass": "sass --no-source-map theme/:css/",
35
35
  "build-ts": "rollup -c",
@@ -37,7 +37,11 @@
37
37
  "prettier": "npx prettier --write .",
38
38
  "eslint": "npx eslint --fix ./ts/**/*.{ts,tsx} ./template_docs/**/*.js",
39
39
  "server": "http-server ./ -a localhost --port 9002 -s -o ./styleguide --watch",
40
- "dev": "npm-watch"
40
+ "dev": "npm-watch",
41
+ "test": "playwright test --project=components",
42
+ "test:all": "playwright test",
43
+ "test:ui": "playwright test --project=components --ui",
44
+ "test:integration": "playwright test --project=integration-chromium --project=integration-firefox"
41
45
  },
42
46
  "watch": {
43
47
  "build-sass": {
@@ -92,6 +96,7 @@
92
96
  "@babel/plugin-proposal-class-properties": "^7.8.3",
93
97
  "@babel/plugin-transform-react-jsx": "^7.23.4",
94
98
  "@babel/preset-env": "^7.23.6",
99
+ "@playwright/test": "^1.58.2",
95
100
  "@rollup/plugin-babel": "^6.0.4",
96
101
  "@rollup/plugin-commonjs": "^25.0.7",
97
102
  "@rollup/plugin-node-resolve": "^15.2.3",
@@ -109,6 +114,7 @@
109
114
  "node-aigis": "^1.4.1",
110
115
  "npm-watch": "^0.11.0",
111
116
  "postcss-cli": "^11.0.0",
117
+ "postcss-discard-comments": "^7.0.5",
112
118
  "prettier": "^3.1.1",
113
119
  "rimraf": "^5.0.5",
114
120
  "rollup": "^4.9.1",
@@ -76,6 +76,10 @@ const components = {
76
76
  {
77
77
  name: 'data2',
78
78
  data: [50, 20, 10, 40, 15, 25]
79
+ },
80
+ {
81
+ name: 'data3',
82
+ data: [20, 100, 400, 150, 250, 30]
79
83
  }
80
84
  ],
81
85
  xaxis: {
@@ -94,7 +98,16 @@ const components = {
94
98
  {
95
99
  name: 'data1',
96
100
  data: [30, 200, 100, 400, 150, 250]
101
+ },
102
+ {
103
+ name: 'data2',
104
+ data: [50, 20, 10, 40, 15, 25]
105
+ },
106
+ {
107
+ name: 'data3',
108
+ data: [20, 100, 400, 150, 250, 30]
97
109
  }
110
+
98
111
  ],
99
112
  xaxis: {
100
113
  type: 'datetime',
@@ -117,6 +130,10 @@ const components = {
117
130
  {
118
131
  name: 'data2',
119
132
  data: [50, 20, 10, 40, 15, 25]
133
+ },
134
+ {
135
+ name: 'data3',
136
+ data: [20, 100, 400, 150, 250, 30]
120
137
  }
121
138
  ],
122
139
  width: '45%'
@@ -311,6 +328,20 @@ const components = {
311
328
  hasSearch: true,
312
329
  color: 'danger'
313
330
  });
331
+ Gn.create('dropdown', {
332
+ target: '.new-dropdown5',
333
+ onChange: function (val, txt, values) {
334
+ console.log('선택된 값은 [ ' + val + ' ]입니다.');
335
+ },
336
+ width: '300px',
337
+ data: [
338
+ { value: '1', cols: ['항목1', '카테고리A', '1000'] },
339
+ { value: '2', cols: ['항목2', '카테고리B', '2000'] },
340
+ { value: '3', cols: ['항목3', '카테고리C', '3000'] },
341
+ { value: '4', cols: ['항목4', '카테고리A', '4000'] },
342
+ { value: '5', cols: ['항목5', '카테고리B', '5000'] }
343
+ ]
344
+ });
314
345
  },
315
346
  Datagrid: function () {
316
347
  Gn.create('datagrid', {
@@ -612,6 +643,64 @@ const components = {
612
643
  console.log(updatedData);
613
644
  }
614
645
  });
646
+ Gn.create('datagrid', {
647
+ target: '.new-grid4',
648
+ orientation: 'horizontal',
649
+ orientationOptions: {
650
+ columns: 'auto-fit',
651
+ minWidth: '240px'
652
+ },
653
+ hasHeader: true,
654
+ hasCheck: true,
655
+ hasDelete: true,
656
+ headers: [
657
+ {
658
+ label: '이름',
659
+ key: 'name'
660
+ },
661
+ {
662
+ label: '부서',
663
+ key: 'team'
664
+ },
665
+ {
666
+ label: '상태',
667
+ key: 'status',
668
+ template: function (k, d) {
669
+ return '<span class="tag is-info">' + d[k] + '</span>';
670
+ }
671
+ }
672
+ ],
673
+ data: [
674
+ {
675
+ name: '홍길동',
676
+ team: '플랫폼개발',
677
+ status: 'ACTIVE'
678
+ },
679
+ {
680
+ name: '김철수',
681
+ team: '디자인시스템',
682
+ status: 'PENDING'
683
+ },
684
+ {
685
+ name: '이영희',
686
+ team: 'QA',
687
+ status: 'DONE'
688
+ },
689
+ {
690
+ name: '박민수',
691
+ team: '프론트엔드',
692
+ status: 'ACTIVE'
693
+ },
694
+ {
695
+ name: '최지우',
696
+ team: '서비스기획',
697
+ status: 'REVIEW'
698
+ }
699
+ ],
700
+ textSets: {
701
+ deleteConfirmMessage: '카드를 삭제하시겠습니까?'
702
+ }
703
+ });
615
704
  },
616
705
  Datalist: function () {
617
706
  Gn.create('datalist', {
@@ -1287,7 +1376,7 @@ const components = {
1287
1376
  },
1288
1377
  MenuButton: function () {
1289
1378
  Gn.create('menubutton', {
1290
- target: 'button[name=new-button]',
1379
+ target: '.new-button',
1291
1380
  size: 'normal',
1292
1381
  textSets: {
1293
1382
  buttonText: '메뉴버튼'
@@ -1319,8 +1408,33 @@ const components = {
1319
1408
  ]
1320
1409
  ]
1321
1410
  });
1411
+ // 다중 컬럼 예제
1412
+ Gn.create('menubutton', {
1413
+ target: '.new-menubutton-cols',
1414
+ size: 'normal',
1415
+ textSets: {
1416
+ buttonText: '다중 컬럼 메뉴'
1417
+ },
1418
+ onSelect: function (menu) {
1419
+ console.log('선택된 메뉴는 ' + menu);
1420
+ },
1421
+ data: [
1422
+ {
1423
+ value: 'menu1',
1424
+ cols: ['item1', '1', '상세정보1']
1425
+ },
1426
+ {
1427
+ value: 'menu2',
1428
+ cols: ['item2', '2', '상세정보2']
1429
+ },
1430
+ {
1431
+ value: 'menu3',
1432
+ cols: ['item3', '3', '상세정보3']
1433
+ }
1434
+ ]
1435
+ });
1322
1436
  Gn.create('menubutton', {
1323
- target: 'button[name=new-button2]',
1437
+ target: '.new-button2',
1324
1438
  style: 'simple',
1325
1439
  icon: 'list',
1326
1440
  data: [
@@ -1336,7 +1450,7 @@ const components = {
1336
1450
  });
1337
1451
  // 서브메뉴 테스트
1338
1452
  Gn.create('menubutton', {
1339
- target: 'button[name=new-button-submenu]',
1453
+ target: '.new-button-submenu',
1340
1454
  size: 'normal',
1341
1455
  textSets: {
1342
1456
  buttonText: '편집 메뉴'
@@ -1428,6 +1542,25 @@ const components = {
1428
1542
  });
1429
1543
  }
1430
1544
  });
1545
+ // Modal(Extra) 예제 버튼 바인딩
1546
+ Gn.create('button', {
1547
+ target: '.new-modal-extra',
1548
+ onClick: function () {
1549
+ console.log('[Guide][Modal] .new-modal-extra clicked');
1550
+ Gn.create('modal', {
1551
+ textSets: { title: 'Extra Buttons Demo' },
1552
+ hasCancel: true,
1553
+ height: 400,
1554
+ extraButtons: [
1555
+ { key: 'edit-template', label: '수정(템플릿만적용)', className: 'is-small is-primary' },
1556
+ { key: 'edit-bulk', label: '수정(용도일괄적용)', className: 'is-small is-mono' }
1557
+ ],
1558
+ onExtra: function (actionKey) {
1559
+ console.log('extra clicked:', actionKey);
1560
+ }
1561
+ });
1562
+ }
1563
+ });
1431
1564
  },
1432
1565
  Pagination: function () {
1433
1566
  Gn.create('pagination', {
@@ -1453,6 +1586,19 @@ const components = {
1453
1586
  rows: 1,
1454
1587
  maxlength: 300
1455
1588
  });
1589
+ Gn.create('multitext', {
1590
+ target: '.message-multitext',
1591
+ lang: ['ko', 'en'],
1592
+ value: {
1593
+ ko: '옵션 문구 예시',
1594
+ en: 'message example'
1595
+ },
1596
+ maxlength: 120,
1597
+ useMaxLengthMessage: true,
1598
+ textSets: {
1599
+ maxLengthMessage: '{{maxlength}}자 입력 가능합니다.'
1600
+ }
1601
+ });
1456
1602
  },
1457
1603
  Picklist: function () {
1458
1604
  Gn.create('picklist', {
@@ -1497,6 +1643,22 @@ const components = {
1497
1643
  targetCaption: '할당됨'
1498
1644
  }
1499
1645
  });
1646
+ Gn.create('picklist', {
1647
+ target: '.new-picklist-cols',
1648
+ data: {
1649
+ source: [
1650
+ { value: '항목1', cols: ['item1', '1', '상세정보1'] },
1651
+ { value: '항목2', cols: ['item2', '2', '상세정보2'] },
1652
+ { value: '항목3', cols: ['item3', '3', '상세정보3'] },
1653
+ { value: '항목4', cols: ['item4', '4', '상세정보4'] },
1654
+ { value: '항목5', cols: ['item5', '5', '상세정보5'] }
1655
+ ],
1656
+ target: []
1657
+ },
1658
+ direction: 'vertical',
1659
+ width: '500px',
1660
+ height: 150
1661
+ });
1500
1662
  },
1501
1663
  SortableList: function () {
1502
1664
  Gn.create('sortablelist', {
@@ -1906,59 +2068,98 @@ const components = {
1906
2068
  }
1907
2069
  ],
1908
2070
  color: 'success',
1909
- multiple: true
2071
+ hasCheck: false
1910
2072
  });
1911
2073
  Gn.create('tree', {
1912
2074
  target: '.new-tree3',
1913
2075
  data: [
1914
2076
  {
1915
2077
  text: 'Genians',
2078
+ value: 'genians',
1916
2079
  actived: true,
1917
2080
  opened: true,
1918
2081
  child: [
1919
2082
  {
1920
- text: 'GNUI'
2083
+ text: 'GNUI',
2084
+ value: 'gnui'
1921
2085
  },
1922
2086
  {
1923
2087
  text: 'GNUI core',
2088
+ value: 'gnui-core',
1924
2089
  opened: true,
1925
2090
  child: [
1926
2091
  {
1927
- text: 'GNUI'
2092
+ text: 'GNUI',
2093
+ value: 'gnui-nested'
1928
2094
  },
1929
2095
  {
1930
- text: 'GNUI core'
2096
+ text: 'GNUI core',
2097
+ value: 'gnui-core-nested'
1931
2098
  },
1932
2099
  {
1933
2100
  text: 'GNConfEngine',
2101
+ value: 'gnconfengine-nested',
1934
2102
  selected: true
1935
2103
  }
1936
2104
  ]
1937
2105
  },
1938
2106
  {
1939
- text: 'GNConfEngine'
2107
+ text: 'GNConfEngine',
2108
+ value: 'gnconfengine'
1940
2109
  }
1941
2110
  ]
1942
2111
  },
1943
2112
  {
1944
2113
  text: 'R&D Center',
2114
+ value: 'rnd-center',
1945
2115
  child: [
1946
2116
  {
1947
- text: 'GNUI'
2117
+ text: 'GNUI',
2118
+ value: 'rnd-gnui'
1948
2119
  },
1949
2120
  {
1950
- text: 'GNUI core'
2121
+ text: 'GNUI core',
2122
+ value: 'rnd-gnui-core'
1951
2123
  },
1952
2124
  {
1953
- text: 'GNConfEngine'
2125
+ text: 'GNConfEngine',
2126
+ value: 'rnd-gnconfengine'
1954
2127
  }
1955
2128
  ]
1956
2129
  },
1957
2130
  {
1958
- text: 'Front-end'
2131
+ text: 'Front-end',
2132
+ value: 'frontend'
1959
2133
  }
1960
2134
  ],
1961
2135
  hasCheck: true
1962
2136
  });
2137
+ Gn.create('tree', {
2138
+ target: '.new-tree4',
2139
+ data: [
2140
+ {
2141
+ text: 'Disabled Root',
2142
+ value: 'disabled-root',
2143
+ opened: true,
2144
+ child: [
2145
+ {
2146
+ text: 'Locked Node',
2147
+ value: 'locked-node',
2148
+ selected: true
2149
+ },
2150
+ {
2151
+ text: 'Review Only',
2152
+ value: 'review-only'
2153
+ }
2154
+ ]
2155
+ },
2156
+ {
2157
+ text: 'Disabled Leaf',
2158
+ value: 'disabled-leaf'
2159
+ }
2160
+ ],
2161
+ hasCheck: true,
2162
+ disabled: true
2163
+ });
1963
2164
  }
1964
2165
  };