34 changed files with 527 additions and 145 deletions
@ -1,3 +1,3 @@ |
|||||
/functions/mock/** |
/lambda/mock/** |
||||
/scripts |
/scripts |
||||
/config |
/config |
||||
|
|||||
@ -1,5 +0,0 @@ |
|||||
{ |
|
||||
"projects": { |
|
||||
"default": "antd-pro" |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,130 @@ |
|||||
|
[English](./README.md) | [简体中文](./README.zh-CN.md) | [Русский](./README.ru-RU.md) | Türkçe |
||||
|
|
||||
|
<h1 align="center">Ant Design Pro</h1> |
||||
|
|
||||
|
<div align="center"> |
||||
|
|
||||
|
React ile kurumsal uygulamalar için taslak olarak geliştirilmiş kullanıma hazır bir UI çözümü. |
||||
|
|
||||
|
[](https://circleci.com/gh/ant-design/ant-design-pro/) |
||||
|
[](https://ci.appveyor.com/project/afc163/ant-design-pro/branch/master) |
||||
|
[](https://david-dm.org/ant-design/ant-design-pro) |
||||
|
[](https://david-dm.org/ant-design/ant-design-pro?type=dev) |
||||
|
[](https://gitter.im/ant-design/pro-english?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)(🇺🇸) |
||||
|
[](https://gitter.im/ant-design/ant-design-pro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)(🇨🇳) |
||||
|
[](https://app.netlify.com/sites/ant-design-pro/deploys) |
||||
|
 |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
- Önizleme: http://preview.pro.ant.design |
||||
|
- Anasayfa: http://pro.ant.design |
||||
|
- Dokümantasyon: http://pro.ant.design/docs/getting-started |
||||
|
- ChangeLog: http://pro.ant.design/docs/changelog |
||||
|
- SSS: http://pro.ant.design/docs/faq |
||||
|
- Çinde barındırılan site: http://ant-design-pro.gitee.io |
||||
|
|
||||
|
## 2.0 Versiyonu Şimdi Yayında! 🎉🎉🎉 |
||||
|
[Announcing Ant Design Pro 2.0.0](https://medium.com/ant-design/beautiful-and-powerful-ant-design-pro-2-0-release-51358da5af95) |
||||
|
|
||||
|
## Çeviri Desteği :loudspeaker: |
||||
|
|
||||
|
Çeviriler için yardımınıza ihtiyacımız var: https://github.com/ant-design/ant-design-pro/issues/120 |
||||
|
|
||||
|
## Özellikler |
||||
|
|
||||
|
- :gem: **Zarif Tasarım**: Buradan [Ant Design özellikleri](http://ant.design/) |
||||
|
- :triangular_ruler: **Ortak Şablonlar**: Kurumsal uygulamalar için şablonlar |
||||
|
- :rocket: **Sanatsal gelişim durumu**: Newest development stack of React/umi/dva/antd |
||||
|
- :iphone: **Responsive**: Değişken ekran boyutları için tasarlanmıştır |
||||
|
- :art: **Tema Kullanımı**: Basit ayarlar ile özelleştirilebilir tema |
||||
|
- :globe_with_meridians: **Uluslararası**: Built-in i18n solution |
||||
|
- :gear: **Best Practices**: İyi kod için sağlam iş akışı |
||||
|
- :1234: **Mock Geliştirme**: Model(Mock) geliştirmeler için kolay çözüm |
||||
|
- :white_check_mark: **UI Testi**: Unit ve e2e testleri ile güvenli sürdürülebilirlik |
||||
|
|
||||
|
## Şablonlar |
||||
|
|
||||
|
``` |
||||
|
- Dashboard |
||||
|
- Analitik |
||||
|
- Monitör |
||||
|
- Çalışma alanı |
||||
|
- Form |
||||
|
- Basit Form |
||||
|
- Step Form |
||||
|
- Gelişmiş Form |
||||
|
- List |
||||
|
- Standard Tablo |
||||
|
- Standard Liste |
||||
|
- Kart Liste |
||||
|
- Arama Listesi (Project/Applications/Article) |
||||
|
- Profil |
||||
|
- Basit Profil |
||||
|
- Gelişmiş Profil |
||||
|
- Hesap |
||||
|
- Hesap Yönetimi |
||||
|
- Hesap Ayarları |
||||
|
- Sonuç |
||||
|
- Başarılı |
||||
|
- Hatalı |
||||
|
- Hatalar |
||||
|
- 403 |
||||
|
- 404 |
||||
|
- 500 |
||||
|
- Kullanıcı |
||||
|
- Giriş |
||||
|
- Kayıt |
||||
|
- Kayıt Sonucu |
||||
|
``` |
||||
|
|
||||
|
## Kullanım |
||||
|
|
||||
|
### bash ile kullanım |
||||
|
|
||||
|
```bash |
||||
|
$ git clone https://github.com/ant-design/ant-design-pro.git --depth=1 |
||||
|
$ cd ant-design-pro |
||||
|
$ npm install |
||||
|
$ npm start # visit http://localhost:8000 |
||||
|
``` |
||||
|
|
||||
|
### Docker ile kullanım |
||||
|
|
||||
|
```bash |
||||
|
# preview |
||||
|
$ docker pull chenshuai2144/ant-design-pro |
||||
|
$ docker run -p 80:80 chenshuai2144/ant-design-pro |
||||
|
# open http://localhost |
||||
|
|
||||
|
# dev |
||||
|
$ npm run docker:dev |
||||
|
|
||||
|
# build |
||||
|
$ npm run docker:build |
||||
|
|
||||
|
|
||||
|
# production dev |
||||
|
$ npm run docker-prod:dev |
||||
|
|
||||
|
# production build |
||||
|
$ npm run docker-prod:build |
||||
|
``` |
||||
|
|
||||
|
Daha fazla talimat için [dokümantasyon](http://pro.ant.design/docs/getting-started) sayfasına göz atın. |
||||
|
|
||||
|
## Tarayıcı desteği |
||||
|
|
||||
|
Modern internet tarayıcıları ve IE11. |
||||
|
|
||||
|
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png" alt="Opera" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Opera | |
||||
|
| --------- | --------- | --------- | --------- | --------- | |
||||
|
| IE11, Edge| son 2 versiyon | son 2 versiyon | son 2 versiyon | son 2 versiyon |
||||
|
|
||||
|
## Destek |
||||
|
|
||||
|
Her türlü desteğinize açığız, bu projeye nasıl katkıda bulunabileceğinize dair bazı örnekler: |
||||
|
|
||||
|
- Günlük işinizde Ant Design Pro kullanın. |
||||
|
- Hataları bildirmek veya soru sormak için [issues](http://github.com/ant-design/ant-design-pro/issues) gönderin. |
||||
|
- kodumuzu geliştirmek için [pull requests](http://github.com/ant-design/ant-design-pro/pulls) gönderin. |
||||
@ -1,13 +0,0 @@ |
|||||
{ |
|
||||
"hosting": { |
|
||||
"public": "dist", |
|
||||
"rewrites": [ |
|
||||
{ "source": "/api/**", "function": "api" }, |
|
||||
{ |
|
||||
"source": "**", |
|
||||
"destination": "/index.html" |
|
||||
} |
|
||||
], |
|
||||
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"] |
|
||||
} |
|
||||
} |
|
||||
@ -1,10 +0,0 @@ |
|||||
// [START functionsimport]
|
|
||||
const functions = require('firebase-functions'); |
|
||||
const express = require('express'); |
|
||||
|
|
||||
const matchMock = require('./matchMock'); |
|
||||
|
|
||||
const app = express(); |
|
||||
|
|
||||
app.use(matchMock); |
|
||||
exports.api = functions.https.onRequest(app); |
|
||||
@ -0,0 +1,11 @@ |
|||||
|
// [START functions import]
|
||||
|
const express = require('express'); |
||||
|
const serverLess = require('serverless-http'); |
||||
|
|
||||
|
const matchMock = require('./mock/matchMock'); |
||||
|
|
||||
|
const app = express(); |
||||
|
|
||||
|
app.use(matchMock); |
||||
|
|
||||
|
exports.handler = serverLess(app); |
||||
@ -1,12 +1,15 @@ |
|||||
|
[build] |
||||
|
functions = "./functions" |
||||
|
|
||||
[[redirects]] |
[[redirects]] |
||||
from = "/api/*" |
from = "/api/*" |
||||
to = "https://us-central1-antd-pro.cloudfunctions.net/api/api/:splat" |
to = "/.netlify/functions/api/:splat" |
||||
status = 200 |
status = 200 |
||||
force = true |
force = true |
||||
[redirects.headers] |
[redirects.headers] |
||||
X-From = "Netlify" |
X-From = "Netlify" |
||||
X-Api-Key = "some-api-key-string" |
X-Api-Key = "some-api-key-string" |
||||
|
|
||||
[[redirects]] |
[[redirects]] |
||||
from = "/*" |
from = "/*" |
||||
to = "/index.html" |
to = "/index.html" |
||||
|
|||||
@ -1,3 +1,3 @@ |
|||||
const generateMock = require('merge-umi-mock-data'); |
const generateMock = require('merge-umi-mock-data'); |
||||
const path = require('path'); |
const path = require('path'); |
||||
generateMock(path.join(__dirname, '../mock'), path.join(__dirname, '../functions/mock/index.js')); |
generateMock(path.join(__dirname, '../mock'), path.join(__dirname, '../lambda/mock/index.js')); |
||||
|
|||||
@ -0,0 +1,12 @@ |
|||||
|
import React from 'react'; |
||||
|
import { DropDownProps } from 'antd/lib/dropdown'; |
||||
|
|
||||
|
declare type OverlayFunc = () => React.ReactNode; |
||||
|
|
||||
|
export interface HeaderDropdownProps extends DropDownProps { |
||||
|
overlayClassName?: string; |
||||
|
overlay: React.ReactNode | OverlayFunc; |
||||
|
placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter'; |
||||
|
} |
||||
|
|
||||
|
export default class HeaderDropdown extends React.Component<HeaderDropdownProps, any> {} |
||||
@ -0,0 +1,15 @@ |
|||||
|
import React from 'react'; |
||||
|
export interface HeaderSearchProps { |
||||
|
placeholder?: string; |
||||
|
dataSource?: string[]; |
||||
|
defaultOpen?: boolean; |
||||
|
open?: boolean; |
||||
|
onSearch?: (value: string) => void; |
||||
|
onChange?: (value: string) => void; |
||||
|
onVisibleChange?: (visible: boolean) => void; |
||||
|
onPressEnter?: (value: string) => void; |
||||
|
style?: React.CSSProperties; |
||||
|
className?: string; |
||||
|
} |
||||
|
|
||||
|
export default class HeaderSearch extends React.Component<HeaderSearchProps, any> {} |
||||
@ -0,0 +1,9 @@ |
|||||
|
import React from 'react'; |
||||
|
|
||||
|
export interface BlockChecboxProps { |
||||
|
value: string; |
||||
|
onChange: (key: string) => void; |
||||
|
list: any[]; |
||||
|
} |
||||
|
|
||||
|
export default class BlockChecbox extends React.Component<BlockChecboxProps, any> {} |
||||
@ -0,0 +1,24 @@ |
|||||
|
import React from 'react'; |
||||
|
import { SiderTheme } from 'antd/es/Layout/Sider'; |
||||
|
|
||||
|
export interface SettingModelState { |
||||
|
navTheme: string | SiderTheme; |
||||
|
primaryColor: string; |
||||
|
layout: string; |
||||
|
contentWidth: string; |
||||
|
fixedHeader: boolean; |
||||
|
autoHideHeader: boolean; |
||||
|
fixSiderbar: boolean; |
||||
|
menu: { disableLocal: boolean }; |
||||
|
title: string; |
||||
|
pwa: boolean; |
||||
|
iconfontUrl: string; |
||||
|
colorWeak: boolean; |
||||
|
} |
||||
|
|
||||
|
export interface SettingDrawerProps { |
||||
|
setting?: SettingModelState; |
||||
|
dispatch?: (args: any) => void; |
||||
|
} |
||||
|
|
||||
|
export default class SettingDrawer extends React.Component<SettingDrawerProps, any> {} |
||||
@ -0,0 +1,126 @@ |
|||||
|
import { stringify } from 'qs'; |
||||
|
import request from '@/utils/request'; |
||||
|
|
||||
|
export async function queryProjectNotice() { |
||||
|
return request('/api/project/notice'); |
||||
|
} |
||||
|
|
||||
|
export async function queryActivities() { |
||||
|
return request('/api/activities'); |
||||
|
} |
||||
|
|
||||
|
export async function queryRule(params) { |
||||
|
return request(`/api/rule?${stringify(params)}`); |
||||
|
} |
||||
|
|
||||
|
export async function removeRule(params) { |
||||
|
return request('/api/rule', { |
||||
|
method: 'POST', |
||||
|
data: { |
||||
|
...params, |
||||
|
method: 'delete', |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function addRule(params) { |
||||
|
return request('/api/rule', { |
||||
|
method: 'POST', |
||||
|
data: { |
||||
|
...params, |
||||
|
method: 'post', |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function updateRule(params = {}) { |
||||
|
return request(`/api/rule?${stringify(params.query)}`, { |
||||
|
method: 'POST', |
||||
|
data: { |
||||
|
...params.body, |
||||
|
method: 'update', |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function fakeSubmitForm(params) { |
||||
|
return request('/api/forms', { |
||||
|
method: 'POST', |
||||
|
data: params, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function fakeChartData() { |
||||
|
return request('/api/fake_chart_data'); |
||||
|
} |
||||
|
|
||||
|
export async function queryTags() { |
||||
|
return request('/api/tags'); |
||||
|
} |
||||
|
|
||||
|
export async function queryBasicProfile(id) { |
||||
|
return request(`/api/profile/basic?id=${id}`); |
||||
|
} |
||||
|
|
||||
|
export async function queryAdvancedProfile() { |
||||
|
return request('/api/profile/advanced'); |
||||
|
} |
||||
|
|
||||
|
export async function queryFakeList(params) { |
||||
|
return request(`/api/fake_list?${stringify(params)}`); |
||||
|
} |
||||
|
|
||||
|
export async function removeFakeList(params) { |
||||
|
const { count = 5, ...restParams } = params; |
||||
|
return request(`/api/fake_list?count=${count}`, { |
||||
|
method: 'POST', |
||||
|
data: { |
||||
|
...restParams, |
||||
|
method: 'delete', |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function addFakeList(params) { |
||||
|
const { count = 5, ...restParams } = params; |
||||
|
return request(`/api/fake_list?count=${count}`, { |
||||
|
method: 'POST', |
||||
|
data: { |
||||
|
...restParams, |
||||
|
method: 'post', |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function updateFakeList(params) { |
||||
|
const { count = 5, ...restParams } = params; |
||||
|
return request(`/api/fake_list?count=${count}`, { |
||||
|
method: 'POST', |
||||
|
data: { |
||||
|
...restParams, |
||||
|
method: 'update', |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function fakeAccountLogin(params) { |
||||
|
return request('/api/login/account', { |
||||
|
method: 'POST', |
||||
|
data: params, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function fakeRegister(params) { |
||||
|
return request('/api/register', { |
||||
|
method: 'POST', |
||||
|
data: params, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
export async function queryNotices(params = {}) { |
||||
|
return request(`/api/notices?${stringify(params)}`); |
||||
|
} |
||||
|
|
||||
|
export async function getFakeCaptcha(mobile) { |
||||
|
return request(`/api/captcha?mobile=${mobile}`); |
||||
|
} |
||||
Loading…
Reference in new issue